歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux權限管理ACL權限,文件特殊權限,chattr權限,sudo權限

Linux權限管理ACL權限,文件特殊權限,chattr權限,sudo權限

日期:2017/2/28 13:47:09   编辑:Linux教程

一 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權限就總結到這裡,如有問題,歡迎指正,謝謝。

Copyright © Linux教程網 All Rights Reserved