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

我想从hadoopmaster su到hduser。 当我在terminal上做的时候,我会这样做:

su - hduser 

然后问我input密码,然后进入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 ,它再次提示我input密码。 我该怎么办?

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

sudo su - hduser

如果你在sudoers文件中有适当的行,这将会是你想要的。 像这样的一行:

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

应该做的伎俩。

我在/ 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”登录到根。