tcpdumpインストールとファイルのs権限


1 tcpdumpをインストールします.rootユーザーを使用してインストールする必要があります.
yum install -y tcpdump
/usr/sbinディレクトリにインストール
2 adminユーザーのprofileを変更し、/usr/sbinを環境変数に追加
export PATH=$PATH:$HOME/bin:/usr/sbin

3 tcpdumpを実行すると実行権限がないことがわかります
tcpdump: socket: Operation not permitted

man
Under Linux:
              You must be root or tcpdump must be installed setuid to root (unless your distri-
              bution has a kernel that supports capability bits such as CAP_NET_RAW and code to
              allow those capability bits to be given to particular accounts and to cause those
              bits to be set on a user's initial processes when they log in, in which case  you
              must  have CAP_NET_RAW in order to capture and CAP_NET_ADMIN to enumerate network
              devices with, for example, the -D flag).


 
setuid、すなわちs権限の使用が必要であることを発見しました
4 s権限ビットの設定
(1)、s:ファイル所有者とグループはSUIDとGUIDを設定し、ファイルはs権限が設定された後root(ファイル所有者)として実行される.s権限を設定するとき、ファイルが所有者、グループに属するには、まず対応するx権限を設定する必要があります.そうしないと、s権限は実際に有効になりません(chmodコマンドは必要な整合性検査を行わず、x権限を設定しなくてもs権限を設定しても、chmodは間違っていません.ls-lのときにrwSを見て、S権限が有効になっていないことを大書します).
Linuxがパスワードを変更したpasswdはSUIDを設定したプログラムで、一般ユーザーは/etc/shadowファイルを読み書きする権限がなく、自分のパスワードを変更することができます.
ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr/bin/passwd
rootユーザーを使用してtcpdumpファイル権限を変更する
chmod u+s tcpdump
[admin@v035114 sbin]$ ll -a | grep tcpdump 
-rwsr-xr-x  1 root  root    789064 Nov 11  2009 tcpdump

これでroot以外でtcpdumpが使えます