今天早上,测试人员报告说测试环境中图片服务访问失败,所有图片都在前端不展示。
进行了问题的复现,发现在前端确实无法访问所有图片。
一般出现问题,都采用排除法进行问题排查。
首先考虑的是图片是否存在,所以找到图片服务器,在图片目录下查看图片都正常存在。
其次查看服务是否正常运行,通过ps -ef | grep nginx,发现Nginx服务也在进程中。
然后查看服务日志,发现错误日志中报告图片无法访问,权限拒绝。
2019/01/21 12:20:38 [error] 1009#0: *235379633 open() "/mnt/web/Writeable/attachment/201812/18/53438b58-519d-4a7b-a660-3f143386ec87.jpg" failed (13: Permission denied), client: 192.168.6.20, server: localhost, request: "GET /Writeable/attachment/201812/18/53438b58-519d-4a7b-a660-3f143386ec87.jpg HTTP/1.0", host: "10.20.17.11"
检查目录发现,该映射目录的访问账号居然是101:bin,和mount时输入的账号信息有误。
在网上查了下,发现在进行mount时,除了mount需要指定的用户信息外,还可通过指定uid、gid来定义目录的访问账号。
mount -t cifs -o username=media,password=media,uid=media,gid=media //192.168.60.9/Media/TestPicures/scdmspic /mnt/share/scdmspic
其中: uid、gid还可以使用对应的编号(编号在/etc/passwd中可查,500以上的为自定义的账号信息)。
重新映射后,发现目录默认带上了x,手贱的把x去掉,结果发现还是不能访问。。。
此时才明白,没有x,目录只能浏览,不能进行任何读写操作,看来被rw这些欺骗了。加上x后,图片服务恢复正常。