Ping
為什麼 ping 需要 setuid 權限?
我正在通過執行以下命令查看系統上具有 setuid 權限的一些文件:
sudo find / -perm -4000
我注意到它
/bin/ping
出現在列表中。誰能解釋為什麼 ping 需要 setuid 權限?
為了
ping
工作,它需要能夠創建一個原始網路套接字。這通常是特權操作。在現代 Linux 系統上,這可以通過“功能”授予
例如在 CentOS 7 上:
$ ls -l /bin/ping -rwxr-xr-x 1 root root 62088 Nov 7 2016 /bin/ping* $ getcap /bin/ping /bin/ping = cap_net_admin,cap_net_raw+p
在 Debian 9.1(拉伸)上:
$ getcap /bin/ping /bin/ping = cap_net_raw+ep
功能是一種更新的方式來執行更細粒度的權限提升形式,而無需授予 setuid 程序授予的整個“root”權限。
如果沒有功能,則
ping
需要 setuid root,才能創建原始網路套接字。