Tomcat7没有写权限
Tomcat7 has no writing permissions
我从官方来源在我的 CentOs 7 机器上安装了 Tomcat 7.0.76,但根本无法 Tomcat 获得写入权限。每当我的代码中的某些内容想要写入磁盘或创建目录时,我都会收到权限被拒绝的错误。
例如,如果我想创建一个目录,我会得到这个错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'application': Invocation of init method failed; nested exception is org.ehcache.StateTransitionException: Directory couldn't be created: /usr/share/tomcat/myDir
当我自己创建目录并想写入此目录中的文件时,出现此错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'application': Invocation of init method failed; nested exception is org.ehcache.StateTransitionException: Location isn't writable: /usr/share/tomcat/myDir
我已经试过了:
chown -R tomcat:tomcat /usr/share/tomcat
chmod -R 775 /usr/share/tomcat/
tomcat 服务在 tomcat 用户
下 运行
$ top | grep tomcat
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2725 tomcat 20 0 21,7g 2,2g 24612 S 0,9 7,1 2:28.16 java
这就是 ll
的输出
$ ll /usr/share/tomcat/
insgesamt 8,0K
drwxrwxr-x. 2 tomcat tomcat 4,0K 24. Mai 18:48 bin
lrwxrwxrwx. 1 tomcat tomcat 11 24. Mai 18:48 conf -> /etc/tomcat
lrwxrwxrwx. 1 tomcat tomcat 22 24. Mai 18:48 lib -> /usr/share/java/tomcat
lrwxrwxrwx. 1 tomcat tomcat 15 24. Mai 18:48 logs -> /var/log/tomcat
drwxrwxr-x. 5 tomcat tomcat 4,0K 24. Mai 19:54 resources
lrwxrwxrwx. 1 tomcat tomcat 22 24. Mai 18:48 temp -> /var/cache/tomcat/temp
lrwxrwxrwx. 1 tomcat tomcat 23 24. Mai 18:48 webapps -> /var/lib/tomcat/webapps
lrwxrwxrwx. 1 tomcat tomcat 22 24. Mai 18:48 work -> /var/cache/tomcat/work
注意:我在另一台具有相同 Tomcat 版本的 CentOs 7 机器上部署了相同的 .war 文件,一切正常。
SELinux 可能对此权限被拒绝负责。尝试使用 setenforce permissive
禁用它,如果它解决了您的问题,请正确调整 SELinux 策略。在这种情况下,您可能只需要在它工作的第一台服务器上进行复制,除非这台服务器禁用了 SELinux,但请记住禁用它 不 在生产中推荐。
我从官方来源在我的 CentOs 7 机器上安装了 Tomcat 7.0.76,但根本无法 Tomcat 获得写入权限。每当我的代码中的某些内容想要写入磁盘或创建目录时,我都会收到权限被拒绝的错误。
例如,如果我想创建一个目录,我会得到这个错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'application': Invocation of init method failed; nested exception is org.ehcache.StateTransitionException: Directory couldn't be created: /usr/share/tomcat/myDir
当我自己创建目录并想写入此目录中的文件时,出现此错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'application': Invocation of init method failed; nested exception is org.ehcache.StateTransitionException: Location isn't writable: /usr/share/tomcat/myDir
我已经试过了:
chown -R tomcat:tomcat /usr/share/tomcat
chmod -R 775 /usr/share/tomcat/
tomcat 服务在 tomcat 用户
下 运行$ top | grep tomcat
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2725 tomcat 20 0 21,7g 2,2g 24612 S 0,9 7,1 2:28.16 java
这就是 ll
$ ll /usr/share/tomcat/
insgesamt 8,0K
drwxrwxr-x. 2 tomcat tomcat 4,0K 24. Mai 18:48 bin
lrwxrwxrwx. 1 tomcat tomcat 11 24. Mai 18:48 conf -> /etc/tomcat
lrwxrwxrwx. 1 tomcat tomcat 22 24. Mai 18:48 lib -> /usr/share/java/tomcat
lrwxrwxrwx. 1 tomcat tomcat 15 24. Mai 18:48 logs -> /var/log/tomcat
drwxrwxr-x. 5 tomcat tomcat 4,0K 24. Mai 19:54 resources
lrwxrwxrwx. 1 tomcat tomcat 22 24. Mai 18:48 temp -> /var/cache/tomcat/temp
lrwxrwxrwx. 1 tomcat tomcat 23 24. Mai 18:48 webapps -> /var/lib/tomcat/webapps
lrwxrwxrwx. 1 tomcat tomcat 22 24. Mai 18:48 work -> /var/cache/tomcat/work
注意:我在另一台具有相同 Tomcat 版本的 CentOs 7 机器上部署了相同的 .war 文件,一切正常。
SELinux 可能对此权限被拒绝负责。尝试使用 setenforce permissive
禁用它,如果它解决了您的问题,请正确调整 SELinux 策略。在这种情况下,您可能只需要在它工作的第一台服务器上进行复制,除非这台服务器禁用了 SELinux,但请记住禁用它 不 在生产中推荐。