私は「ワンライナー」を使用して 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 /4000
setuid ビットが設定されているファイルのみを検索します。find / -perm /u+s
または、find / -perm /6000
setuid ビットまたは setgid ビットが設定されているファイルを検索します。