【问题标题】:How to make passwordless switch to another user in a shell script如何在 shell 脚本中无密码切换到另一个用户
【发布时间】:2013-12-08 04:20:39
【问题描述】:

我想从 hadoopmaster su 到 hduser。当我在终端上这样做时,我会这样做:

su - hduser

然后它要求我输入密码,我输入它并进入 hduser。我怎样才能在 shell 脚本中做同样的事情而不必担心密码?我尝试了sudoers文件方法我放的地方:

root ALL=(ALL:ALL) ALL
hduser ALL=(ALL:ALL) ALL
hadoopmaster ALL=(ALL:ALL) NOPASSWD: /bin/su hduser 
(here I tried different combinations of the line with and without the '-' and also 
with and without /bin)

我这样做了,当我这样做 su hdusersu - hduser 时,它会再次提示我输入密码。我该怎么办?

【问题讨论】:

    标签: linux ubuntu ubuntu-12.04 sudo sudoers


    【解决方案1】:

    您不要在 sudoers 文件中使用“su”,您需要使用“sudo”。所以,你会想要一个像这样的命令行:

    sudo su - hduser

    只要您在 sudoers 文件中有适当的行,您就会想要。像这样的一行:

    hadoopmaster ALL=(ALL:ALL) NOPASSWD: su - hduser

    应该可以解决问题。

    【讨论】:

    • 酷。我会尝试一下。谢谢! :) 如果成功了,我会在明天通知你。
    • 我找到了一种更简单的方法来做到这一点。在sudoers 中使用hadoopmaster ALL=(hduser) NOPASSWD: /bin/sh 行。然后,您只需输入sudo -s -u hduser 即可切换到新用户。
    【解决方案2】:

    我在 /etc/sudoers 文件中添加了 user=ranjith,例如,

     ranjith ALL=(ALL)       NOPASSWD: ALL
    

    现在我们可以使用了,

     "sudo, sudoedit - execute a command as another user"
    
     [ranjith@ranjith ~]$ sudo -i
     # id
     uid=0(root) gid=0(root) groups=0(root)
    

    它对我有用,现在我可以直接从本地用户“ranjith”登录到 root。

    【讨论】:

    • 这是一个非常糟糕的主意,除非您打算创建另一个 root 用户。您实际上授予用户“ranjith”不受限制的超级用户权限,这不是这个问题的意图。请谨慎使用此 sudoer 规则。
    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2016-12-06
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多