「ワンライナー」を使用してsetuid実行可能ファイルを見つけようとしています。
私が最初に試した行は次のとおりです。
find / -perm /u+s -type f
次に、似ているが結果が異なる行を見つけました:
find / -perm /6000 -type f
これらは私が知る限り同じように見えますが、最初の結果は2番目の結果ほど多くの結果を示していません(ほとんどの場合、奇妙なグループを持つものが欠落しています)。なぜ、何が違うのですか?
承認された回答:
ほとんどの人は気づいていませんが、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
を探しています 、ビット04000
になります 。数値表記を使用する場合、ビット04000
を要求します AND 02000
。これにより、ユーザーまたはグループのsetuidビットが設定されたファイルが得られます。
参考資料
Unixでの権限をよりよく理解したい人は、chmod
に関するウィキペディアのページを読むことを強くお勧めします。 。それは非常に簡単に分解され、忘れたときの優れた参考資料です。
参考資料
- chmodチュートリアル