Linux特殊許可權SUID、SGID、SBIT

天魂地煞發表於2014-10-15

對於linux中檔案或目錄的許可權,應該都知道普通的rwx許可權。我們先看看下面兩個的許可權是什麼

image

image

非常奇怪,/tmp目錄和 passwd檔案的許可權怎麼怪怪的,怎麼有s和t許可權呢。看了下面的內容你就明白了。

1 SUID

當s出現在檔案擁有者的x許可權上時,如我們上面看到的/usr/bin/passwd這個檔案的許可權時-rwsr-xr-x,此時就被稱為SET UID簡稱SUID.SUID對於一個檔案有什麼限制和功能呢?

  1. SUID許可權僅對二進位制可執行檔案有效
  2. 執行者對於該檔案具有x的許可權
  3. 本許可權僅在執行該檔案的過程中有效
  4. 執行者將具有該檔案擁有者的許可權

例如普通使用者用passwd修改自己的命令,實際上最終更改的是/etc/passwd檔案. 此檔案時使用者管理配置檔案,只有root許可權才能更改。

image

既然是root使用者才擁有此許可權,為什麼我們可以通過passwd命令來修改密碼呢,那這就要歸功於passwd設定了suid許可權位了。

image

此時普通使用者通過執行passwd命令,臨時擁有root許可權,間接的修改/etc/passwd,以達到修改自己密碼的許可權。

2 SGID

當s出現在目錄或檔案所屬群的x許可權上時,此時就稱為SET GID簡稱SGID,那SGID對檔案和目錄分部有哪些功能呢?

2.1 SGID對目錄

  1. 使用者若對於此目錄具有 r 與 x 的許可權時,該使用者能夠進入此目錄
  2. 使用者在此目錄下的群組將會變成該目錄的群組
  3. 若使用者在此目錄下具有 w 的許可權(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同

2.2 SGID對檔案

  1. SGID 對二進位制可執行檔案有效
  2. 程式執行者對於該檔案來說,需具備 x 的許可權
  3. 執行者在執行的過程中將會獲得該檔案群組的支援(用於改檔案群組的許可權)

3 SBIT

當s出現在目錄其他使用者的x許可權上時,此時就稱為Sticky Bit簡稱SBIT,那SBIT有哪些限制和作用呢?

  1. 僅對目錄有效,對檔案無效
  2. 當使用者在該目錄下建立檔案或目錄時(有許可權的情況下),僅自己與 root 才有權力刪除新建的目錄或檔案

我們知道/tmp目錄是這樣的許可權。

image

現在我們來驗證下,先用root賬號在tmp檔案中建立一個檔案test,然後用openstack(其他賬號)進入該目錄,刪除test檔案,看看發生什麼情況

image

我們看到這樣是不能刪除檔案的。因為/temp目錄有SBIT許可權。

4 怎麼操作SUID、SBID、SBIT

操作這些標誌與操作檔案許可權的命令是一樣的, 都是 chmod. 有兩種方法來操作,

(1)符號型別改變許可權

  1. chmod u+s testbin– 為testbin檔案加上setuid標誌.
  2. chmod g+s testdir– 為testdir目錄加上setgid標誌
  3. chmod o+t testdir– 為testdir目錄加上sticky標誌

(2) 數字型別改變檔案許可權

採用八進位制方式. 對一般檔案通過三組八進位制數字來置標誌, 如 666, 777, 644等. 如果設定這些特殊標誌, 則在這組數字之外外加一組八進位制數字. 如 4666, 2777等. 這一組八進位制數字三位的意義如下,

abc

  1. a – setuid位, 如果該位為1, 則表示設定setuid 4—
  2. b – setgid位, 如果該位為1, 則表示設定setgid 2—
  3. c – sticky位, 如果該位為1, 則表示設定sticky 1—

設定完這些標誌後, 可以用 ls -l 來檢視. 如果有這些標誌, 則會在原來的執行標誌位置上顯示. 如

  1. rwsrw-r– 表示有setuid標誌
  2. rwxrwsrw- 表示有setgid標誌
  3. rwxrw-rwt 表示有sticky標誌

那麼原來的執行標誌x到哪裡去了呢? 系統是這樣規定的, 如果本來在該位上有x, 則這些特殊標誌顯示為小寫字母 (s, s, t). 否則, 顯示為大寫字母 (S, S, T)

相關文章