簡介
透過使用 setuid
、setgid
、sticky
,它們是 Linux
中的特殊許可權,可以對檔案和目錄的訪問和執行方式提供額外的控制。
命令 | 八進位制數字 | 功能 |
---|---|---|
setuid | 4 | 當執行檔案時,它以檔案所有者的許可權執行,而不是執行它的使用者的許可權執行。 |
setgid | 2 | 當執行檔案時,它將以檔案組的許可權執行。對於目錄,它將確保檔案繼承目錄的組。 |
sticky | 1 | 對於目錄,它確保只有檔案所有者可以刪除或重新命名檔案,即使其他人具有寫許可權。 |
setuid
(Set User ID)
通常用於需要提升許可權的可執行二進位制檔案
將 setuid
新增到檔案中
chmod u+s <filename>
驗證 setuid
ls -l filename
# 示例輸出如下:
-rwsr-xr-x 1 root root 12345 Nov 29 12:00 filename
所有者的執行位置 (rws) 中的s表示 setuid
移除 setuid
chmod u-s <filename>
setgid
(Set Group ID)
使用在檔案上時,確保檔案以檔案的組許可權執行,而不是使用者的主要組許可權執行
使用在目錄上時,確保目錄內建立的所有檔案都繼承目錄的組所有權,而不是使用者的主要組
將 setgid
新增到檔案或目錄中
chmod g+s <filename>/<directory>
驗證 setgid
ls -ld <filename>/<directory>
# 示例輸出如下:
drwxr-sr-x 2 user group 4096 Nov 29 12:00 directory_name
組執行位置(r-s)中的s表示 setgid
移除 setgid
chmod g-s <filename>/<directory>
sticky
通常用於目錄以防止使用者刪除或重新命名不屬於他們自己的檔案,即使該目錄對他們具有寫許可權,適用於 /tmp
等共享目錄
新增 sticky
位
chmod +t <directory_name>
驗證 sticky
位
ls -ld <directory_name>
# 示例輸出如下:
drwxrwxrwt 2 user group 4096 Nov 29 12:00 directory_name
其他人的執行位置(rwt)中的t表示 sticky(粘滯位)
移除 sticky
位
chmod -t <directory_name>
使用八進位制數字的形式設定
chmod 6755 <filename>
# 第一個6 = setuid + setgid (4 + 2)
# 第二個7 = 所有者的許可權 rwx
# 後面兩個5 = 組和其他人的許可權 r-x