在AWS部署Tomcat7时,如何让web目录保留在/home/ec2-user下正常运行?
解决Tomcat无法访问/home/ec2-user下web目录的问题
这个报错的核心原因其实是Tomcat运行的tomcat用户没有权限访问/home/ec2-user这个父目录——Linux系统默认用户家目录的权限是700(只有目录所有者能读写执行),所以哪怕你给web目录开了权限,tomcat用户连进入/home/ec2-user的权限都没有,自然访问不到里面的web文件夹。
下面是两种可行的解决方案,推荐第二种更安全:
方案一:放宽家目录权限(简单但略不安全)
先查看当前
/home/ec2-user的权限:ls -ld /home/ec2-user输出应该是类似
drwx------,说明只有ec2-user自己能访问。修改权限让其他用户能读和执行(进入目录):
sudo chmod 755 /home/ec2-user重启Tomcat:
sudo systemctl restart tomcat
方案二:将tomcat用户加入ec2-user组(更安全)
这种方式不用开放家目录给所有用户,只让tomcat用户通过组权限访问:
查看
ec2-user所属的用户组:groups ec2-user通常输出会包含
ec2-user组。将
tomcat用户添加到ec2-user组:sudo usermod -aG ec2-user tomcat注意
-aG是追加组,不会覆盖原有组。修改
/home/ec2-user的权限,让组用户拥有读和执行权限:sudo chmod 750 /home/ec2-user验证
tomcat用户能否访问目标目录:sudo su - tomcat -c "cd /home/ec2-user/myproject/web && pwd"如果能正常输出目录路径,说明权限配置成功。
重启Tomcat生效:
sudo systemctl restart tomcat
为什么之前的方法无效?
- 单独修改
web目录权限:父目录/home/ec2-user权限不足,tomcat用户根本无法进入该目录,自然访问不到子目录。 - 创建软链接到
/etc/tomcat/web:软链接只是指向原目录,原目录的权限问题依然存在,所以还是访问失败。 - 复制
web到/etc/tomcat:因为/etc/tomcat是Tomcat的默认配置目录,tomcat用户本身就有访问权限,所以能正常运行。
内容的提问来源于stack exchange,提问作者Thai Tran
相关产品推荐
相关产品推荐

