Centos 8。
有snowuser
:
[snowuser@snowcannon-01 ~]$ cat /etc/passwd | grep snowuser
snowuser:x:1002:1002::/home/snowuser:/bin/bash
[snowuser@snowcannon-01 ~]$ groups
snowuser wheel
有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:
尝试在tomcat
用户下运行 Tomcat 的启动脚本:
/bin/su tomcat -c /opt/tomcat/bin/startup.sh
但没有得到任何结果,这意味着没有出现任何错误消息,也没有执行 Tomcat 进程。
我只有一个细节是命令执行时出现错误:
[snowuser@snowcannon-01 ~]$ echo $?
1
似乎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
我怎样才能使 Tomcat 运行?
答案1
将默认 shell 设置为/bin/false
意味着su
将切换用户,然后执行
/bin/false -c /opt/tomcat/bin/startup.sh
您可以使用-s
选项来su
覆盖 中的设置/etc/passwd
,但是仅当调用用户是 root 或 中的现有条目/etc/passwd
在 中列出时才允许这样做/etc/shells
。