なぜ手紙を書くことができないのです/dev/stdout
か?ルートとしてログインしました。どのような大きな権限を持つことができますか?
root@ubuntu:/# tcpdump -i 2 -w /dev/stdout
tcpdump: /dev/stdout: Permission denied
上記のコマンドが-w /dev/null
機能します。私はUbuntu Linuxを使用しています。
これでchar devで、特権でリダイレクトされたパスにリダイレクトstdout
します。また何がありますか?proc
/dev/pts
w
crw-rw-rw- 1 root root 1, 3 2013-08-26 00:29 /dev/null
lrwxrwxrwx 1 root root 15 2013-08-26 00:29 /dev/stdout -> /proc/self/fd/1
lrwx------ 1 root root 64 2013-08-26 10:10 /proc/self/fd/1 -> /dev/pts/0
crw--w---- 1 xxx tty 136, 0 2013-08-26 10:11 /dev/pts/0
root@ubuntu:/# tcpdump -i 2 -w /dev/pts/0
tcpdump: /dev/pts/0: Permission denied
答え1
私の考えではそうだと思います。アパモアオープン操作を拒否します。システムログに次のような内容が表示されますか?
kernel: [14124112.152452] type=1400 audit(1377537799.840:40): apparmor="DENIED" operation="open" parent=111 profile="/usr/sbin/tcpdump" name="/dev/pts/0" pid=222 comm="tcpdump" requested_mask="wc" denied_mask="wc" fsuid=0 ouid=0
デフォルトでは、tcpdump(-wを除く)は出力をstdoutにパイプします。 stdoutから再生データを取得しようとしていますか?どのような状況で-w -
使用できますか-w /dev/stdout
?
を使用するには/dev/stdout
、特に/dev/pts/*
を介して項目をapparmor
編集して追加します。/etc/apparmor.d/usr.sbin.tcpdump
/dev/pts/* rw,
その後、構成ファイルを再ロードします。
apparmor_parser -r /etc/apparmor.d/usr.sbin.tcpdump