GNU/Linux >> Tutoriales Linux >  >> Linux

tcpdump:out.pcap:Permiso denegado

Solución 1:

probé en Centos 5, sigue siendo el mismo incluso en tmp o en la carpeta raíz. desde la página de manual de tcpdump, los privilegios se eliminan cuando se usan con la opción -Z (habilitada de forma predeterminada) antes de abrir el primer archivo guardado. debido a que especificó "-C 1", el permiso denegado se debe a que el tamaño del archivo ya alcanzó 1, y cuando se crea un nuevo archivo, generará un error de permiso denegado. así que solo especifica el usuario -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)                           = ?

puede ver el resultado de strace arriba, tcpdump eliminó los privilegios en el usuario y el grupo pcap (77).

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

Desde la página man de 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 ]

Especifique un usuario específico con -Z usuario

# 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     

Solución 2:

Intente ejecutar el comando desde /tmp o cualquier otro directorio mundial grabable. Recuerdo haber tenido problemas con tcpdump en directorios en los que no se puede escribir en todo el mundo, no tengo ni idea de por qué -:)

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

Solución 3:

Su tcpdump está perdiendo privilegios para el usuario 'tcpdump', verifique la página del manual ("-Z tcpdump" es el valor predeterminado, y el usuario tcpdump no tiene permisos para escribir en el directorio principal de la raíz). Como le dijo Daniel T., ejecute su captura en un directorio de escritura universal como /tmp, o al menos en un directorio en el que haya otorgado permisos de escritura al usuario o al grupo 'tcpdump'.

Solución 4:

Cuando me encontré con este Permission denied resultó ser que estaba poniendo un .cap extensión en el archivo en lugar de .pcap . Como señaló RichL en los comentarios, el perfil de AppArmor en Ubuntu /etc/apparmor.d/usr.sbin.tcpdump causa esto.

  # 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

Solución 5:

¿Se está ejecutando SELinux? Comprueba escribiendo es terminal:

/usr/sbin/getenforce

Si dice Enforcing , puede intentar deshabilitar SELinux e intentar tcpdump nuevamente, para ver si SE lo estaba deteniendo.


Linux
  1. pip freeze devuelve un error:Permiso denegado:hg

  2. ¿Permiso de Sudo denegado pero Su otorga permiso?

  3. -bash:./configure:¿Permiso denegado?

  4. un montón de (Permiso denegado) en catalina.out

  5. Git no puede crear el permiso de archivo denegado

Solución de problemas de permiso de Docker denegado

Permiso de montaje CIFS denegado en Linux - ¡Arreglado!

permiso docker.sock denegado

permiso denegado en el archivo authorized_key

error de montaje (13):permiso denegado con el recurso compartido de Windows

Permiso POSTFIX main.cf denegado