Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UNIX bash来回切换用户_Bash_Unix_Sudo - Fatal编程技术网

UNIX bash来回切换用户

UNIX bash来回切换用户,bash,unix,sudo,Bash,Unix,Sudo,我正在测试是否可以以user1的身份运行脚本,然后以user2的身份运行sudo,以user的身份执行脚本的一部分,然后再恢复到user1 显然,我的脚本在第一次sudo之后就卡住了,不会执行后续的行。如何解决这个问题 抱歉,因为我对shell脚本编写没有太多经验 #!/bin/bash whoami ls -lrt /myfolder sudo -i -u user2 whoami sftp ${othersvr} <<EOF cd /tgtpath lcd /myfolder

我正在测试是否可以以user1的身份运行脚本,然后以user2的身份运行sudo,以user的身份执行脚本的一部分,然后再恢复到user1

显然,我的脚本在第一次sudo之后就卡住了,不会执行后续的行。如何解决这个问题

抱歉,因为我对shell脚本编写没有太多经验

#!/bin/bash
whoami
ls -lrt /myfolder
sudo -i -u user2
whoami

sftp ${othersvr} <<EOF
cd /tgtpath
lcd /myfolder
get -p *.txt
exit
EOF

sudo -i -u user1
whoami
ls -lrt /myfolder
#/bin/bash
哇
ls-轻轨/我的文件夹
sudo-i-u用户2
哇

sftp${othersvr}您应该找到一种更好的方法来做您想做的事情,比如使用s或其他什么

但是,如果您想这样做,请考虑
sudo
可以接收命令

sudo -i -u user2 'whoami; ls -lrt /myfolder'
sudo -i -u user1 'whoami; ls -lrt /myfolder'

每次调用
sudo
,您都必须退出
(我很确定)。祝你好运。在第一次sudo之后,仍然与user2纠缠在一起。在sudo to user2之后的命令没有被执行如果我想要执行的命令是一个sftp,我怎样才能正确地执行呢。我已经更新了下面的示例供您参考,只需创建一个脚本,执行您想要执行的所有步骤(并简化转义),然后从
sudo-I-u用户脚本调用它即可