在bash shell脚本中切换用户

时间:2016-10-24 12:02:32

标签: linux bash shell

我正在使用Solaris SunOS 5.10,我需要在执行bash shell脚本时切换用户,提供带有用户名和密码的su或sudo我已尝试过以下命令

    echo -e "mqm\n" | sudo -S "command"

但是我没有得到这个命令将如何知道我想切换到的用户以及当我尝试它时说错了密码

真正想做的是在我的脚本中切换用户然后在切换后运行anther脚本,因为第一个用户没有运行mq命令的权限

谢谢

1 个答案:

答案 0 :(得分:1)

您可以授予用户运行某些命令的权限,而无需使用sudo密码。有关详细信息,请参阅man 5 sudoers

以下是用户名为" user10"的用户的示例sudoers条目:

user10 ALL=NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get -u upgrade

这将允许用户运行" / usr / bin / apt-get update"和" / usr / bin / apt-get -u upgrade"以root身份而不需要密码。

PS Sudo没有从STDIN读取密码,这就是管道密码不起作用的原因。它直接从伪终端读取它。

使用set-UID位有一个不同的解决方案。很难让它像上面给出的sudo解决方案一样安全。

创建一个拥有足够访问权限的用户拥有的二进制文件,以正确运行该程序。 设置二进制(chmod u+s program_name)的setuid位。 然后,当另一个用户执行此二进制文件时,它将作为文件的所有者运行,而不是作为执行它的用户运行。