Tại sao ping yêu cầu bit setuid?


Câu trả lời:


15

ping cần tạo và nhận các gói ICMP và thường được thực hiện bằng cách sử dụng "socket thô" - một tính năng giới hạn ở root (cap_net_raw) vì nó cũng có thể bị lạm dụng để đánh hơi và phá vỡ lưu lượng khác trên hệ thống.

Nhiều bản phân phối bây giờ chỉ cung cấp cho ping đặc quyền cap_net_raw (xem trang capabilities(7)getcap(8)hướng dẫn sử dụng) thay vì root setuid đầy đủ. Tuy nhiên, điều này cần cả kernel và hệ thống tập tin để hỗ trợ các thuộc tính mở rộng (xattrs) và một số hệ thống "tối thiểu" sẽ vô hiệu hóa các thuộc tính đó.

Ngoài ra, gần đây, một loại ổ cắm "ICMP" đặc biệt đã được thêm vào, cho phép chỉ gửi tin nhắn ICMP Echo mà không có bất kỳ đặc quyền bổ sung nào. Lệnh ping chưa được cập nhật cho nó.


tôi nghĩ khả năng (7) không sử dụng xattrs.
ggg

2
@ggg: Nhưng nó làm. Hãy thử getfattr --dump --match=.* /sbin/ping.
dùng1686
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.