使用 VSFTPD 和 Centos 6.2 写入权限

使用 VSFTPD 和 Centos 6.2 写入权限

我有一台装有 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如果你不知道还有什么可以帮忙。

相关内容