權(quán)限就是對文件或目錄“加鎖”腺律,有不同權(quán)限的人才能進去不同的入口……
一止吁、正常權(quán)限
1.1權(quán)限的查看
其中rw-r--r--.就是這個文件的權(quán)限了把篓,而后邊的root root代表文件的屬主和數(shù)組单旁。
我們先來看一下權(quán)限用什么代表:
- r:讀權(quán)限(read)
- w:寫權(quán)限(write)
- x執(zhí)行(execute)
所屬:
- u:屬主
- g:屬組
- o:其他人
rw-r--r--9個位拦赠,分為三段巍沙,每段三個位,依次為r,w,x權(quán)限荷鼠,三段分別為屬主句携,屬組,其他人三種類別的權(quán)限允乐。
屬主具有讀寫權(quán)限矮嫉,屬組有讀權(quán)限削咆,其他人有讀權(quán)限,如果顯示為-蠢笋,則代表該類人沒有此權(quán)限拨齐。那么root用戶對此文件有讀和寫的權(quán)限,但是沒有執(zhí)行權(quán)限昨寞,什么是執(zhí)行權(quán)限呢瞻惋,比如說我們的Windows中的exe文件,能雙擊執(zhí)行的就為可執(zhí)行的援岩,那么linux中歼狼,x則代表可執(zhí)行,一般為腳本文件享怀,或者是二進制文件(比如說ls命令)羽峰。
root組的用戶對這個文件有只讀權(quán)限,也就是不能更改和執(zhí)行了添瓷,限寞。對于不是root用戶,和不屬于root組的用戶仰坦,則也是只有只讀權(quán)限履植。
那么如何才能有自己想有的權(quán)限呢,就要所屬用戶或者root用戶來設(shè)置了悄晃。
1.2權(quán)限設(shè)置相關(guān)命令
權(quán)限設(shè)置有兩種方法:
1.2.1模式法
對象+-=權(quán)限
對象:ugoa——a相當于ugo三種類別的人
權(quán)限:rwx
[root@centos7.3 app]#chmod a-x dir/ #去掉dir所有對象的執(zhí)行權(quán)限
[root@centos7.3 app]#ll
drwxr-xr-x. 2 root root 6 May 29 19:48 di2
drw-r--r--. 2 root root 6 May 29 19:48 dir #dir的全部對象的執(zhí)行權(quán)限已經(jīng)去掉
[root@centos7.3 app]#chmod u+x dir/ #給屬主添加執(zhí)行權(quán)限
drwxr-xr-x. 2 root root 6 May 29 19:48 di2
drwxr--r--. 2 root root 6 May 29 19:48 dir #已經(jīng)有屬主執(zhí)行權(quán)限了
還可以復(fù)制其他文件的權(quán)限
[root@centos7 ~]#chmod --reference=dir dir2 #參考dir的權(quán)限玫霎,為dir2設(shè)置權(quán)限
1.2.2數(shù)字法
數(shù)字也可以代表權(quán)限,r使用4表示妈橄,w使用2表示庶近,x使用1表示,1眷蚓、2鼻种、4看著有規(guī)律啊,不錯沙热,的確rwx使用二進制表示的話叉钥,有權(quán)限使用1表示,沒有使用0篙贸,那么如下圖:
具體只要在相應(yīng)位上有權(quán)限投队,則二進制為1,則三個位組合起來爵川,再從二進制轉(zhuǎn)化為十進制則數(shù)字可計算出來權(quán)限敷鸦。
[root@centos7.3 app]#chmod 754 dir/
#用數(shù)字法給dir的屬主賦予rwx權(quán)限,屬組為rx權(quán)限,其他人為只讀r權(quán)限
[root@centos7.3 app]#ll
drwxr-xr-x. 2 root root 6 May 29 19:48 di2
drwxr-xr-. 2 root root 6 May 29 19:48 dir
1.3umask
umask值用來消除創(chuàng)建文件時的相應(yīng)位上的權(quán)限(從二進制方面理解)扒披;
新建文件: 666 - umask值就是新建文件的默認權(quán)限值依,因為新建文件默認沒有執(zhí)行權(quán)限的(沒有1權(quán)限,所以只要有奇數(shù)權(quán)限則代表有執(zhí)行權(quán)限)碟案,所以得到的權(quán)限必定是偶數(shù)鳞滨,如果umask為奇數(shù),則用666減去將得到奇數(shù)權(quán)限蟆淀,如果所得結(jié)果某位存在奇數(shù)權(quán)限拯啦,則將其權(quán)限+1(因為從二進制方面理解,如果相應(yīng)位沒有權(quán)限熔任,則多減了1褒链,故要加上1來彌補這個權(quán)限);
[root@CentOS7 ~]# umask
0022
[root@CentOS7 ~]# umask 135 #將當前umask設(shè)為135,
[root@CentOS7 ~]# umask
0135 #修改成功
[root@CentOS7 ~]# touch f2
[root@CentOS7 ~]# ls -l f2
-rw-r---w-. 1 root root 0 Jun 3 20:45 f2#按理說666-135=531疑苔,但是奇數(shù)權(quán)限加上1甫匹,則成為642
新建目錄: 777 - umask值就是新建目錄的默認權(quán)限;
管理員的umask 是 022
普通用戶的umask是 002
[root@centos7.3 app]#umask #查看當前用戶的umask值
0022 #root的umask值是002
[root@centos7.3 app]#umask 002 #把當前用戶的umask值改為002
[root@centos7.3 app]#umask
0002 #修改成功
[root@centos7.3 app]#umask -S #模式方式顯示
u=rwx,g=rwx,o=rx
[root@centos7.3 app]#umask -p #顯示全部惦费,輸出可被程序調(diào)用
umask 0002
1.4X權(quán)限的理解
X的作用(x權(quán)限特殊形式)
針對目錄增加x權(quán)限
對文件
1 無執(zhí)行的文件兵迅,不會增加x權(quán)限
2 任意三種人有執(zhí)行權(quán)限,也會增加x權(quán)限
目錄
[root@CentOS7 ~]# chmod 600 tmp/
[root@CentOS7 ~]# ls -ld /root/tmp/
drw-------. 2 root root 38 Jun 3 16:02 /root/tmp/
[root@CentOS7 ~]# chmod u+X tmp/
[root@CentOS7 ~]# ls -ld tmp/
drwx------. 2 root root 38 Jun 3 16:02 tmp/
文件:
[root@CentOS7 ~]# chmod 000 f1 #去掉文件的所以權(quán)限薪贫,以便看的更清楚
[root@CentOS7 ~]# ls -l f1
----------. 1 root root 1098 Jun 3 19:34 f1
[root@CentOS7 ~]# chmod u+X f1 #賦予X權(quán)限
[root@CentOS7 ~]# ls -l f1 #并沒有權(quán)限x被賦予
----------. 1 root root 1098 Jun 3 19:34 f1
[root@CentOS7 ~]# chmod 100 f1#一旦賦予任何一類人x權(quán)限
[root@CentOS7 ~]# chmod a+X f1
[root@CentOS7 ~]# ls -l f1
---x--x--x. 1 root root 1098 Jun 3 19:34 f1#則所以位都被賦予x權(quán)限
1.5文件與目錄的權(quán)限與注意
對目錄的權(quán)限意義:
只有讀:只能查看目錄文件列表恍箭,不能訪問文件,也不能cd目錄(查看瞧省,刪除)
只有執(zhí)行:可以cd進去,不能ls,可以訪問目錄中的文件扯夭。執(zhí)行是基礎(chǔ)權(quán)限
寫權(quán)取:配合x權(quán)限才生效
二鞍匾、特殊權(quán)限
2.1SUID
SUID權(quán)限代表不管是誰執(zhí)行此程序交洗,將繼承此程序所有者的權(quán)限
比如修改密碼命令passwd,因此每個用戶都可以用此命令修改自己的密碼橡淑,由于其繼承的是屬主root用戶的權(quán)限构拳。
[root@CentOS7 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
創(chuàng)建一個文件,賦予s權(quán)限
[root@CentOS7 ~]# touch f3
[root@CentOS7 ~]# ll f3
-rw-r---w-. 1 root root 0 Jun 3 21:17 f3
[root@CentOS7 ~]# chmod u+s f3
[root@CentOS7 ~]# ll f3
-rwSr---w-. 1 root root 0 Jun 3 21:17 f3 #此處為S權(quán)限
#由于其沒有x權(quán)限梁棠,S并不能代表SUID權(quán)限置森,必須賦予x權(quán)限使其成為可執(zhí)行程序,此時將自動變?yōu)閟
[root@CentOS7 ~]# chmod u+x f3
[root@CentOS7 ~]# ll f3
-rwsr---w-. 1 root root 0 Jun 3 21:17 f3
2.2SGID
SGID作用于目錄或可執(zhí)行程序掰茶,作用于目錄代表在此目錄創(chuàng)建的文件或目錄暇藏,默認的屬組繼承此目錄的屬組
[root@CentOS7 ~]# ls -ld tmp/ 查看權(quán)限
drwx------. 2 root bin 58 Jun 3 21:32 tmp/
[root@CentOS7 ~]# chmod g+s tmp #賦予此目錄的g有s權(quán)限
[root@CentOS7 ~]# ll -d tmp
drwx--S---. 2 root bin 58 Jun 3 21:32 tmp
[root@CentOS7 ~]# chmod g+wx tmp
[root@CentOS7 ~]# ll -d tmp
drwx-ws---. 2 root bin 58 Jun 3 21:32 tmp
[root@CentOS7 ~]# touch tmp/ #驗證權(quán)限
f1 f2 functions profile
[root@CentOS7 ~]# touch tmp/f3
[root@CentOS7 ~]# ll tmp/f3
-rw-r--r--. 1 root bin 0 Jun 3 21:40 tmp/f3 #發(fā)現(xiàn)屬組為bin,成功
2.3Sticky
粘貼位權(quán)限濒蒋,只能作用于目錄上,只有自己才能刪除自己創(chuàng)建的文件.使用t來表示,同樣需要執(zhí)行權(quán)限x沪伙,否則表現(xiàn)為T
有這樣的需求瓮顽,如果多人合作,希望整個團隊的人都能更改這個目錄的文件围橡,但是這個目錄的文件 不能被其他人刪除暖混,比如說系統(tǒng)的/tmp目錄,這個目錄每個用戶都可以在里面創(chuàng)建文件翁授,但是不能刪除其他用戶創(chuàng)建的文件拣播,除了root
ll /tmp -d
drwxrwxrwt. 27 root root 4096 Jun 3 21:40 /tmp
[root@CentOS7 ~]# touch /tmp/f1
[root@CentOS7 ~]# ls /tmp/f1
/tmp/f1
[root@CentOS7 ~]# ls /tmp/f1 -l
-rw-r--r--. 1 root root 0 Jun 3 21:48 /tmp/f1
[root@CentOS7 ~]# chown xiaoming:xiaoming /tmp/f1
[root@CentOS7 ~]# su - chenxuliang
Last login: Sat Jun 3 21:35:11 CST 2017 on pts/0
[chenxuliang@CentOS7 ~]$ echo "aaa" > /tmp/f1
-bash: /tmp/f1: Permission denied #當然此處需要賦予其他用戶可w權(quán)限。
[chenxuliang@CentOS7 ~]$ rm -f /tmp/f1
rm: cannot remove ‘/tmp/f1’: Operation not permitted
#此處tmp其他用戶擁有rwx權(quán)限收擦,卻不能刪除其中的文件贮配,則就是因為加了粘貼位sticky權(quán)限的原因。(刪除文件與文件本身的權(quán)限無關(guān))
2.4特殊權(quán)限除了可以用模式方法設(shè)置塞赂,還可以使用數(shù)字法
特殊權(quán)限:
SUID:4
SGID:2
Sticky:1
[root@centos7.3 app]#ll #查看當前目錄文件列表和文件屬性
drwxr-xr-x. 2 root root 24 May 30 19:46 dir
[root@centos7.3 app]#chmod 1755 dir/ # 為dir目錄設(shè)置權(quán)限泪勒,1表示Sticky權(quán)限,755表示普通權(quán)限
[root@centos7.3 app]#ll #查看當前目錄文件列表和文件屬性
drwxr-xr-t. 2 root root 24 May 30 19:46 dir #在其他用戶權(quán)限的x位上出現(xiàn)了t宴猾,表示Sticky權(quán)限添加成功
2.5特殊權(quán)限總結(jié)與注意
SUID只能作用于二進制可執(zhí)行程序圆存,不能作用于目錄,因為其對應(yīng)的是程序仇哆,程序需要能執(zhí)行
為什么對于一個文件有讀寫執(zhí)行權(quán)限沦辙,依然不能刪除呢,因為刪除文件要看其父目錄是否有權(quán)限讹剔。刪除的是目錄項中的文件名(詳細請看我的inode博客)
三怕轿、ACL權(quán)限
3.1為什么要有ACL權(quán)限
因為文件權(quán)限管理職能對三類人有效,在生產(chǎn)中遠遠不能滿足要求辟拷,ACL則應(yīng)運而生
3.2ACL權(quán)限的查看
[root@CentOS7 ~]# getfacl f1
# file: f1
# owner: root
# group: root
user::--x
group::--x
other::--x
3.3ACL權(quán)限的設(shè)定
- setfacl的選項和常用參數(shù)
- getfacl 文件 或 目錄 #查看文件或目錄的acl權(quán)限
- setfacl - m u:用戶名:權(quán)限 文件或目錄 #可以使用模式方法也可以使用數(shù)字方法設(shè)置
- setfacl - R #R表示遞歸
- setfacl - M 配置文件 文件或目錄 #M表示把配置文件里權(quán)限設(shè)置給后面的文件或者目錄撞羽,你可以先寫好一個權(quán)限保存在文件中來批量設(shè)置
- setfacl - m g:組名:權(quán)限 #g表示組
- setfacl - m d:u:用戶:rx #d選項表示創(chuàng)建默認權(quán)限不影響其他acl權(quán)限,加了d之后在目錄下創(chuàng)建的文件都會獲得父目錄的設(shè)置默認acl權(quán)限
- setfacl - k #刪除默認權(quán)限
- setfacl - x u:用戶 #刪除單個權(quán)限
- setfacl - X #X和M選線功能相似只不過X是按照文件的內(nèi)容刪除acl權(quán)限
- setfacl -b #刪除所有acl權(quán)限
- setfacl -- set #set選項會把原來的acl設(shè)置用新的代替衫冻,相當于覆蓋
舉例:
[root@centos7.3 app]#setfacl -m u:admin:rw dir/ #為admin設(shè)置權(quán)限
[root@centos7.3 app]#getfacl dir/ #查看權(quán)限
# file: dir/
# owner: root
# group: root
user::rwx
user:admin:rw- #設(shè)置的admin的權(quán)限
group::r-x
mask::rwx #mask值是acl權(quán)限的上線诀紊,mask是除了所有者和其他的之外的人和組的最大權(quán)限
#在設(shè)置了acl權(quán)限之后文件的屬組權(quán)限和mask值是綁定的
other::r-x
3.4復(fù)制其他文件ACL權(quán)限
root@centos7.3 app]#getfacl dir |setfacl -set-file=- dir2
3.5ACL權(quán)限的備份與還原
[root@centos7.3 app]#getfacl -R dir > acl.txt #把dir目錄和子文件的acl權(quán)限備份至acl.txt文件
[root@centos7.3 app]#setfacl -R --set-file=acl.txt dir #恢復(fù)acl權(quán)限
[root@centos7.3 app]#setfacl --restore acl.txt #第二種方法