用於解決使用者對檔案身份不足的問題
有乙個缺點:acl一旦遞迴之後,不可避免的會出現許可權溢位,因為遞迴時,賦予目錄的執行許可權對於目錄來說的意義只是cd命令可以執行,對於它裡面新建立的子目錄來說可以接受,但是對新建立的子檔案來說,執行許可權就是最大許可權.非常不利於管理,關於這個問題,只能通過寫指令碼來解決,沒有其他的辦法.
所以非必須情況下還是chmod來賦予許可權比較安全
1.基本命令:
getfacl 檔名 查詢檔案的acl許可權
setfacl 選項 檔名 設定acl許可權
-m 設定acl許可權
-b 刪除acl許可權
-x:使用者 刪除單個使用者的acl許可權
setfacl -m u:使用者名稱:許可權 檔名
setfacl -m g:組名:許可權 檔名
例如:
setfacl -m u:aa:rwx /test
#給test目錄賦予aa是讀寫執行的acl許可權
setfacl -m u:cc:rx -r soft/
-r 遞迴 (可以讓目錄下的檔案也同時擁有acl許可權)
setfacl -m d:u:aa:rwx -r /testacl 預設許可權。 注意:預設許可權只能賦予目錄
注意:如果給目錄賦予acl許可權,兩條命令都要輸入
遞迴與預設的區別:
setfacl -m u:cc:rx-rsoft/ 只對已經存在的檔案生效
setfacl -md:u:aa:rwx -r /test 只對以後新建的檔案生效 其中的d是目錄的意思
2.最大有效許可權mask
[root@localhost /]# setfacl -m m:rx project/
#設定mask許可權為r-x。使用「m:許可權」格式
[root@localhost /]# getfacl project
/# file: project/
# owner: root
# group: tgroup
user::rwx
group::rwx #effective:r-x
mask::r-x
#mask許可權變為了r-x
other::---
3.刪除acl許可權[root@localhost /]# setfacl -x u:st /project/
#刪除指定使用者和使用者組的acl許可權
[root@localhost /]# setfacl -b project/
#會刪除檔案的所有的acl許可權
給普通使用者賦予部分管理員許可權,新增和使用授權命令時必須寫絕對路徑.
風險:在授權時,一定要寫清楚賦予的具體許可權,在visudo授權時,寫的許可權越詳細,使用者擁有的許可權就越小,寫的越籠統,使用者許可權就越大,如果沒有寫清楚造成的後果是很大的.
1.root身份:
visudo賦予普通使用者許可權命令,命令執行後和vi一樣使用
舉個例子,比如授權使用者user1可以重啟伺服器 ,則由root使用者新增如下行:
[root@localhost ~]# visudo
user1 all=/sbin/shutdown –r now
注意這裡寫了使用者user1只能以root身份使用/sbin/shutdown -r now這乙個命令,其它的關機命令或者定時重啟它都不能實現,user1使用sudo命令的格式如下:
[root@localhost user1]$ sudo /sbin/shutdown -r now
授權user1使用者可以新增其他普通使用者
首先visudo賦予user1使用者新增使用者許可權(當然還必須有改密碼的許可權):
進入編輯模式後寫入:
%user1 all=/usr/sbin/useradd
%user1 all=/usr/bin/passwd
但是發現乙個問題
如果就這樣賦予user1passwd許可權,它是可以修改root密碼的,這是非常危險的方法,這時就要用到正則來規避這個問題:
%user1 all=/usr/bin/passwd [a-za-z]*, !/user/bin/passwd "", !/usr/bin/passwd root
1.setuid
1)setuid的功能可以這樣理解:
2)舉例:
/usr/bin/passwd命令有特殊許可權setuid,它的屬主是root,也就是說在root的執行許可權位上是s。
當user1設定密碼時,它會以屬主的身份執行,換言之,在user1執行/usr/bin/passwd命令改密碼時,它就變身成為了root,實際是用root的身份在執行passwd,當然在這期間root會把user1的密碼寫入影子檔案/etc/shadow(雖然它的許可權是000,但是root是超級使用者可以強制寫入),所以普通使用者也是可修改/etc/shadow。等命令執行完畢後,身份隨之消失。
3)suid的危險性
如果給系統中重要的命令檔案賦予suid許可權,例如:
[root@localhost ~]# chmod u+s /usr/bin/vim
[root@localhost ~]# ll /usr/bin/vim
-rwsr-xr-x 1 root root 1847752 4月5 2012 /usr/bin/vim
普通使用者如果有了隨意讀寫檔案內容的許可權,那將會造成極其嚴重的後果。
4)所以建議:
2.setgid
sgid與suid有相似之處,但sgid既可以針對檔案生效(有風險),又可以針對目錄生效,這和suid明顯不同。
1)如果針對檔案,sgid的含義如下:
2)針對目錄的設定
3.stickybit
ticky bit粘著位,sbit僅針對目錄有效,它的作用如下:
4.設定檔案特殊許可權
設定時加在檔案許可權的第一位例如:
root@localhost ~]# chmod 4755 ftest
四、檔案系統屬性chattr許可權
可用來限制root許可權.但實際上並不是真正的限制,root可以再改回來.
1.格式:
[root@localhost ~]# chattr [+-=] [選項] 檔案或目錄名
選項:
+: 增加許可權
-: 刪除許可權
=: 等於某許可權
i: 如果對檔案設定i屬性,那麼不允許對檔案進行刪除、改名,也不能新增和修改資料;如果對目錄設定i屬性,那 麼只能修改目錄下檔案的資料,但 不允許建立和刪除檔案。
a: 如果對檔案設定a屬性,那麼只能在檔案中增加資料,但是不能刪除也不能修改資料;如果對目錄設定a屬性,那麼只允許在目錄中建立和修改檔案,但是不允許刪除
e:linux中絕大多數的檔案都預設擁有e屬性。表示該檔案是使用ext檔案系統進行儲存的,而且不能使用「chattr -e」命令取消e屬性。
如果賦予a許可權的話,想往檔案裡寫東西就不能再用vi編輯器了,這時候要用echo來追加.
注意:檔案的內容是沒辦法刪除的,因為vi不可用
2.檢視檔案系統屬性: lsattr
[root@localhost ~]# lsattr 選項檔名
選項:
-a 顯示所有檔案和目錄
-d 若目標是目錄,僅列出目錄本身的屬性,而不是子檔案的
Linux許可權管理
預設許可權 特殊許可權 suid 以檔案的所屬使用者身份執行而非執行檔案的使用者 sgid 以檔案所屬組身份執行 sticky 許可權 對檔案的影響 對目錄的影響 suid 以檔案的所屬使用者身份執行而非執行檔案的使用者 無 sgid 以檔案所屬組身份執行 在該目錄中建立的任意新檔案的所屬組與該目錄...
Linux許可權管理
linux許可權管理 1 檔案訪問許可權 1 檔案訪問者的分類 a 檔案和檔案目錄的所有者 u user b 檔案和檔案目錄的所有者所在的組的使用者 g group c 其它使用者 o others 2 檔案訪問許可權的種類 a 基本許可權 i.讀 r 4 read 對檔案而言,具有讀取檔案內容的許...
linux 許可權管理
linux許可權管理 1 檔案訪問許可權 1 檔案訪問者的分類 a 檔案和檔案目錄的所有者 u user b 檔案和檔案目錄的所有者所在的組的使用者 g group c 其它使用者 o others 2 檔案訪問許可權的種類 a 基本許可權 i.讀 r 4 read 對檔案而言,具有讀取檔案內容的許...