1. 程式人生 > >linux,centos,redhat 中SUID,SGID ,Sticky Bit權限作用是什麽

linux,centos,redhat 中SUID,SGID ,Sticky Bit權限作用是什麽

創建目錄 bit 沒有 分享 /etc/ 都是 刪除 正常 寫入

SUID

Set Uid

當我我們使用 ls 看passwd與shadow的權限時,會發現shadow文件只有root用戶具有所有權限,其余所有都沒喲任何權限,shadow文件是保存各個用戶密碼相關的數據,但是那麽試想,雖然passwd命令可以允許普通用戶執行,但是shadow確實不能被普通用戶寫入啊,當我們非root用戶是如何修個自己的密碼的?

技術分享

當我們用zkncn這個普通用戶執行passwd這個命令時,此時SUID權限就起作用啦,用於這個權限,普通用戶在執行這個命令時,就暫時取得了該程序所有者的權限,即root用戶的權限,當用就可以對shadow這個文件操作咯

技術分享

SUID的基本作用及說明:

只對二進制可執行文件設置起作用更。對其他類型文件或目錄都是沒有作用的

該權限只能在該可執行文件的執行過程中起作用。比如我們用zkuncn用戶使用可以執行passwd命令修改自己密碼,但用 cat 讀取 /etc/shadow 文件是沒有權限的

執行的用戶需要對該可執行文件具有執行權限,即 x 權限。因為有了 x 權限才能執行該程序

該權限用在該程序所有者權限組中的 x 權限位置用 s 表示,由於該權限只有在具有 x 權限時才有意思,所以 s 與 x 權限合並寫在 x 權限位置上,當是大寫的 S 時表示無效的SUID,例如用戶對該程序沒有 x 權限,卻設置了 s 權限

SGID

在SUID是臨時取得程序所有者的權限,顧名思義 SGID,就是臨時取得該程序的所有組的權限,但是SGID可以對可執行二進制程序或者目錄都起作用,該權限在組 x 權限位置用 s 表示,同樣需要 x 權限,若沒有 x 權限,怎表示無效的 SGID 權限,用大寫 S 表示

當對象是目錄是:

若用戶進入具有SGID權限的目錄,則此時該用戶在此目錄下的群組將變為該目錄的群組

若該用戶能創建目錄及文件,那麽目錄和文件的群組即是該目錄的群

例如:在第二行我們可以看出,testfile 文件的屬於 zkunc 用戶,群組屬於 zkuncn 群組,此時我用用戶 zkuncn1 在 testfile文件下創建一個hello的文件,再用 ls 看下,可以看出 hello 文件的群組卻是 zkuncn ,因為 testfile 目錄具有 SGID 權限,正常情況下 hello 的群組應該是zkuncn1

技術分享

若對象是可執行程序:

具有 x 權限的二進制可執行程序

執行的用戶在執行的過程中具有該程序群組的權限

Sticty Bit

該權限只對目錄有效,對文件沒有作用,該權限用 t 表示,若一個目錄設置了 t 權限,那麽各用戶可以在該目錄下創建和新增文件或目錄,但是各用戶只能刪除屬於自己用戶的文件或目錄,不能刪除別人的文件和目錄,即使該文件或目錄具有 777 的權限。同樣,t 權限在其他用戶 x 權限位置用 t 表示, t 權限也需要 x 權限,若沒有 x 權限,則表示無效,用大 T 表示。

簡單的就是 tmp 目錄

技術分享

在 tmp 目錄中,我們用zkuncn用戶創建一個文件 zkuncndir, 此時切換到 zkuncn1 用戶,去刪除zkuncndir 文件夾,盡管這個文件夾的權限是 777 但是由於 t 這個權限,還是不能刪除的

技術分享

linux,centos,redhat 中SUID,SGID ,Sticky Bit權限作用是什麽