gpt4 book ai didi

linux - 切换用户时运行远程脚本的 ssh 命令存在于远程服务器上的 shell

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:17 24 4
gpt4 key购买 nike

当我运行这样的脚本时:

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 不同的用户?

最佳答案

But leaving the script as listed above, causes the script to complete successfully but the shell prompt stays on the remote server.

不完全是。该脚本正在运行到 su 命令,该命令会生成一个新的子 shell,并在那里停止,直到您退出该 shell。在退出该 shell 之前,rpm 命令永远不会运行,当运行时,它会以 root 身份运行。

如果您想以非 root 用户身份运行 rpm 命令,则需要执行一些不同的操作,例如:

sudo -u myuser rpm -Uvp ...

关于linux - 切换用户时运行远程脚本的 ssh 命令存在于远程服务器上的 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21314886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com