首頁 > 軟體

Linux許可權管理ACL許可權,檔案特殊許可權,chattr許可權,sudo許可權

2020-06-16 17:28:11

一 ACL許可權
,我們來假設這麼一種場景,在真實專案中有一個目錄project,它的所屬主的許可權是rwx,它的所屬組的許可權也是rwx,其他人沒有任何許可權,我們的員工一般都會劃分到所屬組裡,來完成日常工作,但是這個時候來了一個新員工,這個員工對linux操作不太熟悉,管理員只想給它分配讀和執行的許可權,不想給它寫的許可權,防止他誤刪檔案或是其他,我們該怎麼辦呢,新建一個組?資料夾只能有一個所屬組,把其他人的許可權給讀和執行,這樣更不安全,所以這時ACL許可權就有用武之地了,我們可以利用ACL許可權給這個指定的使用者設定讀和執行的許可權。
1 檢視和設定ACL許可權
好了,我們現在模擬這種情況,首先建立一個工作目錄/project,然後給它賦予770許可權,建立3個使用者,zhangsan,lisi,st,建立一個tgroup組,把zhangsan和lisi新增到tgroup組裡,改變project的所屬組為tgroup

現在我們這個st使用者,我們想特別對待,只給他rx許可權,那麼就設定ACL許可權,我們在設定之前,先檢視下ACL許可權,用getfacl project

這裡沒有看到任何特殊許可權
下面設定ACL許可權
setfacl -m u:st:rx /project/

-m就是新增一個ACL許可權,使用u:使用者名稱:許可權的格式,給st設定rx許可權
我們再來檢視下

我們看到多了兩行
user:st:r-x,表明st這個使用者有了rx許可權,mask:rwx,其實使用者st真正有的許可權,是r-x和mask預設許可權相與的結果,下面我們來驗證下,比如我在project目錄下建立一個檔案,然後切換到st使用者,看能否刪除
,我們發現一開始我們假設的目的達到了,st這個使用者只有rx許可權,沒有w許可權,不能隨便刪除檔案。
接下來看下給使用者組設定ACL許可權,格式是setfacl -m g:tgroup2:rx /project/
比如我們新建一個tgroup2的組,給它rx許可權,然後新建一個st2,把st2加入tgroup2組中,給tgroup2組設定ACL許可權rx,我們看下st2是不是一樣不能刪除檔案


好了,所有屬於這個組的使用者有一樣的rx許可權,注意,組的acl許可權同樣是跟mask許可權與的結果。

2 最大有效許可權和刪除ACL許可權
我們上面說了,ACL許可權的最終結果是跟mask許可權與的結果,那如果我們想修改這個最大有效許可權呢
setfacl -m m:rx 檔名
這樣就可以了,這裡就不演示了
那剛才我們新增了幾個acl許可權,如果想刪除st1和tgroup2的acl許可權
setfacl -x u:st1 檔名
setfacl -x g:tgroup2 檔名
如果想全部刪除
setfacl -b 檔名 這樣就全都刪除了

3 遞回ACL許可權和預設ACL許可權
遞回是父目錄在設定ACL許可權時,所有的子檔案和子目錄也會有相同的ACL許可權
setfacl -m u:使用者名稱:許可權 -R 父目錄

預設ACL許可權的作用是,如果給父目錄設定了ACL許可權,那麼父目錄中所有新建的子檔案都會有預設的ACL許可權
setfacl -m d:u:使用者名稱:許可權 檔名

二 檔案特殊許可權
1 SetUID
只有可以執行的二進位制程式才能設定SUID許可權,命令執行者要對該命令有x執行許可權,
命令執行者在執行程式時,可以靈魂附體為檔案的屬主,SUID許可權只在程式的執行過程中有效
舉個例子:
我們來看下可執行檔案passwd的詳細資訊

我們看到該可執行檔案的 所有者是root,並且許可權的使用者許可權是rws,表明passwd檔案具有SUID許可權,所以普通使用者可以修改自己的密碼,普通使用者修改自己密碼的過程,是靈魂附體為root,然後執行passwd,修改完又恢復自己的身份
我們再來看下cat命令的詳細資訊

cat命令就沒用SUID許可權,所以普通使用者不能檢視/etc/shadow 的內容
設定SUID的方法:
4代表SUID
chmod 4755 檔名
chmod u+x 檔名
取消SUID的方法:
chmod 755 檔名
chmod u-x 檔名

2 SetGID
SetGID針對檔案的作用:
只有可執行的二進位制檔案可以設定SGID許可權,命令執行者要對該命令具有x執行許可權,在執行命令的過程中,組身份升級為該程式檔案的屬組,執行完恢復
舉個例子,我們看下locate命令

我們知道在執行locate命令的時候,是去查詢資料庫

使用者在執行locate命令的時候,組身份變為slocate組,而查詢資料庫時,slocate組具有讀的許可權,所有可以查詢,查詢完,恢復本身組的身份

SetGID針對目錄的作用:
普通使用者必須對此使用者具有r和x許可權,才能進入該目錄,普通使用者在此目錄中的有效組會變成此名錄的屬組,若普通使用者對此目錄擁有w許可權,那麼新建的檔案的預設屬組是這個目錄的陣列

我們看到dtest目錄的屬組許可權是r-s,這個s就是SGID許可權,有了這個之後,新建的abc檔案的屬組就是root了,而不是st2

設定SetGID
2代表SGID
chmod 2755 檔名
chmod g+s 檔名

取消SetGID
chmod 755 檔名
chmod g-s 檔名

3 Sticky BIT
SBIT黏著位的作用:
SBIT只對目錄有效,普通使用者對該目錄擁有W和X許可權,如果沒有SBIT,由於使用者有W
許可權,可以隨便刪除該目錄下的檔案,一旦有了SBIT,就算使用者有W許可權,也不能隨便刪除其他使用者從黃金的檔案
設定SBIT
chmod 1755 目錄名
chmod o+t 目錄名
取消SBIT
chmod 755 目錄名
chmod o-t 目錄名

三 chattr許可權
命令格式
chattr [+-=] 選項 檔案或目錄名
+增加許可權
- 刪除許可權
= 等於某許可權

選項
i:如果對檔案設定i選項,那麼不允許對檔案刪除,改名,也不能新增和修改資料

lsattr是檢視chattr屬性
如果對目錄設定i屬性,那麼只能修改該目錄下的資料,不能新建和刪除檔案

a:如果對檔案設定a屬性,那麼只能在檔案中新增資料,不能修改也不能刪除資料
如果對目錄設定a屬性,那麼只允許在目錄中建立和修改檔案,不能刪除檔案。

四 sudo許可權
把本來只有root可以執行的命令賦予普通使用者
sudo的操作物件是系統命令
執行visudo命令


比如我現在想賦予st2使用者重新啟動伺服器的命令
st2 ALL=/sbin/shutdown -r now

然後我們切換到st2
可以用sudo -l檢視可用的命令

那麼在執行的時候
sudo shutdown -r now即可

好了,Linux許可權管理ACL許可權,檔案特殊許可權,chattr許可權和sudo許可權就總結到這裡,如有問題,歡迎指正,謝謝。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-11/137260.htm


IT145.com E-mail:sddin#qq.com