[英]Escaping from sudo within a script
我有一个脚本,将另一个脚本称为sudo。 从第二个剧本中,我希望能够到没有 sudo权限运行的另一个进程(在讨论的过程是brew
,不与发挥很好sudo
)。
这是有问题的代码:
scriptA.sh:
#!/bin/sh
sudo ./scriptB.sh
scriptB.sh:
#!/bin/sh
# This runs as sudo, but I need it to run as a regular user e.g. `username`
brew update
我尝试了su -c "brew update" -s /bin/sh username
,但是OS X的su
不允许c
标志。
再次使用sudo
:
sudo -u username brew update
超级用户可以使用su
命令成为任何其他用户。 所以
su otheruser -c "command to execute"
OS X su
确实允许使用-c
选项。 您只需将其放在用户名之后。 从手册页:
如果在命令行上提供了可选的args,则将它们传递到目标登录名的登录shell。 请注意,目标登录名之前的所有命令行参数均由su本身处理,目标登录名之后的所有内容都传递给登录shell。
在这种情况下, -c
不是su
命令的选项,而是登录shell的选项。 而且大多数shell都使用-c
选项来指定要执行的命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.