GNU/Linux >> Linux の 問題 >  >> Linux

tcpdump:out.pcap:権限が拒否されました

解決策 1:

Centos 5で試しましたが、tmpまたはルートフォルダーでも同じです。 tcpdump の man ページによると、最初の保存ファイルを開く前に -Z オプション (デフォルトで有効) とともに使用すると、特権が削除されます。 「-C 1」を指定したため、ファイルサイズがすでに1に達しているため、アクセスが拒否され、新しいファイルを作成すると、アクセスが拒否されたエラーが発生します。 -Z ユーザーを指定するだけです

# strace tcpdump -i eth0 -n -w out.pcap -C 1
fstat(4, {st_mode=S_IFREG|0644, st_size=903, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aea31934000
lseek(4, 0, SEEK_CUR)                   = 0
read(4, "root:x:0:root\nbin:x:1:root,bin,d"..., 4096) = 903
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0x2aea31934000, 4096)            = 0
setgroups(1, [77])                      = 0
setgid(77)                              = 0
setuid(77)                              = 0
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, "\1\0\0\0\0\0\0\0\310\357k\0\0\0\0\0", 16) = 0
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0

recvfrom(3, 0x7fff9563d35f, 1, 32, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
fcntl(3, F_SETFL, O_RDWR)               = 0
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, "\1\0\17\0\0\0\0\0P\327\233\7\0\0\0\0", 16) = 0
open("out.pcap", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
write(2, "tcpdump: ", 9tcpdump: )                = 9
write(2, "out.pcap: Permission denied", 27out.pcap: Permission denied) = 27
write(2, "\n", 1
)                       = 1
exit_group(1)                           = ?

上記の strace の結果を見ることができます。tcpdump は権限をユーザーとグループ pcap (77) に落としました。

# grep 77 /etc/group
pcap:x:77:
# grep 77 /etc/passwd
pcap:x:77:77::/var/arpwatch:/sbin/nologin

tcpdump の man ページから -C

# man tcpdump
       -C     Before writing a raw packet to a savefile, check whether the file is currently larger than file_size and, if so,
              close the current savefile and open a new one.  Savefiles after the first savefile will have the name  specified
              with  the -w flag, with a number after it, starting at 1 and continuing upward.  The units of file_size are mil-
              lions of bytes (1,000,000 bytes, not 1,048,576 bytes).

              **Note that when used with -Z option (enabled by default), privileges are dropped before opening first savefile.**


# tcpdump --help
tcpdump version 3.9.4
libpcap version 0.9.4
Usage: tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ]
                [ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
                [ -W filecount ] [ -y datalinktype ] [ -Z user ]
                [ expression ]

-Z user で特定のユーザーを指定

# tcpdump -i eth0 -n -w out.pcap -C 1 -Z root
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
35 packets captured
35 packets received by filter
0 packets dropped by kernel     

解決策 2:

/tmp からコマンドを実行してみてください または他の誰でも書き込み可能なディレクトリ。誰でも書き込み可能ではないディレクトリで tcpdump に問題があったことを覚えています。理由はわかりません -:)

         cd /tmp
         tcpdump -i p3p1 -n -w out.pcap -C 16 

解決策 3:

あなたの tcpdump は 'tcpdump' ユーザーに特権を落としています。man ページを確認してください (「-Z tcpdump」がデフォルトであり、tcpdump ユーザーにはルートのホームディレクトリに書き込む権限がありません)。 Daniel T. があなたに言ったように、/tmp のような誰でも書き込み可能なディレクトリでキャプチャを実行するか、少なくともユーザーまたはグループのいずれかに 'tcpdump' 書き込み権限を与えたディレクトリでキャプチャを実行してください。

解決策 4:

この Permission denied に出くわしたとき .cap を入れていたことが判明した問題 .pcap の代わりにファイルの拡張子 . RichL がコメントで指摘したように、Ubuntu /etc/apparmor.d/usr.sbin.tcpdump の AppArmor プロファイル

  # uname -a ; lsb_release -a
  Linux bidder-lb4 3.2.0-76-virtual #111-Ubuntu SMP Tue Jan 13 22:33:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  No LSB modules are available.
  Distributor ID: Ubuntu
  Description:    Ubuntu 12.04.5 LTS
  Release:        12.04
  Codename:       precise

解決策 5:

SELinux は実行されていますか?入力して確認するのは端末です:

/usr/sbin/getenforce

Enforcing と表示されている場合


Linux
  1. catalina.out に大量の (許可が拒否されました)

  2. LinuxのGitプル許可が拒否されましたか?

  3. git リポジトリのクローン作成時に許可が拒否されました

  1. docker コンテナが Permission denied を要求するのはなぜですか?

  2. マウント エラー 13 =許可が拒否されました

  3. POSTFIX main.cf 許可が拒否されました

  1. Sudoの許可は拒否されましたが、Suは許可を与えますか?

  2. 移動の許可が拒否された場合、Mv(1)がオブジェクトをコピーするのはなぜですか?

  3. Gitがファイルを作成できません権限が拒否されました