當使用者設置為root時,ubuntu上的tomcat6失敗
我很清楚,從安全的角度來看,執行 tomcat6 確實很糟糕 - 並且打開了它執行的盒子,以應對各種安全風險和攻擊媒介。那說:
當我將 /etc/init.d/tomcat6 中的條目更改為
TOMCAT6_USER=root
然後執行
sudo /etc/init.d/tomcat6 start
我明白了
[fail]
並且沒有任何內容寫入 /var/log/tomcat6 下的日誌,並且沒有在 /var/run 下創建 tomcat6 的條目
我如何診斷出了什麼問題?
附加 - 請注意 catalina.err 和 catalina.out 尚未創建。
您想要這樣做的原因是因為 (a) 這是一個在開發盒上執行的虛擬機,並且 (b) 它在 chroot 監獄中執行一個程序,該程序只有在由 root 執行時才會執行 (c) 程序在 chroot 監獄中執行的軟體包是從外部獲得的軟體包
這裡提出的問題似乎是 - 你將如何調試 shell 腳本以查看正在發生的事情 - 要做到這一點,你將執行它:
sudo bash -x -v /etc/init.d/tomcat6 start
並閱讀輸出以查看發生了什麼。
實際上,Ubuntu 似乎已設置為不允許這樣做。整個目錄負載已設置為僅由 tomcat6 使用者(即不是 root 使用者)擁有。要查看它們是哪些 - 執行命令
find / -user tomcat6
出於安全考慮,為了尊重 Ubuntu/Tomcat6 打包程序的意圖——我不會公佈你在此之後要做的事情。
直接執行 Tomcat 並不比直接執行任何其他應用程序伺服器更不安全。
更多的是讓您的盒子安全的常識安全概念。你絕對應該使用某種防火牆,特別是如果你的盒子是面向公眾的。
如果您部署的應用程序不安全並且容易受到 SQL 注入的影響,那麼即使是最昂貴的 servlet 容器也無法拯救您,您只有糟糕的程式碼。
不要以 root 身份執行 tomcat6。我無法想像你為什麼需要/想要這樣做,如果你有“權限問題”那麼你做錯了。
我已經維護(並繼續維護)許多以各自的 tomcat 使用者身份執行的 tomcat 5 和 6 伺服器,部署 webapps 沒有問題。以 root 身份執行伺服器是一個太大的安全風險,而且通常是完全沒有必要的。
如果您真的想深入了解它, catalina.out 和 catalina.err 文件可能會有更多資訊,但我認為以 root 身份執行是一個潛在的致命想法,所以我可能會將其保留為預設的 tomcat系統使用者。