此命令在 OpenSuSE 11.4 上失败:
root@host# sudo -S -u "coreapp_customer1_d" -g "coreapp_customer1_d" /bin/bash -l -c "mkdir -p /home/coreapp_customer1_d/.ssh"
并附上以下信息:
Sorry, user root is not allowed to execute
'/bin/bash -l -c mkdir -p /home/coreapp_customer1_d/.ssh'
as coreapp_customer1_d:coreapp_customer1_d
on workdevel114.
但它可以在 OpenSuSE 12.3 上运行。
我比较了两个系统的 /etc/sudoers 文件,它们是相同的(除了注释行)。
答案1
我自己也遇到过这个问题,可以用以下方法解决
root ALL=(ALL:ALL) ALL
在visudo
。重要的部分是:ALL
。sudoers 手册页说:
在以下示例中,用户 tcm 可以运行使用拨号器组访问调制解调器设备文件的命令。
tcm boulder = (:dialer)/usr/bin/tip,/usr/bin/cu,\ /usr/local/bin/minicom
请注意,在此示例中,仅设置组,命令仍以用户 tcm 身份运行。例如
$ sudo -g 拨号器 /usr/bin/cu
在我的上下文中,使用-g
是重点,因为我想知道一个组可以写入什么:
sudo -u nobody -g some_group find . -writable 2> /dev/null > /tmp/some_group_writable.txt
答案2
我找到了一个可以解决我自己问题的方法:
在我的上下文中,-g 选项(组)是不需要的。如果在不使用该选项的情况下调用该命令,它将在旧发行版上运行。