作者dream1124 (全新开始)
看板Linux
标题[问题] 请问ftp存取/var/www/html的权限问题
时间Thu Feb 21 20:14:01 2019
大家好
想请问一个 ftp 不能存取 /var/www/html 资料夹内容的问题原因,
以及合适的权限设定建议。
我想在以 apache httpd 提供服务的 centos 7 (3.10.0-957.5.1.el7.x86_64 #1 SMP)
上面架设 Wordpress 网站。
因为我在 Windows 架设 wordpress 时,知道管理者若要 Wordpress 系统代为
下载与安装扩充套件,那就要提供一个 FTP 帐号给 Wordpress 系统上传扩充套件
到网站的套件资料夹,所以就参考下面的文章架设了 vsftpd。
http://prolinuxhub.com/configure-ftp-access-on-centos-7-and-grant-
user-access-to-website/
网址很长,因此缩在下面
https://goo.gl/kGjY7S
以下是我有调整到的 vsftp 设定
anonymous_enable=NO
local_enable=YES
write_enable=YES
但是在了解 chroot 和 vsftp 的机制後,还是让 chroot_local_user 维持 NO
接着为了给 wordpress 的 ftp 帐号存取到 /var/www/html 的内容,我照上面文章的参
考做法,建立了 wordpress 专用的 ftp 帐号以及使用者,
然後也建立了专用的群组 ftp-access-group,并且把 /var/www/html 的群组变更为
ftp-access-group,最後再调整 /var/www 的权限并开放 SGID。
[使用者名称@centos-7 home]$ sudo ls -al /var/www
total 0
drwxrwsr-x. 4 root root 33 Feb 20 05:44 .
drwxr-xr-x. 20 root root 276 Feb 20 05:47 ..
drwxr-sr-x. 2 root root 6 Nov 5 01:47 cgi-bin
drwxrwsr-x. 2 root ftp-access-group 24 Feb 20 05:47 html
现在遇到的问题是当我远端到电脑上,本地以 yum 找得到的 ftp client 连到
localhost 之後,
虽然可以看到家目录里面的档案,可是竟然完全看不到 /var/www/html 的内容。
连线的过程如下:
[使用者名称@centos-7 home]$ ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:使用者名称): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /var/www/html
250 Directory successfully changed.
ftp> ls
229 Entering Extended Passive Mode (|||55575|).
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp>
照理说,ftp 使用者有该目录的存取权限,而vsftpd也是以 root 身份执行的系统服务,
应该不会这样吧~
原本从网路上求解後,以为是 SELinux 设定的问题,可是以
cat /var/log/messages | grep SELinux
调阅 /var/log/messages 却只有下列讯息。
跟鸟哥说 SELinux 会有的过滤讯息不太一样。
Feb 20 12:25:57 centos-7 kernel: SELinux: Initializing.
Feb 20 12:26:07 centos-7 kernel: SELinux: Class bpf not defined in policy.
Feb 20 12:26:07 centos-7 kernel: SELinux: the above unknown classes and
permissions will be allowed
Feb 20 12:26:07 centos-7 systemd[1]: Successfully loaded SELinux policy in
311.322ms.
请问有可能是哪里设定错误呢?
谢谢大家指教~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.231.187.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1550751246.A.9C8.html
结果发现是 SELinux 造成的问题,只是不知道为什麽没有日志纪录,还在研究设定方法
1F:→ kenwufederer: 其实把SELinux关掉就好… 02/23 12:26
是没错,我只是怕这样会让系统比较容被入侵…
2F:推 alan23273850: 我都把 /var/www/html 的user和group设成 www-data 02/24 14:33
3F:→ alan23273850: 供您参考 02/24 14:34
※ 编辑: dream1124 (1.162.167.94), 02/24/2019 16:22:39
4F:推 pizzahut: 如果会因为关掉SELinux被入侵那表示外面的防火墙就有问 02/25 15:22
5F:→ pizzahut: 题了.. 02/25 15:22
6F:推 holishing: 你可以把selinux设定成permissive啊,如果出问题也找得 02/25 20:08
7F:→ holishing: 到log,之後要启用也比较知道哪边可能会因此需要调整 02/25 20:09
8F:→ holishing: selinux 相关的 log 没记错的话应该都在/var/log/audit 02/25 20:10
9F:→ holishing: 那边 02/25 20:10
10F:→ lantw44: 如果你有装 setroubleshoot 可以设定当 SELinux 发出警告 02/28 22:53
11F:→ lantw44: 的时候主动寄信通知,同时也会解释问题发生原因 02/28 22:55
12F:→ lantw44: 相关 man page 像是 httpd_selinux 和 ftpd_selinux 通常 02/28 22:57
13F:→ lantw44: 也会有些提示,虽然不见得跟你的使用情境完全相同 02/28 23:01
14F:→ lantw44: 再来就是 semanage / sesearch / audit2why 自己处理了 02/28 23:01