How to execute a command on behalf of a user if login is denied
11,910
Solution 1
Try running:
sudo -u tomcat ./bin/startup.sh
By avoiding su
you avoid trying to invoke the user's login shell.
Solution 2
You can specify shell with -s
option
sudo su -s /bin/bash -c ./bin/startup.sh tomcat
Solution 3
actually, the best way to do this is via runuser
the man page is here http://man7.org/linux/man-pages/man1/runuser.1.html
this tool is used to deal with the situation as the developer said in his bolg
Whenever an service is running as root and wants to change UID using the shell it should use runuser.
http://danwalsh.livejournal.com/55588.html
Author by
zjor
Updated on June 07, 2022Comments
-
zjor almost 2 years
I need to run tomcat on behalf of
tomcat
user. But in/etc/passwd
I have the following line:tomcat:x:505:506::/usr/share/tomcat:/bin/nologin
So when I try to do this:
sudo su tomcat ./bin/startup.sh
It complains about:
su: /bin/nologin: No such file or directory
How do I execute the command with proper permissions?
Thanks in advance!
P.S. I'm trying to reverse engineer the configuration and it's production. So I have to be delicate...