私は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
パターンは単なる(つまり)ではありません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 ビットが設定されたファイルを探します。