-perm /6000 と -perm /u+s の違いを調べる

-perm /6000 と -perm /u+s の違いを調べる

私は「ワンライナー」を使用して setuid 実行可能ファイルを見つけようとしています。

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

find / -perm /u+s -type f

次に、似ているが異なる結果をもたらす行を見つけました。

find / -perm /6000 -type f

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

答え1

ほとんどの人は気づいていませんが、Unix の権限は実際にはユーザー、グループ、その他 (rwx) だけではありません。これら 3 つの 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、これは ビット になります04000。数値表記を使用する場合は、ビットを求めていることになります。04000 そして 02000これにより、ユーザーまたはグループの setuid ビットが設定されたファイルが提供されます。

参考文献

Unixのパーミッションについてもっと理解したい人は、ぜひ読んでみてください。Wikipediaのページchmod非常に簡単に説明されており、忘れてしまったときに参照するのに最適です。

参考文献

答え2

モード6000は でありu+s,g+s、単なるu+s( 4000) ではありません。

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

関連情報