如何使用sudo和密码在shell脚本中切换用户

时间:2016-02-24 13:49:32

标签: bash shell unix ksh

我正在编写一个脚本,我需要更改用户,我有sudo访问权限,我尝试了类似下面的内容,但没有成功。

echo $passwd | sudo -S su - oracle

我甚至尝试过安装ssshpass,但也没有成功。这是否可能,或者我是否需要安装其他东西才能使其正常工作?

任何想法

1 个答案:

答案 0 :(得分:2)

如果您将使用root帐户运行脚本,则可以

message="The cake is a lie"
su username -c 'echo $message'

如果您将与其他用户一起运行脚本,则有两种方法可以执行此操作,

1)配置pam如下所示当你运行su user2 -c'命令'用user1登录后,linux不会要求输入密码。

在/etc/pam.d/su中的pam_rootok.so行下方添加以下行:

auth       [success=ignore default=1] pam_succeed_if.so user = user2
auth       sufficient   pam_succeed_if.so use_uid user = user1

第一行确保目标用户是user2。如果是,则如果主叫用户是user1,则下一行将接受控制并成功授权。

如果目标用户是其他用户,则将忽略第二行,并执行通常的身份验证步骤。

2)使用expect here

编写脚本