首頁 > 軟體

Linux許可權管理_檔案特殊許可權

2020-06-16 17:23:08

一、SetUID功能

設定SetUID的方法

4代表SUID s代表SUID許可權 S代表報錯了,原因沒有執行許可權

# chmod 4755 檔名(最好用這種方法)

# chmod u+s 檔名

取消SetUID的方法

# chmod 755 檔名

# chmod u-s 檔名

  • 只有可以執行的二進位制程式才能設定SUID許可權
  • 命令執行者要對該程式擁有執行許可權
  • 命令執行者在執行該程式是獲得該程式檔案屬主的身份(在執行程式的過程中靈魂附體為檔案的屬主)
  • SetUID許可權只在該程式執行過程中有效,也就是說身份改變只在程式執行過程中有效

檢視SUID許可權

# ll /usr/bin/passwd

 

二、SetGID功能

設定SetGID的方法

2代表SGID s代表SGID許可權

# chmod 2755 檔名(最好用這種方法)

# chmod u+g 檔名

取消SetGID的方法

# chmod 755 檔名

# chmod u-g 檔名

SetGID針對檔案的作用

  • 只有可以執行的二進位制程式才能設定SGID許可權
  • 命令執行者要對該程式擁有執行許可權
  • 命令執行者在執行該程式時,組身份升級為該程式檔案的屬組
  • SetGID許可權只在該程式執行過程中有效,也就是說身份改變只在程式執行過程中有效

    locate命令屬於mlocate包,使用命令前要先更新資料庫updatedb,查詢速度老快啦,但是locate命令需要實時跟新資料庫,否則新建立的檔案檢索不到,而且/tmp目錄下的檔案也無法查詢

  • /usr/bin/locate是可執行的二進位制程式,可以賦予SGID
  • 執行使用者test對/usr/bin/locate命令擁有執行許可權
  • 執行/usr/bin/locate命令時,組身份會升級為slocate組,而slocate組對/var/lib/mlocate/mlocate.db資料庫擁有r許可權,所以普通使用者可以使用locate命令查詢mlocate資料庫
  • 命令結束,test使用者的組身份返回test組

SetGID針對目錄的作用

  • 普通使用者必須對此目錄擁有r和x許可權,才能進入此目錄
  • 普通使用者在此目錄中的有效組會變成此目錄的屬組
  • 若普通使用者對此目錄擁有w許可權時,新建的檔案的預設屬組是這個目錄的屬組

舉例說明:

# mkdir /tmp/test    建立test目錄

# chmod 2777 /tmp/test/  給test目錄賦予SGID許可權

# su – acl  切換到acl使用者

# cd /tmp/test/  進入test目錄

# touch test.txt 建立test.txt檔案

# ll  檢視test檔案屬性所有者是test,但是所屬組是root

三、Sticky BIT功能(黏著位)(如tmp目錄)

  • 黏著位目前只對目錄有效
  • 普通使用者對該目錄擁有w和x許可權,即普通使用者可以在此目錄擁有寫入許可權
  • 如果沒有黏著位,因為普通使用者擁有w許可權,所以可以刪除此目錄下所有檔案,包括其他使用者建立的檔案。一旦賦予了黏著位,除了root可以刪除所以檔案,普通使用者就算擁有w許可權,也只能刪除自己建立的檔案,但是不能刪除其他使用者建立的檔案。

設定Sticky BIT的方法

1代表SBIT t代表SBIT許可權

# chmod 1755 檔名

# chmod o+t 檔名

取消SBIT的方法

# chmod 755 檔名

# chmod o-t 檔名

四、檔案系統屬性許可權chattr許可權(該許可權針對root使用者)

語法:

# chattr [+-=][選項] 檔名 設定chattr屬性

# lsattr –a 檔名 檢視chattr屬性

-R遞回顯示子目錄下的檔案,-d檢視目錄本身

選項:

i:如果對檔案設定i屬性,那麼不允許對檔案進行刪除、改名,也不能新增和修改資料;如果對目錄設定i屬性,那麼只能修改目錄下檔案的資料,但不允許建立和刪除檔案。

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

五、系統命令sudo許可權

  • root把本來只能超級使用者執行的命令賦予普通使用者來執行
  • sudo的操作物件是系統命令

設定方法:

# visudo 或者 # vim /etc/sudoers

 

root  ALL=(ALL)  ALL

使用者名稱 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)

%test ALL=(ALL)  ALL

組名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-01/140001.htm


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