簡體   English   中英

切換用戶時,用於運行遠程腳本的ssh命令在遠程服務器上存在shell

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM