通过sudo用户执行shell脚本的方法

3

有人能给出通过sudo用户运行shell脚本的例子吗?

我尝试了以下命令:

sudo /usr/local/sbin/deploy | ./tmp/cp1.sh

上述脚本被作为普通用户而非sudo用户执行。

2个回答

6

使用这个命令,deploy脚本将在root用户下执行,然而./tmp/cp1.sh脚本将在当前shell下以您当前的权限运行。为了避免这种情况,您可以在两者前面加上sudo:

sudo /usr/local/sbin/deploy | sudo ./tmp/cp1.sh

或者你可以从sudo中生成一个shell,这样shell就已经以root身份运行:

sudo sh -c '/usr/local/sbin/deploy | ./tmp/cp1.sh'

2
请注意,当您使用sudo生成一个shell时,通过提供用户密码,您刚刚创建了一个root shell,这就是为什么在安全系统上不应启用它的原因。 - Dmitri

0
问题在于,当你想这样做的时候,你需要有sudo密码并且在sudoers文件中,否则它将失败。 但是你可以尝试使用gksudo(sudo的图形版本),这样当它被调用时会要求输入密码。

你好,感谢回复...有没有其他方法可以完成这个任务而不需要输入密码... - Ramesh.T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接