我有一个带有httpd和vsftpd的centos 6.2的服务器。
我在/ var / www中有几个网站,我想为每个站点添加一个ftp用户。
我的user1主目录是/ home / user1,可以从ftp读取/写入文件夹。 (这是我用来SSH和几乎所有的用户)
我把user2设置在/ var / www / site2和bash设置/ bin / nologin(因为我希望它只是一个ftp用户)
我可以使用user2loginFTP并下载文件,但是我无法上传文件或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只是为了testing…)
我的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目前停止testing,所以问题不是我的防火墙要么…
SELinux已启用:
SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted
当我禁用它,它的工作! :)我怎样才能启用它,并保持我的vsftpd工作?
预先感谢您的帮助
/ var / www / site2上的权限是多less?
User2将需要在文件系统级别对此目录进行写入访问。 例如/ var / www / site2需要是这样的:
ls /var/www <snip> drxwr-xr-x user2 www-data site2/
确保SELinux也被禁用
setsebool -P allow_ftpd_full_access 1
我不认为确保SELinux被禁用是这种情况的最佳方法。
你需要像public_content_rw_t这样的上下文来允许vsftp(etc)用SELinux写入文件夹。
所以设置上下文,然后validation
chcon -t public_content_rw_t /var/www/site2 ls -ldZ /var/www/site2/
然后检查/var/log/audit.log线索,如果你仍然失败。 如果您仍然遇到权限被拒绝的问题,并且他们正在login/var/log/audit.log ,请查看使用audit2allow,如果您无法弄清楚还有哪些可能的帮助。