我在RHeL服务器上具有root用户帐户。在该服务器上,我有一个简单的脚本user.sh
,该脚本仅返回当前用户:
#!/bin/bash
echo $USER
从我的根帐户运行时,输出为
bash user.sh
>>>root
从另一个脚本,我希望能够在用户之间临时切换而无需输入密码storing the password in the script or a file或modifying /etc/sudoers并执行user.sh
,然后返回到我的初始root帐户。这有可能吗?
这是到目前为止我尝试过的:
Using delimeters to execute a block of code
#!/bin/bash
bash /user.sh
su other_user <<EOF
echo Current user: $USER
EOF
输出:
root
Current user: root
以bash切换到用户,执行命令然后注销
#!/bin/bash
bash /user.sh
su other_user
bash /user.sh
exit
输出:脚本暂停执行并将我返回到以other_user
登录的终端,但是我仍将位于包含user.sh
的根帐户目录中>
root [other_user@my_server]$
如果再输入
exit
,我将返回到我的根帐户,并且脚本完成了执行
su - <username> -c /path/to/the/shellscript.sh
输出:
#!/bin/bash
bash /user.sh
su - other_user -c /path/user.sh
使用root
-bash: /path/user.sh: Permission denied
以用户身份登录并执行脚本,这会产生与尝试#2相同的问题,但我被重定向到sudo -i -u other_user
的主目录。
[可能值得注意的是,如果我使用方法2,则以other_user
bash user.shother_use`` I am able to run
other_user登录时>
我在RHeL服务器上具有root用户帐户。在该服务器上,我有一个名为user.sh的简单脚本,该脚本仅返回当前用户:#!/ bin / bash从我的根帐户运行时,回显$ USER输出...
在第二个示例中,在执行and yield the desired output:
之前先展开$USER
变量。这可以通过引用su
来防止。
EOF