有没有办法以另一个用户的权限(自动)执行 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