2013-08-05 6 views
6

Ich muss die Dateigröße begrenzen, wenn ich "tcpdump -w 1.pcap" ausführen. Ich versuche, dies mit dem Schlüssel "-C" zu tun, aber wenn ich es addiere, erhalte ich den Fehler "Erlaubnis verweigert". Also:"tcpdump -w 1.pcap" funktioniert, aber "tcpdump-C 100 -w 1.pcap" - Berechtigung verweigert

> sudo tcpdump -w 1.pcap 
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 
^C821 packets captured 
847 packets received by filter 
24 packets dropped by kernel 

Aber:

> sudo tcpdump -C 100 -w 1.pcap 
tcpdump: 1.pcap: Permission denied 

ich den Befehl aus meinem Home-Verzeichnis laufen und ich versuchte, die Datei zu entfernen und erstellen, bevor Sie den Befehl mit unterschiedlichen Berechtigungen ausgeführt wird, schließlich habe ich:

-rwxrwxrwx 1 root root 0 Aug 5 10:30 1.pcap 

oder

-rwxrwxrwx 1 fd8 users 0 Aug 5 10:30 1.pcap 

Können Sie mir vorschlagen, warum ich im zweiten Fall nicht in die Datei schreiben kann?

+0

Wenn Sie ausgeführt 'sudo tcpdump -C 100 -w 1.pcap' war' 1.pcap' bereits mit dem Eigentum als root: root? – Varun

+0

@VarunLakkur Da er es mit sudo ausführt, sollten Berechtigungen keine Rolle spielen. – Barmar

+0

'sudoers' Konfiguration kann bestimmte Befehle und Optionen angeben, die beim Ausführen von' sudo' erlaubt sind. Könnte das hier eine Möglichkeit sein? – Varun

Antwort

2

erlebte ich ähnliche Probleme, wenn ich aus der Datei wie

, zu lesen versucht
tcpdump -r example.cap 'icmp[icmptype] = icmp-echo' 

Für mich AppArmor das Problem verursacht ich von ‚Durchsetzung‘ -Modus wechseln musste auf ‚tcpdump‘ Modus zu ‚beschweren‘. Führen Sie den folgenden Befehl als root:

aa-complain /usr/sbin/tcpdump 
+2

Vielen Dank für Ihre Antwort!Aber AppArmor wird für Ubuntu verwendet, und ich habe RHEL auf dem Server. Die Antwort war, den Schlüssel "-Z Root" für tcpdump zu verwenden. Aber wir wissen immer noch nicht, warum sich tcpdump so verhält, weil SELinux auf dem Server ausgeschaltet ist. – fd8

+0

Es könnte einfach der Fall der Deaktivierung des AppArmor-Profils sein (da der Beschwerde-Modus ein Sicherheitsproblem sein kann) mit: 'sudo apparmor_parser -R/etc/apparmor.d/usr.sbin.tcpdump' – douglaslps

4

erlebte ich ähnliche Probleme auf Ubuntu 12.04 LTS und meinem Fall wurde wie unten Verfahren festgelegt.

sudo apt-get install apparmor-utils 

Der Befehl "aa-moken", auf den von "user2704275" verwiesen wird, ist in diesem Paket enthalten.

Wenn Ihre Umgebung RedHat/CentOS Distribution ist, können Sie den gleichen Befehl von yum.

sudo aa-complain /usr/sbin/tcpdump 

Dies wird den AppArmor-Modus von tcpdump von "erzwingen" auf "beschweren" ändern. Sie können den AppArmor-Status in/sys/kernel/security/apparmor/profiles überprüfen.

Dann kann ich Erfolg tcpdump mit Sudo bekommen.

Nachdem Sie tcpdump aus Sicherheitsgründen erhalten haben, können Sie den Status von apparmor in den vorherigen Modus zurücksetzen.

Grüße.

8

Sie müssen -Z root tun. Lesen Sie die man-Seite:

-Z  Drops privileges (if root) and changes user ID to user and the group ID to the primary group of user. 

      This behavior is enabled by default (-Z tcpdump), and can be disabled by -Z root. 
+0

Ja, ich habe den Mann gelesen Seite, aber ich kann immer noch nicht verstehen, warum "tcpdump -w 1.pcap" funktioniert ohne -Z, und "sudo tcpdump-C 100 -w 1.pcap" nicht. – fd8

+0

Standardmäßig schreibt tcpdump in RHEL dem Benutzer "tcpdump" beim Schreiben der Datei "Berechtigungen", was bedeutet, dass die Datei als Nicht-Root-Benutzer gespeichert wird. In RHEL sollte der Benutzer "tcpdump" sein. Sie können also das Problem mit 'chmod 777/path/to/logdir /' oder sogar mit 'chown tcpdump/path/to/logdir' umgehen. Wenn Ihr Protokollverzeichnis einem bestimmten Benutzer gehört, können Sie '-Z' verwenden, um Dateien als diesen Benutzer zu speichern, aber' -Z Root 'können Sie Dateien überall schreiben. – ghoti

+2

Oh, und "weil es so funktioniert" ist es eine schreckliche Sache, eine StackOverflow-Antwort einzugeben. :-) – ghoti