`sudo -u user script` 甚至无法访问 /bin/sleep

`sudo -u user script` 甚至无法访问 /bin/sleep

运行脚本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.dnoexec

在 中!noexec!是一个否定:这会禁用该noexec选项。

相关内容