[英]ssh command to run remote script exist shell on remote server when switching user
當我運行這樣的腳本時:
ssh -t root@10.10.10.10 '/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命令的頒發者是不同於root用戶(僅列出用戶)的用戶?
但是保留上面列出的腳本會導致腳本成功完成,但Shell提示符仍停留在遠程服務器上。
不完全是。 該腳本正在運行至su
命令,該命令會生成一個新的子Shell,並在那里停止直到您退出該Shell。 在退出該外殼之前, rpm
命令永遠不會運行,當運行時,它將以root用戶身份運行。
如果要以非root用戶身份運行rpm
命令,則需要做一些不同的事情,例如:
sudo -u myuser rpm -Uvp ...
在腳本末尾添加“退出”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.