在使用非root用户执行csh脚本期间更改用户

时间:2016-05-31 13:34:52

标签: linux shell csh

我以用户JSmith身份登录。 作为这个用户,我运行一个运行一系列可执行文件的csh脚本。 但是,其中一个可执行文件需要与用户HJones一起运行。 之后,其他可执行文件应该与用户JSmith一起运行。 请注意,JSmith不是root用户,HJones有密码,即“abcd”。 如何在脚本运行期间将用户更改为HJones,运行我的可执行文件,然后更改回JSmith。

这是run_execs.sh文件中的一些代码,我与用户JSmith一起运行。

#!/bin/csh -f

cd $EXEC_DIRECTORY

./doJSmithThis
./doJSmithThat

sudo -u HJones ??

./doHJonesStuff

sudo -u JSmith ??

./doJSmithAnother
./doJSmithMoreStuff

2 个答案:

答案 0 :(得分:0)

su -c './doHJonesStuff' - HJones会将脚本doHJonesStuff作为HJones运行,它不会影响您的其他命令。

#!/bin/csh -f

cd $EXEC_DIRECTORY

./doJSmithThis
./doJSmithThat

su -c './doHJonesStuff' - HJones

./doJSmithAnother
./doJSmithMoreStuff

答案 1 :(得分:0)

如果您希望csh脚本提供密码:

( sleep 1 ; echo abcd ) | socat -,ignoreeof EXEC:'su -c ./doHJonesStuff HJones',pty

sleep 1就在那里,因为su会丢弃在提示之前到达的密码。)