我目前使用用户“USER1”登录“SERVER1”,我已将我的bash脚本放在此处。此脚本必须在同一服务器“SERVER1”上切换到不同的用户“USER2”,并使用新的切换用户执行一些命令。
注意:USER1不是root用户,因此我需要在脚本中指定USER2密码,但是采用加密格式。
请帮我实现这个目标..!
#!/bin/bash
command1
command2
.
.
...
echo "PASSWORD" | su USER2 << EOF
command1
command2
.
.
...
请注意,我不想在此更改任何配置文件来实现此目的。
答案 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
)。