如果登录被拒绝,如何代表用户执行命令

时间:2014-01-26 13:41:39

标签: linux shell tomcat login

我需要代表tomcat用户运行tomcat。但在/etc/passwd我有以下几行:

tomcat:x:505:506::/usr/share/tomcat:/bin/nologin

所以,当我尝试这样做时:sudo su tomcat ./bin/startup.sh

抱怨:su: /bin/nologin: No such file or directory

如何使用适当的权限执行命令?

提前致谢!

P.S。我正在尝试对配置及其生产进行逆向工程。所以我必须要精致......

3 个答案:

答案 0 :(得分:6)

尝试跑步:

sudo -u tomcat ./bin/startup.sh

通过避免su,您可以避免尝试调用用户的登录shell。

答案 1 :(得分:0)

您可以使用-s选项

指定shell
sudo su -s /bin/bash -c ./bin/startup.sh tomcat

答案 2 :(得分:0)

实际上,最好的方法是通过 runuser

手册页在http://man7.org/linux/man-pages/man1/runuser.1.html

这个工具用于处理开发人员在他的bolg中所说的情况

每当服务以root身份运行并想要使用shell更改UID时,它应该使用runuser。

http://danwalsh.livejournal.com/55588.html