Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make passwordless switch to another user in a shell script

I want to su from hadoopmaster to hduser. When I do it on the terminal, I do:

su - hduser

which then asks me for the password and I enter it and I get in to hduser. How can I do the same in a shell script without having to worry about the password? I tried the sudoers file method where I put:

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)

I did this and when I do su hduser or su - hduser, it prompts me for the password again. What do I do?

like image 396
CodingInCircles Avatar asked Dec 19 '22 20:12

CodingInCircles


1 Answers

You don't use "su" with the sudoers file, you need to use "sudo". So, you'd want a command line like:

sudo su - hduser

which would do want you want, provided you had the appropriate lines in the sudoers file. A line like this:

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

should do the trick.

like image 122
Jim Nutt Avatar answered Dec 22 '22 14:12

Jim Nutt