在另一个用户的权限下自动执行 bash 脚本

在另一个用户的权限下自动执行 bash 脚本

有没有办法以另一个用户的权限(自动)执行 bash 脚本?我认为“sudo”是正确的方法,但我不知道如何自动化该过程。

例如,我想运行类似这样的程序(用户“bla”在“blub”下运行一个进程):

sudo <the user under which i want to run the process> <path to script>

答案1

所以我理解得对吗?

用户“bla”想要以用户“blub”的身份运行命令?

然后像这样的事情可能会起作用:

sudo -u blub /path/to/command

如果您需要在不要求输入密码的情况下完成此操作,请将以下行添加到 /etc/sudoers(通过 visudo 命令):

bla    ALL=(blub) NOPASSWD: /path/to/command

答案2

您可以使用 SUID 和 SGID 位权限(请注意,这可能真的很危险

将执行此文件的权限授予执行脚本的用户所属的组,并通过 SUID 设置运行此脚本的任何人都以拥有该脚本的用户身份运行它

sudo chmod 4751 /path/to/my/file
sudo chgrp somegroup /path/to/my/file

然后,你只需要执行脚本即可用户B谁是...的成员某组它将以如下方式执行用户A某组

ls -l /path/to/my/file
-rwsr-xr-- userA somegroup /path/to/my/file

答案3

我想从 cgi 运行一个脚本。我的脚本生成一些目录和文件,我需要它们由 nagios 用户拥有。这就是我所做的:

edit /etc/sudoers using visudo command
apache   ALL=(nagios) NOPASSWD: /usr/local/nagios/libexec/pangoo_lib/change_state_simulation

从我的 cgi(apache 用户)运行脚本:

sudo -u nagios /usr/local/nagios/libexec/pangoo_lib/change_state_simulation

相关内容