How can I allow one user to su to another without allowing root access?
I'd like to allow certain users to su to another user account without having to know that account's password, but not allow access to any other user account (i.e. root).
For instance, I'd like to allow Tom the DBA to su to the oracle user, but not to the tomcat user or root.
I imagine this could be done with the /etc/sudoers file - is it possible? If so, how?
Yes, this is possible.
In /etc/sudoers the item immediately following the equals is the user that the command will be allowed to execute as.
tom ALL=(oracle) /bin/chown tom *
The user (tom) can type sudo -u oracle /bin/chown tom /home/oracle/oraclefile
Add to your /etc/sudoers something like
tom ALL=(oracle) ALL
Then user tom should be able to use sudo to run things as user oracle with the -u option, without letting tom
I.e. getting a shell as user oracle (well, given that your sudo is new enough to have the -i option).
sudo -u oracle -i
To ONLY provide the capabilities in the question, add the following to /etc/sudoers:
tom ALL=(oracle) /bin/bash
Then tom can:
sudo -u oracle bash -i