mad*_*ddy 2 users sudo privileges uid
我想重定向(开关)一个执行对其他用户,而不是root
同时使用sudo
。
示例:sudo startup.sh
将执行startup.sh
as root
,但需要将其作为另一个用户执行,例如tomcat
。
只是为了这个特定的执行,我只希望他们执行他们正在使用的方式,即,sudo startup.sh
但在后台(引擎盖下)我希望将其更改为,sudo su - tomcat startup.sh
因为我不能告诉用户不要使用sudo -su or sudo -u
.
我怎样才能做到这一点?
您不能轻松地按照您的要求执行操作(即sudo startup.sh
,以指定的非 root 用户身份运行)。但是,您可以做的是以下一项或两项
告诉用户使用sudo -u tomcat /path/to/startup.sh
而不是sudo /path/to/startup.sh
,无论如何都不允许使用后者
将此行添加到您的sudoers
(请记住visudo
),以便tomcat
这是目标用户帐户。ALL
如果只允许某些人作为目标用户运行脚本,则将第一个更改为用户列表
ALL ALL=(tomcat) /path/to/startup.sh
Run Code Online (Sandbox Code Playgroud)
使脚本执行sudo
,并禁止sudo -u root
脚本。你需要#1(上面)。确保tomcat
此处与tomcat
in匹配sudoers
。
#!/bin/bash
#
targetUser=tomcat
if [[ $UID -ne "$(id -u "$targetUser")" ]]
then
exec sudo -u "$targetUser" "$0" "$@"
exit 1
fi
# ...script continues but as the $targetUser...
Run Code Online (Sandbox Code Playgroud)
这允许人们运行/path/to/startup.sh
(甚至只是startup.sh
如果它在 中$PATH
)而不必担心sudo
零件。