当我运行这样的脚本时:
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
注意上面的su命令。
如果我注释掉su命令,脚本就会远程运行,然后我的shell提示符返回到我来自的地方(与上面运行ssh命令的服务器相同)
但是,如上所述,保留脚本将导致脚本成功完成,但shell提示符保留在远程服务器上 。
我怎样才能防止呢? 确保rpm命令的颁发者是一个不同于超级用户的用户?
用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
su启动一个shell。 当你退出这个shell,那么rpm命令将会执行。 如果你正在改变用户执行rpm命令,那么
su -c 'rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm' myuser