在 Bash 脚本中降低权限

在 Bash 脚本中降低权限

是否可以通过 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

相关内容