无法在 /bin/false 用户下运行命令

Les*_*iev 1 su tomcat centos centos8

森托斯 8.

snowuser

[snowuser@snowcannon-01 ~]$ cat /etc/passwd | grep snowuser  
snowuser:x:1002:1002::/home/snowuser:/bin/bash   
[snowuser@snowcannon-01 ~]$ groups  
snowuser wheel
Run Code Online (Sandbox Code Playgroud)

tomcat用户:

[snowuser@snowcannon-01 ~]$ cat /etc/passwd | grep tomcat  
tomcat:x:1003:1003::/opt/tomcat:/bin/false  


cat /etc/group | grep "tomcat\|snowuser"  
wheel:x:10:ydyachuk,amsliusar,snowuser  
snowuser:x:1002:   
tomcat:x:1003:   
Run Code Online (Sandbox Code Playgroud)

尝试在用户下运行Tomcat的启动脚本tomcat

/bin/su tomcat -c /opt/tomcat/bin/startup.sh

但没有任何意义,既没有出现任何错误消息,也没有执行 Tomcat 进程。

我只有一个细节是该命令执行时出现错误:

[snowuser@snowcannon-01 ~]$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

似乎tomcat用户具有执行脚本的适当权限:

[snowuser@snowcannon-01 ~]$ ll /opt/tomcat/bin/startup.sh 
-rwxr-xr-x. 1 tomcat tomcat 1904 Nov 11 15:14 /opt/tomcat/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)

如何让 Tomcat 运行?

Sim*_*ter 5

设置默认shell为/bin/false表示su会切换用户,然后执行

/bin/false -c /opt/tomcat/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)

您可以使用-s 选项覆盖 中的su设置/etc/passwd,但仅当调用用户是 root 或 中/etc/passwd列出了现有条目时才允许这样做/etc/shells