find
実行可能かつsuidビットが立っているファイルは、findを使えば簡単に検索できる。
> find "どっかのディレクトリ" -xdev -type f \( -perm -u+x -or -perm -g+x \) \( -perm -u+s \)
うん?-perm のパラメータをいじれば、もっとシンプルに出来るんでは。ていうか最後の括弧必要ないですよね?
find /usr/bin -xdev -type f -perm +0011 -perm -4000 -user root
一応 "-user root" も付け加えてみた。詳細は man 参照。とくに "-perm +mode" とか "-perm -mode" のあたり。"-maxdepth 1" をつけてもいいかもしれない。
どうせなんでまとめてリストする方法とか。(追記あり)
% echo "$PATH" | tr : \\0 | xargs -0 -e -i \ find {} -xdev -type f -perm +0011 -perm -4000 -user root
PATH の ":" を NULL 文字に変換して xargs に流し込む。xargs の -i オプションは標準ではなかったような気がしないでもないが、とりあえず GNU の xargs には付いている。
ちなみに Ubuntu の場合、結果はこんな感じ。
/usr/sbin/pppd /usr/bin/newgrp /usr/bin/chfn /usr/bin/chsh /usr/bin/gpasswd /usr/bin/passwd /usr/bin/traceroute6 /usr/bin/arping /usr/bin/sudo /usr/bin/X /usr/bin/jfbterm /usr/bin/mtr /usr/bin/fileshareset /usr/bin/kgrantpty /usr/bin/kpac_dhcp_helper /usr/bin/pmount /usr/bin/pumount /usr/bin/fping /usr/bin/fping6 /usr/bin/traceroute.lbl /usr/bin/sperl5.8.7 /sbin/unix_chkpwd /sbin/cardctl /bin/su /bin/mount /bin/umount /bin/ping /bin/ping6 /bin/check-foreground-console
追記
echo の -n オプションを付け忘れてた。正しくはこう。
% echo -n "$PATH" | tr : \\0 | xargs -0 -e -i \ find {} -xdev -type f -perm +0011 -perm -4000 -user root