linux 文件權限以及用戶策略 講解
由于linux系統是一個多用戶使用的系統,對于各個用戶指定的文件或目錄必須存在一套管理系統,以防止多用戶對相同文件的混淆使用。于是催生出了linux系統文件的用戶權限設置。其存在的意義就是每一個文件或目錄對于不同的用戶區分讀取,寫入,執行三種權限,即:r,w,x。下面將詳細介紹如何定義文件或目錄的權限以及相關命令
文件的權限主要針對三類對象進行定義:
owner: 屬主, u group: 屬組, g other: 其他, o
每個文件針對每類訪問者都定義了三種權限: r: Readable w: Writable x: eXcutable
下面列出了,rwx對應的數字關系
r=4 w=2 x=1
文件權限
文件:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啟動為一個進程
目錄:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此 目錄
X:只給目錄x權限,不給文件x權限
umask值得表示含義
umask表示文件權限的反向編碼。新文件的創建默認權限是指定的,其指定權限與umask值相關。其權限八進制的計算方式為:
對于目錄:777-umask值=默認權限八進制
對于文件:666-umask值=默認權限八進制(注意:為了安全,文件創建默認不應該擁有x權限,所以得出值如果為奇數,需要每個奇數+1)列;
umask 043
創建文件之后的權限是 666-043=624(623+1)
[root@centous1 ~]# umask 0043 [root@centous1 ~]# touch dir1 [root@centous1 ~]# ll 總用量 15096 -rw-------. 1 root root 1288 5月 3 03:16 anaconda-ks.cfg -rw--w-r-- 1 root root 0 8月 4 07:41 dir1 -rw-r--r--. 1 root root 33079 5月 3 03:16 install.log -rw-r--r--. 1 root root 6996 5月 3 03:13 install.log.syslog -rw-r--r-- 1 root root 191 8月 2 12:12 pass.txt -rw-r--r-- 1 root root 432 8月 2 12:07 users.txt
chmod更改文件或者文件夾權限
對于文件來說有三種登錄用戶:文件所有者,使用u表示,文件所屬組,用g表示,還有其他用戶與這個文件無關,用o表示。
用法一 chmod u=rw,g=r,o= /testdir 意思是更改/testdir是屬主權限是rw,屬組權限是r,其他人的權限無。這種用法直接指定,原有的權限不會有影響。
用法二 chmod u+rw,g+r /testdir 意思是在原有的權限基礎上,屬組的權限增加rw,屬組的權限增加r。
用法三 chmod 755 /testdir 意思是給/testdir 賦值為 drwxr-xr-x 也叫數字賦值法。
改變所有者(chown)和用戶組(chgrp)命令
修改文件的屬主:chown
chown [OPTION]… [OWNER][:[GROUP]] FILE… -R遞歸
[root@centous1 ~]# touch dir1 [root@centous1 ~]# ll dir1 -rw-r--r-- 1 root root 0 8月 4 08:39 dir1 [root@centous1 ~]# chown text dir1 [root@centous1 ~]# ll dir1 -rw-r--r-- 1 text root 0 8月 4 08:39 dir1
修改文件的屬組:chgrp
chgrp [OPTION]… GROUP FILE… chgrp [OPTION]… –reference=RFILE FILE…
-R 遞歸
[root@centous1 ~]# groups text text : text [root@centous1 ~]# chgrp text dir1 [root@centous1 ~]# ll dir1 -rw-r--r-- 1 text text 0 8月 4 08:39 dir1
SUID,SGID,sticky的意義為分別對文件屬主,屬組,其他用戶所設置的特殊權限。
SUID只對二進制可執行程序有效,設定命令為:
chmod u+s file
其中file文件的執行權限為-rwxr-x—-. 屬主為root,命令執行后會變為-rwsr-x—.這時候非常的微信,任何非主用戶都可以對這個文件有執行的權限,取消這個權限的命令為
chmod u-s file
列如;我們通常切換到普通用戶之后也可以改密碼,是因為我們可以根據/user/bin/passwd 的權限,來調用/etc/shadow.那么/user/bin/passwd 是什么權限呢
那么為什么要根據passwd文件來調用呢,因為/etc/shadow的權限太嚴格了
只用suid來賦權限,使執行者可以暫時繼承root的身份,來執行passwd文件。
注意,即使是說繼承root的身份,但是執行文件的權限other也要有執行的權限,否則也是執行不了的
執行程序的規則;
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者 對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為 發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者 (a) 進程的發起者,同文件的屬主:則應用文件屬主權限 (b) 進程的發起者,屬于文件屬組;則應用文件屬組權限 (c) 應用文件“其它”權限
SGID常常作用于目錄上,設定命令為如下:
chmod g+s dir
如果dir目錄原權限為:drwxr-xrw-,屬主為root,屬組為root。執行命令后權限變為:drwxr-srw-
如果切換其他用戶mcgee(擁有w權限)在dir內創建文件,如果dir沒加SGID,默認新建文件屬主,屬組為用戶mcgee的屬主和屬組。但是在加SUID的dir目錄內,創建的新文件屬主為mcgee,但是屬組一定是dir目錄的屬組root。
取消dir的SGID權限命令為:
chmod g-s dir
注意:dir的原有權限other是有w權限的
sticky
sticky權限的作用是保護文件被非屬主的其他用戶刪除,設定命令為:
chmod 0+t file2
如果file2權限為-rwxr-xrwx,執行后會變為-rwxr-xrwt。此時對于文件file2,只有file2屬主與root可以對file2目錄有執行權限。
取消file2的sticky權限
chmod -o-t file2
一個容易出錯的列子,,
系統創建兩個用戶user1 user2
我們登錄user2,然后在其家目錄下創建個123文件。此時的123文件屬組屬主都是user2
然后我們給user2的家目錄權限為777,登錄user1,進入到user2的家目錄并且vim打開123,寫入點東西強行保存,此時再看123文件的屬主屬組。
在這里為什么能夠把文件123的屬主和屬組改變呢,雖然123文件的權限是其他用戶只讀,不能修改。但是,因為目錄的關系權限是777,可以刪除123這個文件,vim把他強制保存,其實就是把他刪除了重建了的,所以,123文件的屬主屬組改變了,
注意,一定要記住,目錄中other不要給w權限,因為他可以讓其他用戶刪除,那樣的話,權限就沒意義了。
ACL的意義與使用命令
ACL:access control list.訪問控制列表。存在的意義為對特定的其他用戶設置權限。其相關命令有setfacl,getfacl兩種。
setfacl:對特定文件或目錄設置acl,用法如下:
~]# setfacl -m u:wang:rwx file3
表示文件file3對用戶wang設置了rwx的權限
~]# setfacl -Rm g:sales:rwx dir2
表示dir2目錄以及其遞歸文件對組sales內的用戶設置rwx的權限
其中option可以查詢幫助文件
getfacl:顯示file/directory的acl設置,如下:
~]# getfacl file3
其中會多出顯示file3對wang的權限。
原創文章,作者:forest,如若轉載,請注明出處:http://www.www58058.com/28708
文章整體架構清晰,從權限模型到權限管理都通過實際操作有了自己的認識和理解。