GNU/Linux >> LINUX-Kenntnisse >  >> Linux

tcpdump:out.pcap:Zugriff verweigert

Lösung 1:

Ich habe es mit Centos 5 versucht, immer noch dasselbe, sogar im tmp- oder Root-Ordner. Von der tcpdump-Manpage werden Berechtigungen gelöscht, wenn sie mit der Option -Z (standardmäßig aktiviert) verwendet werden, bevor die erste Sicherungsdatei geöffnet wird. Da Sie "-C 1" angegeben haben, wird die Berechtigung verweigert, da die Dateigröße bereits 1 erreicht hat, und beim Erstellen einer neuen Datei wird ein Fehler "Berechtigung verweigert" ausgelöst. Geben Sie also einfach den -Z-Benutzer

an
# 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)                           = ?

Sie können das Strace-Ergebnis oben sehen, tcpdump hat die Privilegien in Benutzer und Gruppe pcap (77) abgelegt.

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

Von der tcpdump-Manpage, -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 ]

Spezifizieren Sie einen bestimmten Benutzer mit -Z Benutzer

# 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     

Lösung 2:

Versuchen Sie, den Befehl von /tmp aus auszuführen oder jedes andere weltweit beschreibbare Verzeichnis. Ich erinnere mich an Probleme mit tcpdump in Verzeichnissen, die nicht weltweit beschreibbar sind, ich habe keine Ahnung warum -:)

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

Lösung 3:

Ihr tcpdump gibt Rechte an den Benutzer ‚tcpdump‘ ab, überprüfen Sie die Manpage („-Z tcpdump“ ist die Standardeinstellung, und der Benutzer tcpdump hat keine Berechtigungen zum Schreiben in das Homedir von root). Wie Daniel T. Ihnen gesagt hat, führen Sie Ihr Capture in einem Verzeichnis aus, in dem alle schreiben können, wie /tmp, oder zumindest in einem Verzeichnis, in dem Sie entweder dem Benutzer oder der Gruppe 'tcpdump' Schreibrechte gegeben haben.

Lösung 4:

Als ich auf diese Permission denied stieß Problem stellte sich heraus, dass ich einen .cap gesetzt hatte Erweiterung der Datei anstelle von .pcap . Wie RichL in den Kommentaren betonte, AppArmor-Profil auf Ubuntu /etc/apparmor.d/usr.sbin.tcpdump verursacht dies.

  # 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

Lösung 5:

Läuft SELinux? Überprüfen Sie, indem Sie Folgendes eingeben:terminal:

/usr/sbin/getenforce

Wenn dort Enforcing steht , können Sie versuchen, SELinux zu deaktivieren und tcpdump erneut zu versuchen, um zu sehen, ob SE es gestoppt hat.


Linux
  1. pip freeze gibt einen Fehler zurück:Permission denied:hg

  2. Git-Pull-Berechtigung Linux verweigert?

  3. Berechtigung beim Klonen des Git-Repositorys verweigert

  4. docker.sock-Berechtigung verweigert

  5. Mount-Fehler (13):Berechtigung mit Windows-Freigabe verweigert

Sudo-Berechtigung verweigert, aber Su erteilt Berechtigung?

Fehlerbehebung bei Problemen mit verweigerten Docker-Zugriffen

Mount-CIFS-Berechtigung unter Linux verweigert – behoben!

Einhängefehler 13 =Berechtigung verweigert

„Berechtigung verweigert“ für eine Datei, die ich besitze?

POSTFIX main.cf-Berechtigung verweigert