GNU/Linux >> Belajar Linux >  >> Linux

tcpdump:out.pcap:Izin ditolak

Solusi 1:

saya mencoba di Centos 5, masih sama bahkan di folder tmp atau root. dari halaman manual tcpdump, hak istimewa dijatuhkan saat digunakan dengan opsi -Z (diaktifkan secara default) sebelum membuka savefile pertama. karena Anda menentukan "-C 1", izin ditolak terjadi karena ukuran file sudah mencapai 1, dan saat membuat file baru akan muncul kesalahan izin ditolak. jadi cukup tentukan pengguna -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)                           = ?

Anda dapat melihat hasil strace di atas, tcpdump melepaskan hak istimewa ke pcap pengguna dan grup (77).

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

Dari halaman manual tcpdump, -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 ]

Tentukan pengguna tertentu dengan -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     

Solusi 2:

Coba jalankan perintah dari /tmp atau direktori dunia lain yang dapat ditulis. Saya ingat mengalami masalah dengan tcpdump di direktori yang tidak dapat ditulis dunia, saya tidak tahu mengapa -:)

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

Solusi 3:

tcpdump Anda menjatuhkan hak istimewa ke pengguna 'tcpdump', periksa halaman manual ("-Z tcpdump" adalah default, dan pengguna tcpdump tidak memiliki izin untuk menulis di homedir root). Seperti yang dikatakan Daniel T. kepada Anda, jalankan tangkapan Anda di direktori yang dapat ditulis dunia seperti /tmp, atau setidaknya direktori tempat Anda telah memberikan izin menulis 'tcpdump' kepada pengguna atau grup.

Solusi 4:

Saat saya menemukan Permission denied ini masalahnya ternyata saya meletakkan .cap ekstensi pada file bukan .pcap . Seperti yang ditunjukkan RichL di komentar, profil AppArmor di Ubuntu /etc/apparmor.d/usr.sbin.tcpdump menyebabkan ini.

  # 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

Solusi 5:

Apakah SELinux berjalan? Periksa dengan mengetik terminal:

/usr/sbin/getenforce

Jika tertulis Enforcing , Anda dapat mencoba menonaktifkan SELinux dan mencoba tcpdump lagi, untuk melihat apakah SE menghentikannya.


Linux
  1. banyak (Izin ditolak) di catalina.out

  2. Izin tarik Git ditolak linux?

  3. Izin ditolak saat mengkloning repositori git

  1. Izin Sudo Ditolak Tapi Su Memberikan Izin?

  2. mount error(13):Izin ditolak dengan windows share

  3. Izin main.cf POSTFIX ditolak

  1. Mengapa Mv(1) Menyalin Objek Jika Izin Untuk Bergerak Ditolak?

  2. -bash:./configure:Izin Ditolak?

  3. Git tidak dapat membuat izin file ditolak