![`sudo -u user script` 甚至无法访问 /bin/sleep](https://linux22.com/image/7730/%60sudo%20-u%20user%20script%60%20%E7%94%9A%E8%87%B3%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%20%2Fbin%2Fsleep.png)
运行脚本bla
时
sudo -u otheruser ./bla
我得到的输出表明该脚本已运行,因此没有可用的外部命令:
otheruser
./bla: line 3: /bin/sleep: Permission denied
./bla: line 4: /bin/sleep: Permission denied
脚本本身很简单:
#!/bin/bash
echo $USER
/bin/sleep 1
sleep 1
最后一条错误消息甚至似乎表明它实际上并不是正在运行的 bash,而是一个没有 sleep 作为内置命令的 shell,否则它不会抱怨/bin/sleep
.
阅读文档,我发现 NOEXEC,这可能符合要求,但 /etc/sudoers 没有暗示 NOEXEC。
我的 NOEXEC 方向正确吗?如果是,如果它不存在/etc/sudoers
并且sudo -V
也没有任何提示,为什么它会处于活动状态?
编辑:按照评论中的要求,输出sudo -l -l
:
Matching Defaults entries for xxxxx on this host:
always_set_home, env_reset, env_keep="LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE", targetpw, !authenticate, noexec, syslog=local5, env_reset,
always_set_home
User xxxxx may run the following commands on this host:
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
LDAP Role: CENSORED
RunAsUsers: root
Options: !noexec
Commands:
/bin/su - solr
LDAP Role: T-SOLRSEARCH
RunAsUsers: root
Options: !noexec
Commands:
ALL
好的,这里我们有一个!noexec
. '!' 是怎么回事?
答案1
Matching Defaults entries for xxxxx on this host: …, noexec, …
允许用户xxxxx
运行任何程序,但不允许该程序运行任何其他程序。以 root 身份运行命令时存在例外情况。作为安全限制,这是没有意义的:如果你可以运行任何然后您可以运行程序passwd
并更改 root 帐户的密码;如果您可以以 root 身份运行程序,那么您就可以以任何用户身份运行程序。所以这是一个错误配置。
在包含该选项的文件Defaults
中/etc/sudoers
或文件中查找行。/etc/sudoers.d
noexec
在 中!noexec
,!
是一个否定:这会禁用该noexec
选项。