如何在shell脚本中实现无密码切换到另一个用户

4
我想从hadoopmaster切换到hduser用户。在终端上执行以下命令:
su - hduser

我需要在shell脚本中实现hduser登录而无需输入密码。目前,手动登录时要求输入密码才能成功登陆。如何在不需要输入密码的情况下自动化这一过程?我尝试使用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 hduser或者su - hduser时,它又提示我输入密码。我该怎么办?

2个回答

12

在sudoers文件中,不使用"su",需要使用"sudo"。 因此,您需要像这样使用命令行:

sudo su - hduser

如果您在sudoers文件中有适当的行,则可以执行所需的操作。例如以下行:

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

应该可以解决问题。


好的,我会试一下。谢谢! :) 如果成功了,我明天会告诉你。 - CodingInCircles
我发现了一个更简单的方法。在 sudoers 文件中使用以下行:hadoopmaster ALL=(hduser) NOPASSWD: /bin/sh。然后,您只需键入 sudo -s -u hduser 即可切换到新用户。 - Jim Nutt

0
我已经在/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规则。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接