作为 root 用户,我可以作为另一个用户在 BASH 中执行命令而不需要密码吗?
As a root user can I execute commands in BASH as another user without requiring a password?
我在 RHeL 服务器上有一个 root 用户帐户。在该服务器上,我有一个名为 user.sh
的简单脚本,它只是 return 当前用户:
#!/bin/bash
echo $USER
当 运行 从我的根帐户输出时
bash user.sh
>>>root
从另一个脚本我希望能够在不输入密码的情况下临时在用户之间切换,storing the password in the script or a file, or modifying /etc/sudoers 并执行 user.sh
然后 return 回到我的初始 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
输出:脚本暂停执行,return将我发送到以 other_user
登录的终端,但我仍将位于包含 user.sh
[=33 的根帐户目录中=]
root
[other_user@my_server]$
如果我然后键入 exit
我将 return 登录到我的根帐户并且脚本完成执行
using the su - <username> -c /path/to/the/shellscript.sh
to execute a script as a different account and then return
#!/bin/bash
bash /user.sh
su - other_user -c /path/user.sh
输出:
root
-bash: /path/user.sh: Permission denied
使用 sudo -i -u other_user
以用户身份登录并执行脚本,该脚本会产生与尝试 #2 相同的问题,但我被重定向到 other_user
的主目录.
可能值得注意的是,如果我使用方法 2,当我以 other_user
身份登录时,我能够 运行 bash user.sh
并产生所需的输出:other_user
在第二个示例中,$USER
变量在执行 su
之前展开。这可以通过引用 EOF
来避免。
su other_user <<'EOF'
echo Current user: $USER
EOF
或者您可以在根 shell 中执行脚本,也可以使用此处的文档:
su other_user <<END
bash user.sh
END
或者您可以使用 -c
选项 su
:
su other_user -c 'bash user.sh'
我在 RHeL 服务器上有一个 root 用户帐户。在该服务器上,我有一个名为 user.sh
的简单脚本,它只是 return 当前用户:
#!/bin/bash
echo $USER
当 运行 从我的根帐户输出时
bash user.sh
>>>root
从另一个脚本我希望能够在不输入密码的情况下临时在用户之间切换,storing the password in the script or a file, or modifying /etc/sudoers 并执行 user.sh
然后 return 回到我的初始 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
输出:脚本暂停执行,return将我发送到以
other_user
登录的终端,但我仍将位于包含user.sh
[=33 的根帐户目录中=]root [other_user@my_server]$
如果我然后键入
exit
我将 return 登录到我的根帐户并且脚本完成执行using the
su - <username> -c /path/to/the/shellscript.sh
to execute a script as a different account and then return#!/bin/bash bash /user.sh su - other_user -c /path/user.sh
输出:
root -bash: /path/user.sh: Permission denied
使用
sudo -i -u other_user
以用户身份登录并执行脚本,该脚本会产生与尝试 #2 相同的问题,但我被重定向到other_user
的主目录.
可能值得注意的是,如果我使用方法 2,当我以 other_user
身份登录时,我能够 运行 bash user.sh
并产生所需的输出:other_user
在第二个示例中,$USER
变量在执行 su
之前展开。这可以通过引用 EOF
来避免。
su other_user <<'EOF'
echo Current user: $USER
EOF
或者您可以在根 shell 中执行脚本,也可以使用此处的文档:
su other_user <<END
bash user.sh
END
或者您可以使用 -c
选项 su
:
su other_user -c 'bash user.sh'