逃避脚本中的sudo

时间:2016-05-27 16:03:25

标签: bash unix homebrew

我有一个脚本将另一个脚本称为sudo。在第二个脚本中,我希望能够运行另一个没有 sudo权限的进程(有问题的进程是brew,它与{{1}不能很好地协同工作})。

以下是有问题的代码:

scriptA.sh:

sudo

scriptB.sh:

#!/bin/sh

sudo ./scriptB.sh

我尝试了#!/bin/sh # This runs as sudo, but I need it to run as a regular user e.g. `username` brew update ,但OS X su -c "brew update" -s /bin/sh username不允许su标记。

2 个答案:

答案 0 :(得分:4)

再次使用sudo

sudo -u username brew update

答案 1 :(得分:0)

超级用户可以使用su命令成为任何其他用户。所以

su otheruser -c "command to execute"

OS X su允许使用-c选项。你只需要在用户名之后加上它。从手册页:

  

如果在命令行上提供了可选的args,它们将被传递到目标登录的登录shell。请注意,目标登录名之前的所有命令行参数都由su本身处理,目标登录名之后的所有内容都将传递给        登录shell。

在这种情况下,-c不是su命令的选项,它是登录shell的一个选项。大多数shell都使用-c选项来指定要执行的命令。