Centos

/bin/false 使用者下無法執行命令

  • November 25, 2021

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 執行?

將預設shell設置為/bin/false意味著su將切換使用者,然後執行

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

您可以使用-s 選項su覆蓋 中的設置,但僅當呼叫使用者是 root 或 中列出/etc/passwd的現有條目時才允許這樣做。/etc/passwd``/etc/shells

引用自:https://serverfault.com/questions/1084580