当用户设置为root时,Ubuntu上的tomcat6失败

我很清楚,从安全angular度来看,运行tomcat6是非常糟糕的,并且会打开正在运行的各种安全风险和攻击媒介。 那就是说:

当我将/etc/init.d/tomcat6中的条目更改为

TOMCAT6_USER=root 

然后运行

 sudo /etc/init.d/tomcat6 start 

我明白了

 [fail] 

并且没有任何内容写入/ var / log / tomcat6下的日志,并且在/ var / run下没有创buildtomcat6的条目

我如何诊断出现了什么问题?


另外 – 请注意,catalina.err和catalina.out尚未创build。

你想这样做的原因是(a)这是一个运行在开发盒上的虚拟机,(b)它在一个chroot jail中执行一个进程,只有在(c)进程在chroot jail中运行的软件包是从外部获得的

运行Tomcat不会比运行任何其他应用程序服务器更直接。

更重要的是常识性的安全概念,这将使你的箱子安全。 你一定要使用某种防火墙,特别是如果你的盒子是公共的。

如果你部署的应用程序不安全,并且容易受到SQL注入攻击,那么即使是最昂贵的servlet容器也不能拯救你,你只需要蹩脚的代码。

不要以root身份运行tomcat6。 我不能为我的生活想象为什么你需要/想要做到这一点,如果你有“权限问题”,那么你做错了。

我维护(并继续维护)许多作为各自的tomcat用户运行的tomcat 5和6服务器,在部署webapps时没有任何问题。 以root用户身份运行服务器的安全风险太大,通常是不必要的。

如果你真的想深究它,catalina.out和catalina.err文件可能会有更多的信息,但我认为以root身份运行是一个潜在的致命的想法,所以我可能会把它作为默认的tomcat系统用户。

在这里被问到的问题似乎是 – 你将如何debugging一个shell脚本来看看发生了什么 – 要做到这一点,你会运行它:

 sudo bash -x -v /etc/init.d/tomcat6 start 

并阅读输出,看看发生了什么。

它实际上看起来像Ubuntu已经成立,不容易这样做。 整个负载的目录已被tomcat6用户(即不是根用户)设置为所有权。 看他们是哪一个 – 运行命令

 find / -user tomcat6 

出于安全考虑,为了尊重Ubuntu / Tomcat6打包程序的意图,我不打算在这之后发布你要做的事情。