Linux系統上的特殊權限linux
特殊權限:SUID, SGID, STICKYcentos
▇SUID:ide
默認狀況下:用戶發起的進程,進程的屬主是其發起者;所以,其以發起者的身份在運行; oop
例如:以hadoop的身份登錄linux操做系統。運行ls命令。那麼ls的進程的屬主是hadoop。可是ls的程序文件的屬主和屬組依然是root。hadoop能夠執行是由於程序文件 /bin/ls 的其餘用戶具備執行權限。hadoop應用的是other的權限。因此文件的屬主屬組和進程的屬主不是一會事。一旦程序文件被某個用戶執行後。運行爲進程後,進程的屬主是發起該進程的用戶。可是SUID不一樣。ui
SUID的功用:用戶運行某程序時,若是此程序擁有SUID權限,那麼程序運行爲進程時,進程的屬主不是發起者,而是程序文件本身的屬主;url
示例:spa
默認狀況:操作系統
添加SUID後:設計
管理文件的SUID權限:
3d
chmod u+|-s FILE...
典型的SUID 用處:passwd 爲了能讓root意外的用戶能夠修改密碼,並把密碼保到/etc/shadow當中。passwd這個程序是通過精心設計的,普通用戶使用時不能添加參數,只有root用戶才能夠。
展現位置:屬主的執行權限位
若是屬主本來有執行權限,顯示爲小寫s;
不然,顯示爲大寫S;
注意:給文件賦予SUID權限是很是危險的操做,好比:若是給/bin/cat賦予SUID權限,那麼普通用戶發起cat命令時,cat進程的屬主爲root。那麼你懂的。cat "危險代碼" > "某關鍵文件" 。因此passwd後不能帶參數。有不少***會利用passwd的SUID權限來搞破壞。
■SGID:
功用:當目錄屬組有寫權限,且有SGID權限時,那麼全部屬於此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組;
管理文件的SGID權限:
chmod g+|-s FILE...
示例:
添加兩個用戶
~]#useradd fedora
~]#useradd centos
添加組:
~]#groupadd mygrp
爲這兩個用戶添加附加組mygrp
~]#usermod -a -G mygrp fedora
~]#usermod -a -G mygrp centos
若是/var/tmp/test 沒有SGID的權限那麼fedora在/var/tmp/test下建立的文件只能fedora本身能夠修改,其餘用戶可讀。
若是/var/tmp/test 有SGID的權限那麼fedora在/var/tmp/test下建立的文件同屬於mygrp組的cengtos也能夠修改,其餘用戶可讀。
SGID功用:當目錄屬組有寫權限,且有SGID權限時,那麼全部屬於此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組;
展現位置:屬組的執行權限位
若是屬組本來有執行權限,顯示爲小寫s;
不然,顯示爲大寫S;
■Sticky:
Sticky功用:對於屬組或全局可寫的目錄,組內的全部用戶或系統上的全部用戶在此目錄中都能建立新文件或刪除全部的已有文件; 若是爲此類目錄設置Sticky權限,則每一個用戶能建立新文件,且只能刪除本身的文件;
管理文件的Sticky權限:
chmod o+|-t FILE...
展現位置:其它用戶的執行權限位
若是其它用戶本來有執行權限,顯示爲小寫t;
不然,顯示爲大寫T;
系統上的/tmp和/var/tmp目錄默認均有sticky權限;
小話題:
管理特殊權限的另外一方式:
suid sgid sticy 八進制權限
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
基於八進制方式賦權時,可於默認的三位八進制數字左側再加一位八進制數字;
例如:chmod 1777
■facl:file access control lists 文件訪問控制列表。
facl是文件的額外賦權機制:在原來的u,g,o以外,另外一層讓普通用戶能控制賦權給另外(不是other用戶)的用戶或組的賦權機制;
getfacl命令:
getfacl FILE...
user:USERNAME:MODE
group:GROUPNAME:MODE
setfacl命令:
賦權給用戶:
setfacl -m u:USERNAME:MODE FILE...
賦權級組:
setfacl -m g:GROUPNAME:MODE FILE...
撤銷賦權:
setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...
示例:
默認狀況:
附加權限後: