使用不同的用户给Tomcat重启可能会造成tomcat下的所属文件权限问题,导致系统页面不能访问。
参照下文。
http://chenyoca.iteye.com/blog/1204103
通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了。其中最大的一个问题就是Tomcat执行权限。普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了。而通过编译或在线(例如RedHat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务中,一但某一个网站出问题导致tomcat服务被卡死,则服务器上所有的网站都打不开了,无法满足各网站程序独享tomcat的需求。为了解决这些问题,我们需要配置Tomcat以指定的身份运行,且一台服务器上可以安装任意多个tomcat服务。
所以,我要限制Tomcat的权限。
可是,我要怎么设置,才能让我启动Tomcat,但Tomcat只能在固定目录里读写执行呢?
在伟大的脑袋思考,加上以前了解的权限管理,我果断得出以下方法:
1、把Tomcat包含子目录,属主和组全部设置root。 # chown root -R /usr/local/tomcat # chgrp root -R /usr/local/tomcat
2、把works目录及其子目录设置为www组,组属性rwx。 # chgrp www -R /usr/local/tomcat/works # chmod g+rws -R /usr/local/tomcat/works
3、把logs目录及其子目录设置为www组,组属性rw-。 # chgrp www -R /usr/local/tomcat/logs # chmod g+rws -R /usr/local/tomcat/logs
4、启动Tomcat的管理员加入www组,这样Tomcat启动后,可以向logs目录写入日志,works目录生成缓存。
5、所有WebApp全部目录设置不可写,某些需要上传图片的目录,把写操作打开,并关闭执行操作。 # chown root -R /var/www-data/* # chgrp www -R /var/www-data/* # chmod a-x -R /var/www-data/WebApp/WritenDir/*
OK,模拟一下入侵操作:
某蛋疼君发现了网站存在漏洞,通过利用漏洞,把WebShell写到上传图片的目录中。他成功上传了,因为图片目录可写。然后,他打开上传的文件,因为目录内的文件不可执行,只能读取,所以服务器会报404错误。