Ping

為什麼 ping 需要 setuid 權限?

  • July 30, 2017

我正在通過執行以下命令查看系統上具有 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,才能創建原始網路套接字。

引用自:https://unix.stackexchange.com/questions/382771