我正在编写一个脚本,我需要更改用户,我有sudo访问权限,我尝试了类似下面的内容,但没有成功。
echo $passwd | sudo -S su - oracle
我甚至尝试过安装ssshpass
,但也没有成功。这是否可能,或者我是否需要安装其他东西才能使其正常工作?
任何想法
答案 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
编写脚本