如何切换到shell脚本中的不同用户并使用新用户执行某些命令?

时间:2016-11-18 02:39:48

标签: bash shell unix aix

我目前使用用户“USER1”登录“SERVER1”,我已将我的bash脚本放在此处。此脚本必须在同一服务器“SERVER1”上切换到不同的用户“USER2”,并使用新的切换用户执行一些命令。

注意:USER1不是root用户,因此我需要在脚本中指定USER2密码,但是采用加密格式。

请帮我实现这个目标..!

#!/bin/bash

command1
command2
.
.
...

echo "PASSWORD" | su USER2 << EOF
command1
command2
.
.
...

请注意,我不想在此更改任何配置文件来实现此目的。

1 个答案:

答案 0 :(得分:4)

在脚本中存储密码或尝试将密码流式传输到su不是一个好主意。更好的方法是使用sudo

由于您在没有密码的情况下允许USER1充当USER2,因此您可以设置/etc/sudoers,如下所示:

USER1 localhost=(USER2) NOPASSWD: ALL

然后您可以按如下方式调用sudo作为USER1:

sudo -u USER2 bash

如果要将其锁定一点,可以指定允许用户执行的脚本。 /etc/sudoers中的行可能如下所示:

USER1 localhost=(USER2) NOPASSWD: /home/USER1/setup.sh

你会打电话给:

sudo -u USER2 /home/USER1/setup.sh

请注意,在最后一个示例中,我认为USER2需要在/etc/passwd中配置一个实际的shell(即NOT /bin/false)。