作为root用户,我可以以其他用户身份在BASH中执行命令,而无需输入密码?

问题描述 投票:0回答:1

我在RHeL服务器上具有root用户帐户。在该服务器上,我有一个简单的脚本user.sh,该脚本仅返回当前用户:

#!/bin/bash
echo $USER

从我的根帐户运行时,输出为

bash user.sh
>>>root

从另一个脚本,我希望能够在用户之间临时切换而无需输入密码storing the password in the script or a filemodifying /etc/sudoers并执行user.sh,然后返回到我的初始root帐户。这有可能吗?

这是到目前为止我尝试过的:

  1. 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
    
  2. 以bash切换到用户,执行命令然后注销

    #!/bin/bash
    
    bash /user.sh
    
    su other_user
    bash /user.sh
    exit
    

    输出:脚本暂停执行并将我返回到以other_user登录的终端,但是我仍将位于包含user.sh的根帐户目录中>

    root
    [other_user@my_server]$
    

    如果再输入exit,我将返回到我的根帐户,并且脚本完成了执行

  3. using the su - <username> -c /path/to/the/shellscript.sh to execute a script as a different account and then return

  4. su - <username> -c /path/to/the/shellscript.sh

    输出:

    #!/bin/bash
    
    bash /user.sh
    
    su - other_user -c /path/user.sh
    
  5. 使用root -bash: /path/user.sh: Permission denied 以用户身份登录并执行脚本,这会产生与尝试#2相同的问题,但我被重定向到sudo -i -u other_user的主目录。

  6. [可能值得注意的是,如果我使用方法2,则以other_user bash user.shother_use`` I am able to runother_user登录时>

我在RHeL服务器上具有root用户帐户。在该服务器上,我有一个名为user.sh的简单脚本,该脚本仅返回当前用户:#!/ bin / bash从我的根帐户运行时,回显$ USER输出...

linux bash root sudo rhel
1个回答
2
投票

在第二个示例中,在执行and yield the desired output:之前先展开$USER变量。这可以通过引用su来防止。

EOF
© www.soinside.com 2019 - 2024. All rights reserved.