Linux許可權管理
1、ACL許可權的簡介與開啟
Linux許可權只有所屬者,所屬組和其他人,身份許可權不夠用,但是ACL許可權可以解決這個問題,具體做法是找到這個人的id,賦予其許可權即可。
檢視分割槽的ACL許可權是否開啟:
dumpe2fs -h /dev/sda3
#dumpe2fs命令是查詢指定分割槽詳細檔案系統資訊的命令
#-h選項:僅僅顯示超級塊中資訊,而不顯示磁碟塊組的詳細資訊。
預設掛載選項:
臨時分割槽開啟ACL許可權:
mount -o remount,acl /
#重新掛載根分割槽,並掛載加入acl許可權
永久開啟分割槽ACL許可權:
vi /etc/fstab
#加入ACL許可權
mount -o remount /
#重新掛載檔案系統或者重啟系統,使得修改生效
檢視ACL命令:
getfacle 檔名
#檢視ACL許可權
設定ACL許可權的命令:
setafacl 【選項】 檔名
-m 設定ACL許可權
-x 刪除指定的ACL許可權
-b 刪除所有的ACL許可權
-d 設定預設的ACL許可權
-k 刪除預設的ACL許可權
-R 遞迴設定ACL許可權
在根下建立工程目錄,建立使用者和組,新增使用者到組
setfacl -m u st:rx /project/
#給使用者st賦予r-x許可權,使用“u:使用者名稱:許可權”格式
最大有效許可權mask
mask是用來指定最大有效許可權的。如果我給使用者賦予了ACL許可權,是需要和mask許可權“相與”才能得到使用者的真正許可權
修改最大有效許可權
setfacl -m m:rx 檔名
#設定mask許可權為r-x。使用“m:許可權”格式
刪除ACL許可權:
setfacl -x u 使用者名稱 檔名
#刪除指定使用者的ACL許可權
setfacl -x g:組名 檔名
#刪除指定使用者組的ACL許可權
setfacl -b 檔名
#會刪除檔案的所有acl許可權
遞迴ACL許可權:
遞迴是父目錄在設定ACL許可權時,所有的子檔案和子目錄也會擁有相同的ACL許可權
setfacl -m u:使用者名稱:許可權-R 檔名
+ 是賦予了其他許可權
預設的ACL許可權
預設的ACL許可權的作用是如果給父目錄設定了預設的ACL許可權,那麼父目錄中所有新建的子檔案都會繼承父目錄的ACL許可權。
setfacl -m d:u使用者名稱:許可權 檔名
#只是針對於新的使用者才確定的,已經確定的檔案不能賦予其許可權
2、檔案特殊許可權
1、SetUID
功能:
1、只有可執行的二進位制程式才能設定SUID許可權
2、命令執行者要對該程式擁有x(執行)許可權
3、命令執行者在執行該程式時獲得該程式檔案屬主的身份(在執行程式的過程中靈魂附體為檔案的屬主)
4、SetUID許可權只在該程式執行過程中有效,也就是說身份改變只在程式執行過程中有效
passwd命令擁有SetUID許可權,所有普通使用者可以修改自己的密碼。
ll /usr/bin/passwd
cat命令沒有SetUID許可權,所以普通使用者不能檢視/etc/shadow檔案內容
ll /bin/cat
設定SetUID的方法
4代表SUID
chmod 4755 檔名
chmod u+s檔名
含義:
1代表著SBIT許可權
2代表著SGID許可權
4代表著SUID許可權
1+2+4=7代表者SUID SGID SBIT不過並沒有意義 針對的操作物件不一樣
change mod 改變許可權是方式
取消SetUID的方法
chmod 755 檔名
chmod u-s 檔名
S是報錯,沒有符合suid的執行許可權
切換為普通使用者:
只要是給vim設定了suid,那麼切換為普通使用者可以把配置檔案普通使用者id修改為0,普通使用者成為了超級使用者