1. 程式人生 > >Linux特殊位SUID、SGID、SBIT

Linux特殊位SUID、SGID、SBIT

u+ setgid 情況 無法執行 允許 自己的 獲取 align 擁有

Linux特殊位SUID、SGID、SBIT

前言

Linux中的文件權限一般有x、w、r,在某個情況下有需要用到s、t,即特殊位。

進程運行時能夠訪問哪些資源或文件,不取決於進程文件的屬主屬組,而是取決於運行該命令的用戶身份的uid/gid,以該身份獲取各種系統資源。

SUID

SUID即setuid,作用就是讓執行該命令的用戶,以該命令的擁有者的權限去執行,比如普通用戶執行passwd時會擁有root的權限;

例子:

[syz@m01 ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

說明:該文件/usr/bin/passwd的屬主權限帶有s

;且屬主和屬組都是root,如果syz該用戶是怎麽進行密碼更改的呢?首先這個文件帶有的s;即是setuid權限位,表示允許普通用戶

以/usr/bin/passwd屬主root的權限來執行普通用戶無法執行的功能。

設置和取消SUID

設置:

chmod 4xxx 文件名 例如:chmod 4551 syz.txt

chmod u+s 文件名 chmod u+s syz.txt

取消

chmod xxx 文件名

chmod u-s 文件名

SGID

SGID即setgid,作用就是即讓執行文件的用戶以該文件所屬組的權限去執行。

設置和取消SGID

設置:

chmod 2xxx 文件名 例如:chmod 2551 syz.txt

chmod g+s 文件名 chmod g+s syz.txt

取消

chmod xxx 文件名

chmod g-s 文件名

SBIT

SBIT即Stick Bit,粘滯位,作用就是只對目錄有效,普通用戶對該目錄有w和x權限,若沒有粘滯位,則普通用戶可以對目錄下的文件/子目錄進行刪除操作(因為普通用戶對目錄具有w權限),包括其它用戶建立的目錄/文件;但若賦了SBIT,則普通用戶只能刪除自己創建的文件/目錄,而不能刪除不屬於自己的文件/目錄!

設置和取消SBIT

設置:

chmod 1xxx 文件名 例如:chmod 1551 syz.txt

chmod o+s 文件名 chmod o+s syz.txt

取消

chmod xxx 文件名

chmod o-s 文件名

例子:

[syz@m01 ~]$ ll -d /tmp/
drwxrwxrwt. 3 root root 4096 Feb 18 22:16 /tmp/

/tmp目錄的權限other部分為rwt,這個t就是我們設置的粘滯位

#首先在syz用戶下創建兩個文件

[syz@m01 tmp]$ ll
total 4
drwxrwxr-x 2 syz syz 4096 Feb 18 23:14 test-dir
-rw-rw-r-- 1 syz syz 0 Feb 18 23:14 test-file

#然後切換到在leo用戶下刪除這兩個文件

[leo@m01 tmp]$ ll
total 4
drwxrwxr-x 2 syz syz 4096 Feb 18 23:14 test-dir
-rw-rw-r-- 1 syz syz 0 Feb 18 23:14 test-file

[leo@m01 tmp]$ rm -rf test-dir/ test-file
rm: 無法刪除"test-dir/": 不允許的操作

#顯示無法刪除,然後切換到root下,去除/tmp/的的t,即粘滯位

[leo@m01 tmp]$ su -
Password:
[root@m01 ~]# chmod o-t /tmp/
[root@m01 ~]# ll -d /tmp
drwxrwxrwx. 4 root root 4096 Feb 18 23:14 /tmp

#然後切換到leo用戶,即可刪除syz用戶創建的那兩個文件

[leo@m01 tmp]$ rm -rf test-dir/ test-file
[leo@m01 tmp]$ ll /tmp/
總用量 0

Linux特殊位SUID、SGID、SBIT