tcpdump: out.pcap: Quyền bị từ chối


14
[root@localhost ~]# cat /etc/issue
Fedora release 17 (Beefy Miracle)
Kernel \r on an \m (\l)
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.6.10-2.fc17.i686 #1 SMP Tue Dec 11 18:33:15 UTC 2012 i686 i686 i386 GNU/Linux
[root@localhost ~]# tcpdump -i p3p1 -n -w out.pcap -C 16
tcpdump: out.pcap: Permission denied

Tại sao tôi nhận được lỗi ??

Tôi nên làm gì?

Câu trả lời:


21

tôi đã thử trên Centos 5, vẫn như vậy ngay cả trên thư mục gốc hoặc tmp. từ trang man tcpdump, các đặc quyền sẽ bị hủy khi được sử dụng với tùy chọn -Z (được bật theo mặc định) trước khi mở tệp lưu trữ đầu tiên. bởi vì bạn đã chỉ định "-C 1", quyền bị từ chối xảy ra do kích thước tệp đã đạt 1 và khi tạo tệp mới, nó sẽ đưa ra lỗi từ chối cấp phép. vì vậy chỉ cần xác định người dùng -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)                           = ?

bạn có thể thấy kết quả strace ở trên, tcpdump đã bỏ các đặc quyền vào pcap người dùng và nhóm (77).

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

Từ trang người đàn ông 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 ]

Chỉ định người dùng cụ thể với người dùng -Z

# 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     

8

Cố gắng chạy lệnh từ /tmphoặc bất kỳ thư mục có thể ghi thế giới khác. Tôi nhớ có vấn đề với tcpdump trong các thư mục không thể ghi được trên thế giới, tôi không biết tại sao - :)

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

5

Tcpdump của bạn đang bỏ đặc quyền cho người dùng 'tcpdump', kiểm tra trang man ("-Z tcpdump" là mặc định và người dùng tcpdump không có quyền để viết trong homedir của root). Như Daniel T. đã nói với bạn, hãy chạy bản chụp của bạn trong một thư mục có thể ghi trên thế giới như / tmp hoặc ít nhất là một thư mục mà bạn đã cấp cho người dùng hoặc nhóm 'tcpdump' quyền ghi.


5

Khi tôi gặp Permission deniedvấn đề này, hóa ra là tôi đã đặt một .capphần mở rộng trên tệp thay vì .pcap. Như RichL đã chỉ ra trong các bình luận, hồ sơ AppArmor trên Ubuntu /etc/apparmor.d/usr.sbin.tcpdumpgây ra điều này.

  # 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
Hóa ra hồ sơ AppArmor cho Ubuntu (/etc/apparmor.d/usr.sbin.tcpdump) chỉ cho phép nhị phân tcpdump ghi vào các tệp có phần mở rộng .pcap. AppArmor được bật theo mặc định trong Ubuntu, điều này khiến tôi bị loại.
Giàu L

3

Là Selinux đang chạy? Kiểm tra bằng cách gõ là thiết bị đầu cuối:

/usr/sbin/getenforce

Nếu nó nói Enforcing, bạn có thể thử vô hiệu hóa SELinux và thử lại tcpdump, để xem SE có dừng nó không.


@Hauke ​​Laging Từ đầu ra bash của anh ta, có vẻ như anh ta đang chạy lệnh từ thư mục gốc của root.
mako_reactor

1

Thông báo lỗi không có ý nghĩa nhiều với tôi. SELinux là một lời giải thích có thể, mặc dù. Bạn có thể có cái nhìn cận cảnh hơn về những gì đang xảy ra bằng cách bắt đầu tcpdump thông qua strace:

strace tcpdump -i p3p1 -n -w out.pcap -C 16

1

bạn nên thay đổi chế độ của thư mục mà bạn đang chạy tcpdump.

chmod 777

Bây giờ hãy chạy lệnh tcpdump -vv -i any -s0 -w file_name.pcap

Nó nên hoạt động ... !!


1
Đối với các giá trị nhất định của 'công việc'. Bây giờ bạn có một thư mục bao gồm chụp gói có thể chứa dữ liệu nhạy cảm bị lộ bên trong, bất kỳ ai có quyền truy cập vào máy chủ đều có thể đọc được. "Này bác sĩ, tôi có một hangnail" không nên được trả lời bằng cắt cụt, cho dù điều đó giải quyết vấn đề hangnail hoàn toàn như thế nào.
DopeGhoti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.