是否可以通过 bash 脚本调用以 sudo 身份运行的另一个具有普通用户权限的脚本?
另一种选择是作为普通用户运行特定命令,但整个脚本将以超级用户身份运行。
PS 我想要做的是从必须以 sudo 身份运行的安装脚本中自定义启动器。
答案1
有多种方法。如果你只需要执行一个不带任何参数的命令,你可以使用sudo -u <username>
#!/bin/bash
whoami
sudo -u otheruser whoami
whoami
但是如果您需要执行多个命令、带有参数的命令或其中带有空格的任何内容,则该方法不起作用。
#!/bin/bash
ls /some/dir
sudo -u otheruser ls /some/dir # not working as expected
ls /some/dir
引用这样的命令也无济于事sudo -u otheruser "ls /some/dir"
。
在这种情况下,你可以直接使用su
#!/bin/bash
whoami; ls /some/dir
su otheruser -c "whoami; ls /some/dir"
whoami; ls /some/dir