以前的事情了,觉得有必要记上。
有段时间使用ping命令报错
|
|
但是使用sudo
却可以运作,很好奇。使用ls -l
发觉ping的命令没有suid标识,以为是没有suid的原因。但是随之发现自已一台vps的ping程序也是没有suid标识的,却能以普通用户正常运行不报错。
后来发现执行如下语句之后就能以普通用户正常运行ping了
|
|
Capabilities
来自ArchWiki的中文描述
能力(capability) (POSIX 1003.1e, capabilities(7))用更小的粒度控制超级管理员权限,可以避免使用 root 权限。软件开发者应该为二进制文件赋予最小权限,而不是使用强大的setuid
查询特定程序的capabilities使用getcap
,比如
|
|
设定则是setcap
,如
|
|
至于具体有哪些,以及怎么用,参照man capabilities
和man cap_from_text
先记录,以备以后之需。
参考资料
为什么桌面版 Linux 运行 ping 程序,不需要 root 权限? - 知乎