![“ sudo su - ”正在切换用户,但正在使用父 ID 创建文件](https://linux22.com/image/203931/%E2%80%9C%20sudo%20su%20-%20%E2%80%9D%E6%AD%A3%E5%9C%A8%E5%88%87%E6%8D%A2%E7%94%A8%E6%88%B7%EF%BC%8C%E4%BD%86%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E7%88%B6%20ID%20%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6.png)
我们有一个 bash 命令,其中一个用户“useradm”运行命令为
sudo su - platfrmapi; sh script.sh
sudo su - platfrmapi; cp script.sh script_2.sh
用户切换完美地进行,但是作为“script.sh”的一部分创建的日志由“useradm”而不是“platfrmapi”拥有。
我们错过了什么吗?
答案1
您的命令用分号链接在一起,这意味着它们被执行独立地!首先,sudo
命令运行并切换到platfrmapi用户;该进程最终必须退出,这允许运行第二个命令,即sh script.sh
;第二个命令仍然以原始用户身份运行,因为该sudo su -
命令已退出。
您似乎想要以sh script.sh
platfrmapi 用户身份运行,因此请执行以下操作:
sudo -u platfrmapi sh script.sh
...假设 useradm 用户具有正确的 sudo 执行权限sh script.sh
。
确保脚本可执行(chmod +x script.sh
并且具有正确的 sh-bang 行)然后直接执行它会更直接:
sudo -u platfrmapi ./script.sh