-perm /6000 と -perm /u+s の検索と違い

-perm /6000 と -perm /u+s の検索と違い

私はsetuid実行可能ファイルを見つけるために「oneliner」を使用しようとしてきました。

私が試した最初の行は次のとおりです。

find / -perm /u+s -type f

その後、似ていますが、他の結果を提供する行を見つけました。

find / -perm /6000 -type f

私が知ることができる限り、これらは同じように見えますが、最初は2番目ほど多くの結果を表示しません(ほとんど奇数グループがありません)。なぜ、違いは何ですか?

答え1

ほとんどの人が知らないのは、Unix権限が実際には単純なユーザー、グループ、その他(rwx)以上の意味を持つということです。これら3つのトリプルは、ユーザー、グループ、および他のユーザーがファイルとディレクトリにアクセスできるようにする一般的な権限です。しかし、ユーザービットの前に来るビットセットもあります。これらのビットを「特殊モード」と呼びます。

のようなものを扱うときに使う略式表記法に近いですchmod

$ chmod 644

実際には次のようになります。

$ chmod 0644

ビットのリストは次のとおりです。

次のタイトルのWikipedia記事からの抜粋: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結果はビットです04000。数値表記法を使用する場合に必要なのはビットです。04000 そして 02000。これにより、ユーザーまたはグループsetuidビットが設定されたファイルが提供されます。

追加読書

Unixの権限をよりよく理解したい人には、この記事を読むことを強くお勧めします。Wikipediaページについてchmod。非常に簡単に分類されていて忘れてしまったときに素晴らしい参考資料になります。

引用する

答え2

パターンは単なる(つまり)ではありません6000u+s,g+su+s4000

find / -perm /u+sまたはfind / -perm /4000setuidビットが設定されているファイルを探します。find / -perm /u+sまたは、find / -perm /6000setuid ビットまたは setgid ビットが設定されたファイルを探します。

関連情報