当我运行这样的脚本时:
ssh -t [email protected] '/tmp/somescript.sh'
其中脚本定义如下:
#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
su myuser - # <------- NOTICE THIS ! ! ! !
rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm
注意以上苏命令。
如果我注释掉苏命令,脚本远程运行,然后我的 shell 提示符返回到我来自的地方(与我运行上面的 ssh 命令的同一服务器)
但是保留上面列出的脚本会导致脚本成功完成,但shell 提示符停留在远程服务器上。
我该如何防止这种情况发生?确保 rpm 命令的发出者不是仅列出的 root 用户吗?
答案1
使用 sudo 运行 rpm 命令:
#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
sudo -u myuser rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm
答案2
su
启动 shell。退出该 shell 后,rpm 命令将执行。如果您要更改用户以执行 rpm 命令,则
su -c 'rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm' myuser