-perm /6000 和 -perm /u+s 之間的尋找和差異

-perm /6000 和 -perm /u+s 之間的尋找和差異

我一直在嘗試使用“oneliner”來尋找setuid可執行檔。

我首先嘗試的線路是:

find / -perm /u+s -type f

然後我發現一行類似但給了不同的結果:

find / -perm /6000 -type f

據我所知,這些看起來是相同的,但第一個顯示的結果沒有第二個那麼多(大多數都缺少奇怪的組)。為什麼,有什麼不同?

答案1

大多數人不知道,Unix 權限實際上不僅僅是使用者、群組和其他 (rwx)。這 3 個三元組是允許使用者、群組和其他使用者存取檔案和目錄的典型權限。然而,還有一組位於使用者位之前的位。這些位元被稱為“特殊模式”。

它更多的是一種速記符號,您在處理諸如chmod.

$ chmod 644

實際上相當於:

$ chmod 0644

這是位元列表:

摘錄維基百科文章標題為:chmod

Flag                Octal value     Purpose
----                -----------     -------
S_ISUID             04000           Set user ID on execution
S_ISGID             02000           Set group ID on execution
S_ISVTX             01000           Sticky bit
S_IRUSR, S_IREAD    00400           Read by owner
S_IWUSR, S_IWRITE   00200           Write by owner
S_IXUSR, S_IEXEC    00100           Execute/search by owner
S_IRGRP             00040           Read by group
S_IWGRP             00020           Write by group
S_IXGRP             00010           Execute/search by group
S_IROTH             00004           Read by others
S_IWOTH             00002           Write by others
S_IXOTH             00001           Execute/search by others

你的問題

因此,在您要查找的第一個命令中u+s,結果將是 bit 04000。當您使用數字符號時,您需要的是位04000 02000。這將為您提供設定了使用者或群組 setuid 位元的檔案。

進一步閱讀

我強烈建議任何想要更好地了解 Unix 權限的人閱讀維基百科頁面關於chmod。它非常簡單地將其分解,並且在您忘記時是一個很好的參考。

參考

答案2

模式6000u+s,g+s,而不僅僅是u+s(那就是4000)。

find / -perm /u+sfind / -perm /4000只找設定了 setuid 位元的檔案。find / -perm /u+sfind / -perm /6000尋找設定了 setuid 位元或 setgid 位元的檔案。

相關內容