RHEL 7中Tomcat 7安装OpenAM 12.0.0时提示无/usr/share/tomcat写入权限
解决OpenAM 12.0.0在RHEL 7 Tomcat 7上的写入权限问题
我碰到过类似的场景,你遇到的这个问题核心在于**/usr/share/tomcat根目录的权限配置**或者RHEL默认开启的SELinux策略限制——虽然子目录(webapps、log等)能正常写入,但根目录的权限规则不一样,下面一步步来解决:
第一步:检查/usr/share/tomcat目录自身的权限
你之前用ls -la /usr/share/tomcat看的是目录里的文件权限,但目录本身的权限才是关键。先执行这条命令确认:
ls -ld /usr/share/tomcat
Yum安装的Tomcat 7默认这个目录的权限是drwxr-xr-x root tomcat——也就是说tomcat组只有读和执行权限,没有写权限,这就是Configurator无法写入根目录的直接原因(而子目录比如webapps可能因为所有者是tomcat或者组权限配置了写权限,所以能正常操作)。
解决这个很简单,给tomcat组加上写权限:
sudo chmod g+w /usr/share/tomcat
执行完再跑OpenAM安装程序,应该就能正常写入了。
第二步:排查SELinux的限制(RHEL 7默认是强制模式)
如果调整完目录权限还是报错,那大概率是SELinux在搞事情。可以先临时关闭SELinux测试一下:
sudo setenforce 0
这时候再运行安装程序,如果能成功,就说明是SELinux策略阻止了写入。接下来要给目录设置正确的SELinux上下文,避免重启系统后问题复发:
# 添加SELinux上下文规则 sudo semanage fcontext -a -t tomcat_var_lib_t "/usr/share/tomcat(/.*)?" # 把上下文应用到整个目录 sudo restorecon -Rv /usr/share/tomcat
之后把SELinux切回强制模式:
sudo setenforce 1
再重新运行安装程序就没问题了。
额外提醒:确认Configurator的运行身份
如果是通过Tomcat web界面运行的Configurator,那它确实是以tomcat用户身份执行的,前面的权限调整完全适用;如果是用root用户手动跑的安装脚本,那权限问题应该不会出现,这时候就要检查是不是脚本里硬编码了用户身份。
内容的提问来源于stack exchange,提问作者kakashy
相关产品推荐
相关产品推荐

