如何以没有密码的其他用户身份运行脚本?

use*_*171 139 linux bash sudo su sudoers

我有必须以user2身份运行的script.sh.但是,此脚本只能在我的应用程序中的user1下运行.

我想要运行以下命令:

su user2 -C script.sh
Run Code Online (Sandbox Code Playgroud)

但能够无密码运行.

我也希望这是非常严格的,因为在user1中只能在user2下运行script.sh而不是其他任何东西.

我试过用sudoers文件做这件事,经过几个小时的尝试后就无休止地混淆了.

如果有人可以提供一个如何实现这一点的明确示例(而不是像使用sudoers那样的通用),那将非常感激.

小智 191

试试跑步:

su -c "Your command right here" -s /bin/sh username
Run Code Online (Sandbox Code Playgroud)

这将以用户名的形式运行命令,因为您具有作为该用户的sudo权限.

  • 它像普通用户一样具有完整的sudo权限,如下所示:`sudo su -c"你的命令就在这里"-s/bin/sh otheruser` (16认同)
  • 对于任何mac用户来说,只是一个注释,显然语法有点不同:`su username -c"command"`. (5认同)
  • 如果`username`(或问题中的`user2`)本身有密码,则不允许跳过提示。另一个答案是:用户 1 和用户 2 都不需要密码。 (3认同)

pyr*_*ope 117

打电话visudo并添加:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
Run Code Online (Sandbox Code Playgroud)

命令路径必须是绝对的!然后sudo -u user2 /home/user2/bin/test.shuser1shell 调用.完成.

  • 在Ubuntu帮助上有一个[sudoers的好描述](https://help.ubuntu.com/community/Sudoers)格式.sudoers的手册页是丑陋的:( (2认同)