在 shell 脚本中使用 sudo

在 shell 脚本中使用 sudo

我可以使用命令访问另一个用户的帐户:

sudo su - other_user

我没有输入密码。看来这是 sudo 允许我执行的唯一命令。

之后,我可以执行多个任务,例如文件复制和服务器重启。我想自动执行这些任务,以便我可以执行一个脚本,该脚本将获得 other_user 的权限并执行其必须执行的操作。但是,sudo会生成另一个 shell,直到我退出它才会阻止脚本执行。是否可以控制该 shell 并从我的脚本向其发送命令?

更新2011-11-01:

我尝试了答案中的建议和这两个命令:

sudo -u other_user whoami
sudo su - other_user -c "whoami"

询问密码。

不幸的是,我找不到sudoers查看设置。这种情况让我有点恼火,因为我有权限做我想做的事情,但却不能自动完成。

答案1

使用命令-c的选项su以另一个用户身份执行命令。
如果需要,您还可以在脚本或 shell 中使用这些命令的输出。

例子:

[infeligo@server ~] cat /home/kenny/secretfile.txt  
cat: /home/kenny/secretfile.txt: Permission denied  
[infeligo@server ~] sudo su - kenny -c "cat /home/kenny/secretfile.txt"  
Dear diary: Today was a boring day at work. Good thing it's a friday!  
[infeligo@server ~]

答案2

没有必要使用 su。

$ sudo -u other_user whoami
other_user

相关内容