系统教程
您现在的位置是:首页>服务器系统>Linux系统内容

Linux下使用Apache访问FTP文件夹引起的问题

时间:2018-05-11 出处:未知复制分享人气(次) 【

通过FTP服务器接收由IP摄像头上传的抓图文件,在通过Apache实现到HTTP的访问,结果配置FTP和Apache遇到了奇怪的权限问题,与一般的问题不同,经过验证,终于找打了解决方案。
 
403 权限问题
无论什么问题,首先禁用SELinux,看看是否正常。
禁用SELinux权限的方法是:setenforce 0
开启权限是:setenforece 1
一般情况下,生产服务器建议打开SELinux。
 
搜索权限问题
Apache日志提示:because search permissions are missing on a component of the path
一般为目录权限问题,需要注意的是对于需要HTTP访问的目录必需从根开始的到需要访问的文件的上级目录一定需要具有执行权限(如果目录不是apache运行的用户,或者添加了组,那么其他用户就需要执行权限)。注意SELinux也会出现上述错误。
需要特别注意的是所有的上级目录一定是具有可执行权限的。
Linux中用户的home目录就是700权限(即组用户和其他用户没有任何访问权限)
一般需要访问的目录为755权限(即组用户和其他用户具有读和执行权限)
比如给/home/ftp目录的其他户增加权限可以采用:
chmod o+x /home/ftp
chmod 755 /home/ftp
 
FTP目录(home目录)无法被http访问的问题
在开启SELinux下,一般FTP目录为ftp用户的目录,属于系统资源,SELinux不允许httpd访问,需要添加http角色类型(httpd_sys_content_t ),这样,这个目录的文件就可以访问了。
命令如下:
chcon -R -t httpd_sys_content_t /data/ftp/camera
我测试了一些相关的SELinux相关的相关选项,发现意义不大。
如果希望查询相关的SELinux选型,可以通过命令:
getsebool -a | grep http
通过restorecon -R -v /data/ftp/camera或者chcon -R -t defalut_t /data/ftp/camera恢复所有SELinux角色配置后,发现文件即无法访问。
通用通过查看审计日志发现由于目标SELinux配置导致的访问拒绝:
type=AVC msg=audit(1497436934.937:33464): avc: denied { getattr } for pid=26873
comm=”httpd” path=”/data/ftp/test/index.html”
dev=”dm-0” ino=204159993
scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:default_t:s0
tclass=file
从上面可以看出:
scontext=system_u:system_r:httpd_t:s0,
而目标内容为:
tcontext=unconfined_u:object_r:default_t:s0
这也就产生了httpd日志的问题:
[Wed Jun 14 18:44:52.696084 2017] [core:error] [pid 26872] (13)Permission denied: [client 192.168.88.225:57438] AH00035: access to /img1/YUNBO-LEFT-AISLE/2017-06-14/001/jpg/13/52/46[M][0@0][0].jpg denied (filesystem path ‘/data/ftp/camera/YUNBO-LEFT-AISLE/2017-06-14/001/jpg/13/52/46[M][0@0][0].jpg’) because search permissions are missing on a component of the path
    最新资讯
    热门内容
    小米移动电源能为iPad mini充几次电