特殊權限和acl
特殊權限
SUID:
運行某程序時,相應進程的屬主是程序文件自身的屬主,而不是
用戶本身了,只對二進制程序有效,執(zhí)行者對于程序需要有x權限
例子:passwd命令? 需要在/etc/shadow中寫入密碼
? ? ? ls -l /bin/cat
? ls -l /etc/shadow
? chmod u+s file (如果本身具有x疾瓮,為s,否則為S)
SGID:
? 對于文件:運行某程序時飒箭,相應進程的屬組是程序文件自身的屬組狼电,而不是用戶本身的基本組
chmod g+s file
例子:locate命令? 需要訪問/var/lib/mlocate/mlocate.db文件
? 對于目錄:
? ? ? ? ? 用戶對此目錄有rx權限可以進入目錄
? ? ? ? ? 用戶進入此目錄后,有效用戶組會變成該目錄的用戶組
? ? ? ? ? 若用戶在此目錄有w權限弦蹂,則用戶創(chuàng)建的文件用戶組與該目錄用戶組相同
例如:
? ? ? ? ? 一個團隊想在linux某個目錄下協(xié)同工作來做一個項目肩碟,那么每個團隊成員都得對這個目錄下的所有文件具有rwx權限。
? ? ? ? ? 于是我們首先新建一個用戶組凸椿,再新建幾個賬號削祈,每個賬號的用戶組都加入剛才新建的那個用戶組。
? ? ? ? ? 再新建工作目錄脑漫,權限設為770髓抑,把目錄的用戶組加上上一步新建的用戶組。
? ? ? ? ? 到這里為止窿撬,我們思考下會有什么問題启昧?
? ? ? ? ? 現(xiàn)在賬號A新建一個文件,新建文件的擁有者和用戶組都會是A劈伴!重要的是其他用戶都無法訪問這個文件!
? ? ? ? ? 所以我們需要給這個目錄加入SGID權限,之后任意一個用戶創(chuàng)建的文件跛璧,文件用戶組都會是這個目錄的用戶組严里。萬事OK!
develop team , hadoop hbase hive
/tmp/project? 三個用戶可以編輯彼此之間創(chuàng)建的文件
#useradd hadoop hbase hive
#mkdir /tmp/project
#groupadd developteam
#chown -R :developteam /tmp/project
#chmod -R 770 /tmp/project
#usermod -a -G developteam hadoop
#chmod g+s /tmp/project
Sticky (BIT):
? ? ? ? 只針對目錄有效,當用戶對目錄擁有wx權限時追城,用戶在該目錄創(chuàng)建的文件或目錄刹碾,只有自己與root才可以刪除。
在一個公共目錄座柱,每個人都可以創(chuàng)建文件迷帜,刪除自己的文件,
但是不能刪除別人的文件(冒險位色洞,粘貼位)
例子:chmod o+t dir
SUID是4? SGID是2? ? SBIT是1
? ? chmod 4755 filename
? ? 第一個7代表的就是這三個特殊命令戏锹,后面的755是普通權限。上面的命令把filename這個文件加入了SUID權限
文件系統(tǒng)訪問控制列表
FACL:filesystem access control list
利用文件的擴展屬性火诸,保存了額外的訪問控制權限
getfacl? 查看
setfacl? 設置
語法:setfacl [-bkRd]? [-m|-x acl 參數(shù)]? 目標文件名
選項與參數(shù):
-m:設置后續(xù)的acl參數(shù)锦针,不可與-x一起使用
-x: 刪除后續(xù)的acl參數(shù),不可與-m一起使用
-b:刪除所有的acl參數(shù)
-k:刪除默認的acl參數(shù)
-R:遞歸設置acl參數(shù)
-d:設置默認acl參數(shù)置蜀,只對目錄有效
setfacl -m m:rw inittab
-m設定奈搜,可以設定到用戶或者是組上
u:uid:perm
g:gid:perm
例子:
#mkdir /backup
#cd /backup
#cp /etc/inittab ./
#getfacl inittab
#setfacl -m u:redhat:rw inittab
owner>facl,user> group > facl group>
所有權限都不能超過mask的權限
setfacl -m m:rwx [filename or directory_name]
-x取消
setfacl -x u:uid file_name
為目錄設定默認訪問控制列表:
d:u:uid:perm file_name
mount -o acl /dev/myvg1/mylv1 /mnt
dumpe2fs -h /dev/myvg1/mylv1(查看是否支持ACL)
tune2fs -o
例子: ? 授權一個用戶讀權限
? ? ? ? ? ? ? setfacl -m u:lisa:r file
? ? ? Revoking? write? access? from? all? groups and all named users (using the
? ? ? effective rights mask)
? 撤銷所有的組和用戶的寫權限(使用有效的正確mask)
? ? ? ? ? ? ? setfacl -m m::rx file
? ? ? Removing a named group entry from a file’s ACL
? 移除一個組的ACL權限
? ? ? ? ? ? ? setfacl -x g:staff file
? ? ? Copying the ACL of one file to another
? 復制一個文件的ACL到另一個文件
? ? ? ? ? ? ? getfacl file1 | setfacl --set-file=- file2
? ? ? Copying the access ACL into the Default ACL
? 復制訪問的目錄的ACL作為目錄的默認ACL
? ? ? ? ? ? ? getfacl --access dir | setfacl -d -M- dir