一 、文件屬性介紹
1、linux文件權限分為讀(read)、寫(write)、執行(excute)三種,主要針對三類用戶進行定義:ouwer:屬主(u) 、group(g):屬組、 other(o):其他人。文件的權限組合可以分為兩種,一種是由三個字母r 、w、 x組成,一種是由數字組成4、2、1,它們代表的意思是r = 4 表示讀權限、w = 2表示寫權限、 x = 1表示執行權限。在同一個命令中兩種組合不能混合使用,比如 設置test.txt文本權限chmod u=rwx,g=rw,o=test.txt ; chmod 760 test.txt ;即 rw-rw-x = 661 ;rwxrwxrwx=777 2、linux的讀寫執行權限對文件和目錄有不同的意思:
文件: r:可以使用文件查看類工具獲取其內容,比如ls 、cat。 w:可以修改文件的內容,但不能刪除。 x:可以將文件(binary)運行為進程。 目錄: r:可以使用ls查看此目錄中的文件列表。 w:可修改此目錄下的文件列表,即創建或刪除文件。 x:可cd到此目錄中,且可以使用ls -l 來獲取所有文件的詳細屬性信息。 注意:為了系統安全性,執行權限一般只給目錄而不給文件。
二、文件權限管理的相關命令
1、chown
功能:
修改文件的屬主(可以用UID代替)。
語法:
chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE...
選項:
-R:遞歸修改目錄及其下所有文件的屬主 -v:顯示詳細過程
補充:
其實此命令還可以修改用戶的屬組(可以用GID代替)。具體用法為: owner:group(指定屬主和屬組) 或者 owner:(右側空白,表示屬主和屬組都是同一個)又或者 :group (左側空白,表示只改屬組不該屬主)
示例:
(1)將文件/testdir/test.txt的屬主和屬組都修改為linuxpao [root@localhost ~]# touch test.txt -rw-r--r--. 1 root root 0 8月 3 21:48 test.txt [root@localhost ~]# chown linuxpao: test.txt [root@localhost ~]# ll test.txt -rw-r--r--. 1 linuxpao linuxpao 0 8月 3 21:48 test.txt (2)參考文件/etc/issue修改test.txt文件的權限 [root@localhost ~]# chown --reference=/etc/issue test.txt [root@localhost ~]# ll test.txt -rw-r--r--. 1 root root 0 8月 3 21:48 test.txt
2、chgrp
功能:
修改文件的屬組(只修改組)。
語法:
chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE...
選項:
-R:遞歸修改目錄及其下所有文件的屬組
示例:
遞歸修改/test目錄下所有文件的屬組為haha [root@localhost ~]# chgrp -R haha /test [root@localhost ~]# ll -d /test drwxr-xr-x. 2 root haha 15 8月 3 22:04 /test [root@localhost ~]# ll -d /test/* -rw-r--r--. 1 root haha 0 8月 3 22:04 /test/hi
3、chmod
功能:
修改文件的權限。
語法:
chmod [OPTION]... MODE[,MODE]... FILE...(以r w x 模式) chmod [OPTION]... OCTAL-MODE FILE...(以八進制4 2 1模式) chmod [OPTION]... --reference=RFILE FILE...(參考其他文件)
選項:
-R:遞歸修改權限
補充說明:
操作對像 u(user):文件屬主權限 g (group):同組用戶權限 o (other):其它用戶權限 a (all):所有用戶(包括以上三種) (u g o a 只適用于 r w x 模式) 權限表達方式 + 增加權限 - 取消權限 = 唯一設定權限 (+-=只適用于 r w x 模式) r 對應于 4 w 對應于 2 x 對應于 1 權限類別 r 讀權限 w 寫權限 x 執行權限 X 會對目錄添加執行權限,而文件如果文件本身有執行權限就保留,沒有就不添加
示例:
修改文件/test/hi的權限為750 [root@localhost ~]# chmod 750 /test/hi [root@localhost ~]# chmod u=rwx,g=rx,o= /test/hi [root@localhost ~]# ll /test/hi -rwxr-x---. 1 root haha 0 8月 3 22:04 /test/hi
4、umask
功能:
設置新建文件和目錄的默認權限 語法:
umask [選項] 權限掩碼
選項:
-p:輸出的權限掩碼可以直接作為指令來執行 -S:以符號類型的形式來顯示權限
補充說明:
(1)查看umask的值有兩種方法:一種直接使用umask,以數字的形式查看;一種是使用-S選項,以符號類型查看。 [root@localhost ~]# umask -S u=rwx,g=rx,o=rx [root@localhost ~]# umask 0022 (2)因為一般情況文件是不設置執行(x)權限的,只保留讀寫權限,所以創建文件是權限最大是666,即默認值是-rw-rw-rw-。如果目錄沒執行權限,用戶就禁止進入目錄,因此目錄的默認權限時777,即drwxrwxrwx。 (3)一般系統的默認umask值是022,用戶新創建的文件或目錄的權限是由默認最大的文件權限和目錄權限與umask值做減法得到。 文件:(-rw-rw-rw-)-(-----w--w-)= -rw-r--r-- 即 666-022=644 目錄:(drwxrwxrwx)-(-----w--w-)= drwxr-xr-x 即 777-022=755 (4)使用命令行模式修改的umask值是不能永久生效的,需要寫入到系統文件中,如果要對全部成員生效可以寫到/etc/bashrc或/etc/profile文件中,只對某個用戶生效可以寫到~/.bashrc或~/.bash_profile文件中。 注意:之所以文件用666去減,表示文件默認不具有執行權限,如果減得的結果中有執行權限(為奇數),則需要將其值加1。
示例:
設置umask值為044 [root@localhost ~]# umask 044 [root@localhost ~]# umask -S u=rwx,g=wx,o=wx
三、文件的特殊權限
1、SUID
(1)Linux用戶可以使用passwd命令修改自己的密碼,并記錄字/etc/shadow文件中,但是/etc/shadow文件權限是400,也就是說只有管理員才可以修改此文件的內容,為什么普通用戶也可以修改密碼呢?這就與Linux文件的一種特殊權限有關,即SUID權限,它可以使普用戶對設置了SUID的文件具有屬主的權限。用s字母表示,會覆蓋屬主原有的x(執行)權限位置,如果是大寫S表示屬主不具有x(執行)權限。
[root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd [root@localhost ~]# ls -l /etc/shadow ----------. 1 root root 1260 7月 12 17:38 /etc/shadow
(2)SUID的特性
SUID權限僅對二進制程序文件有效; 文件擁有s權限時,所有的文件執行者都會具有文件屬主的權限; SUID對目錄無效;
(3)示例:
以root身份在/test目錄(需要給目錄wx權限)下創建文件txt ,設置txt文件權限為700,嘗試用普通用戶Linuxpao能否刪除,再設置txt文件SUID,看看能否刪除。 [root@localhost ~]# chmod 777 /test/ [root@localhost ~]# touch /test/txt [root@localhost ~]# chmod 700 /test/txt [linuxpao@localhost tmp]$ id (Linuxpao不屬于root組) uid=1000(linuxpao) gid=1000(linuxpao) 組=1000(linuxpao) [linuxpao@localhost ~]$rm -rf /test/txt -bash: /test/txt: 權限不夠 (不能刪除) [root@localhost ~]# chmod u+s /test/txt(添加SUID權限) [root@localhost ~]# ll /test/txt -rws------. 1 root root 0 8月 4 12:47 /test/txt [linuxpao@localhost ~]$ rm /test/txt rm:是否刪除有寫保護的普通空文件 "/test/txt"?y [linuxpao@localhost ~]$ (已刪除)
2、SGID
(1)SGID也是文件的特殊權限,也是用s字母表示,會覆蓋屬組的x(執行)權限位置,大寫S表示屬組不具有執行權。SGID可以針對文件和目錄設置,文件或目錄設置了SGID表示其他用戶具有該文件或目錄的屬組權限。
[root@localhost bin]# ls -l /usr/bin/locate -rwx--s--x. 1 root slocate 40496 6月 10 2014 /usr/bin/locate
(2)SGID對文件的特性:
SGID對二進制程序有效; 程序執行者對于該程序需具有x的權限; 執行者在執行過程中將會獲得改程序用戶組權限的支持;
(3)SGID對目錄的特性:
用戶對此目錄具有r、x的權限時,該用戶能夠進入此目錄; 對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組;
3、Sticky Bit
(1)SBIT只針對目錄有效,用t字母表示,會覆蓋other的x(執行)權限位置,大寫T表示其他人不具有執行權。
(2)SBIT對目錄的特性:
當用戶對此目錄具有w,x權限時,用戶在該目錄下創建的文件或目錄,只有自己或管理員可以刪除,其他人只能修改、查看。
(3)示例
以root身份在/tmp目錄下創建test文件,設置權限為777,再用普通用戶Linuxpao登錄,嘗試修改和刪除test文件 [root@localhost bin]# ll -d /tmp (可以看到/tmp有SBIT權限) drwxrwxrwt. 15 root root 4096 8月 4 12:36 /tmp [root@localhost bin]# echo "this is test" > /tmp/test (創建test文件) [root@localhost bin]# chmod 777 /tmp/test [linuxpao@localhost tmp]$ echo "I am linuxpao" >> test [linuxpao@localhost tmp]$ cat test this is test I am linuxpao (可以看到可以修改文件) [linuxpao@localhost tmp]$ rm -rf test (無法刪除) rm: 無法刪除"test": 不允許的操作
4、補充
配置普通權限時可以使用字符或數字,SUID、SGID、Sticky也是一樣。使用字符時s表示SUID和SGID、t表示Sticky;4表示SUID、2表示SGID、1表示Sticky。在配置這些屬性時還是使用chmod命令。
四、文件的隱藏屬性
1、chattr
功能:
設置文件的隱藏屬性
語法:
chattr [ + - = ] [ ASacdistu ] files...
選項:
+:增加一個特殊參數 -:刪除一個特殊參數 =:僅有后面接的參數 A:不該變文件的訪問時間atime S:同步寫入磁盤 a:只能增加文件數據,不能刪除文件也不能修改原有數據,只有root可以設置 c:自動解、壓縮文件,存儲時先壓縮在存儲 d:當dump程序被執行時,設置d屬性將可以使文件(或目錄)不會被dump備份 i:不能修改數據、更改文件名、刪除文件,只有root可以設置 s:從磁盤中完全刪除此文件,不能找回 u:只是刪除文件名,其數據還保留在磁盤中,可以找回
示例:
創建文件/root/tesxt,添加i屬性,能否刪除? [root@localhost ~]# touch tesxt [root@localhost ~]# chattr +i tesxt [root@localhost ~]# rm -f tesxt (root用戶都不能刪除) rm: 無法刪除"tesxt": 不允許的操作
2、lsattr
功能:
顯示文件的隱藏屬性
語法:
lsattr [ -adR ] file...
選項:
-a:將隱藏文件的屬性顯示出來 -d: 如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名 -R: 連同子目錄的數據也一并列出來
示例:
顯示文件/root/tesxt文件的隱藏屬性 [root@localhost ~]# lsattr tesxt ----i----------- tesxt
五、訪問控制列表(ACL)
1、什么是ACL:ACL可以針對單一用戶、單一文件或目錄來進行r、w、x權限的設置,對于需要特殊權限的使用狀況非常有幫助。CentOS7.X 之前版本,默認手工創建的ext4 文件系統無ACL功能。需手動增加,命令為:mount –o remount,acl /
2、setfacl
功能:
設置文件的ACL規則,設置好之后用ls -l 查看 可以看權限位最后會有一個“+”。
語法:
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
選項:
-b:設置所有的ACL設置參數 -m:指定文件的ACL參數 -x:刪除后續的ACL -k:刪除默認的ACL -R:遞歸設置ACL -d:只對目錄有效,遞歸設置默認的ACL
3、getfacl
功能:
查看文件ACL規則
語法:
getfacl [-aceEsRLPtpndvh] file ...
選項:
-a:僅顯示文件訪問控制列表 -d:僅顯示默認的訪問控制列表 -c:不顯示注釋表頭 -e;顯示所有的有效權限 -E:顯示無效權限 -s:跳過只有基條目(base entries)的文件 -R:遞歸顯示子目錄
4、示例:
(1)創建文件test.txt,針對linuxpao設置ACL權限為rw [root@localhost test]# touch test.txt [root@localhost test]# ll test.txt -rw-r--r--. 1 root root 0 8月 4 18:11 test.txt [root@localhost test]# setfacl -m u:linuxpao:rw test.txt [root@localhost test]# ll test.txt -rw-rw-r--+ 1 root root 0 8月 4 18:11 test.txt [root@localhost test]# getfacl test.txt (查看test.txt的ACL) # file: test.txt # owner: root # group: root user::rw- user:linuxpao:rw- group::r-- mask::rw- other::r-- (2)清空文件/test.txt的ACL規則 [root@localhost test]# setfacl -b test.txt [root@localhost test]# getfacl test.txt # file: test.txt # owner: root # group: root user::rw- group::r-- other::r--
原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/29740