正常需要一个执行操作的时候,如果需要 root 权限,我们往往加上 sudo,但是 sudo 给予程序太高的权限,除了我们执行我们需要的操作,可能还能执行其他的事情。
在伟大的 Linux 中,他是有这样的设计,能力集。
简单例子
$ whoami # 非 root 用户
jake
$ which date
/usr/bin/date
$ cp /usr/bin/date . # 将系统的 date 命令复制到当前文件夹
$ ./date #
Wed Mar 2 13:43:51 CST 2022
$ ./date -s "2018-08-08 20:08" # 设置系统时间没有权限
./date: cannot set date: Operation not permitted
Wed Aug 8 20:08:00 CST 2018
$ sudo setcap "cap_sys_time=pe" ./date # 设置能力集
$ getcap ./date # 查看能力集
./date = cap_sys_time+ep
$ ./date -s "2018-08-08 20:08" # 设置系统时间成功
Wed Aug 8 20:08:00 CST 2018
$ ./date
Wed Aug 8 20:08:01 CST 2018
只需要给程序配置一个合理的能力集他就可以正常工作,不需要给予 sudo。
网友评论