Filesystems

粘性位如何工作?

  • December 12, 2021

應用於可執行程序的粘性位標記系統以在程序完成執行後將程序的映像保留在記憶體中。

但我不知道它儲存在記憶體中的是什麼。在這種情況下,我怎麼能看到它們。?

這可能是我最討厭的事情之一,人們總是搞砸。SUID/GUID 位和粘性位是兩個完全不同的東西。

如果您這樣做,man chmod您可以閱讀有關 SUID 和粘性位的資訊。手冊頁也可在此處獲得。

背景

摘抄

字母rwxXst為受影響的使用者選擇文件模式位:讀(r)、寫(w)、執行(或搜尋目錄)(x)、僅當文件是目錄或已經對某些文件具有執行權限時才執行/搜尋使用者 (X),在執行時設置使用者或組 ID (s),限制刪除標誌或 粘性位 (t)

SUID / GUID

上面的手冊頁試圖說的是,x 位在使用者八進制(rwx 的第一組)和八進制組(rwx 的第二組)的 rwxrwxrwx 中佔據的位置可以採取額外的狀態,其中 x 變為一個s。當發生這種情況時,這個文件在執行時(如果它是一個程序而不僅僅是一個 shell 腳本)將以文件所有者或組的權限執行。

因此,如果文件由 root 擁有並且 SUID 位打開,則程序將以 root 身份執行。即使您以普通使用者的身份執行它。同樣的事情也適用於 GUID 位。

摘抄

設置和設置位

如果文件的組 ID 與使用者的有效組 ID 或使用者的補充組 ID 之一不匹配,則 chmod 清除正常文件的 set-group-ID 位,除非使用者具有適當的權限。其他限制可能會導致 MODE 或 RFILE 的 set-user-ID 和 set-group-ID 位被忽略。此行為取決於底層 chmod 系統呼叫的策略和功能。如有疑問,請檢查底層系統行為。

chmod 保留目錄的 set-user-ID 和 set-group-ID 位,除非您另外明確指定。您可以使用 u+s 和 gs 等符號模式設置或清除位,並且可以使用數字模式設置(但不清除)位。

SUID / GUID 範例

沒有 suid/guid - 只設置了rwxr-xr-x位。

$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan  9 01:01 b.pl

啟用 suid 和使用者的可執行位(小寫 s) -設置rwsr-xrx位。

$ chmod u+s b.pl 
$ ls -lt b.pl 
-rwsr-xr-x 1 root root 179 Jan  9 01:01 b.pl

啟用 suid 和禁用可執行位(大寫 S) - 設置了位rwSr-xr-x

$ chmod u-x b.pl
$ ls -lt b.pl 
-rwSr-xr-x 1 root root 179 Jan  9 01:01 b.pl

guid & group 的可執行位已啟用(小寫 s) - 位rwxr-sr-x已設置。

$ chmod g+s b.pl
$  ls -lt b.pl 
-rwxr-sr-x 1 root root 179 Jan  9 01:01 b.pl

guid 啟用和可執行位禁用(大寫 S) - 設置了位rwxr-Sr-x

$ chmod g-x b.pl
$  ls -lt b.pl 
-rwxr-Sr-x 1 root root 179 Jan  9 01:01 b.pl

粘性位

另一方面,粘性位表示為t,例如/tmp目錄:

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

鑑於它的真正含義,該位應該一直被稱為“限制刪除位”。啟用此模式位時,它會創建一個目錄,以便使用者只能刪除其中他們是所有者的文件和目錄。

摘抄

限制刪除標誌或粘滯位

限制刪除標誌或粘滯位是單個位,其解釋取決於文件​​類型。對於目錄,它

防止非特權使用者刪除或重命名目錄中的文件,除非他們擁有該文件或目錄;這稱為目錄的受限刪除標誌,通常在像 /tmp 這樣的全域可寫目錄中找到。對於某些舊系統上的正常文件,該位將程序的文本圖像保存在交換設備上,以便在執行時更快地載入;這稱為粘性位。

引用自:https://unix.stackexchange.com/questions/79395