歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux權限管理_文件特殊權限

Linux權限管理_文件特殊權限

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

一、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

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

Copyright © Linux教程網 All Rights Reserved