我有一台装有 httpd 和 vsftpd 的 centos 6.2 服务器。
我在 /var/www 中有几个网站,我想为每个网站添加一个 ftp 用户。
我的用户 1 主目录是 /home/user1,并且可以从 ftp 读取/写入该文件夹。(这是我用于 ssh 和几乎所有操作的用户)
我创建了 user2,其主目录为 /var/www/site2,并且 bash 设置了 /bin/nologin(因为我希望它只是一个 ftp 用户)
我可以使用 user2 登录 FTP 并下载文件,但我无法上传文件或 mkdir...
许可如下:
对于 /var/www :
drwxrwxr-x. 13 root root 4096 Aug 21 14:08 .
对于/var/www/site2:
drwxrwxrwx. 2 user2 user2 4096 Aug 21 14:35 site2
(777 仅用于测试...)
我的 vsftpd.conf 是:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
log_ftp_protocol=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
banner_file=/etc/vsftpd/banner
我的 iptables 目前已停止测试,所以问题也不在于我的防火墙......
SELinux 已启用:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
当我禁用它时,它仍然可以工作!:) 我如何启用它并保持我的 vsftpd 正常工作?
提前感谢你的帮助
答案1
/var/www/site2 上的权限是什么?
User2 需要在文件系统级别拥有此目录的写权限。例如 /var/www/site2 需要类似以下内容:
ls /var/www
<snip>
drxwr-xr-x user2 www-data site2/
确保 SELinux 也已禁用
setsebool -P allow_ftpd_full_access 1
答案2
我认为确保禁用 SELinux 并不是解决这种情况的最佳方法。
您需要上下文,例如public_content_rw_t
允许 vsftp(等)使用 SELinux 写入文件夹。
因此设置上下文,然后验证
chcon -t public_content_rw_t /var/www/site2
ls -ldZ /var/www/site2/
如果仍然失败,请检查/var/log/audit.log
以寻找线索。如果您仍然遇到权限被拒绝的问题,并且他们正在登录/var/log/audit.log
,请考虑使用audit2allow如果你不知道还有什么可以帮忙。