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

linux, sudo, sudoers, ubuntu, ubuntu-12.04

Solution

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.

Problem

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?

Original source