У меня есть сервер с centos 6.2 с httpd и vsftpd.
У меня несколько веб-сайтов в / var / www, и я хочу добавить пользователя ftp для каждого сайта.
Мой домашний каталог user1 - / home / user1, и я могу читать / записывать в него папку с ftp. (это пользователь, которого я использую для ssh и почти все)
Я сделал user2, дом которого - / var / www / site2, и настройку bash / bin / nologin (потому что я хочу, чтобы он был просто пользователем ftp)
Я могу войти в FTP с user2 и загрузить файл, но я не могу загрузить файл или 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?
Заранее благодарю за вашу помощь
Какие права на / 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
Я не думаю, что отключение 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 если вы не можете понять, что еще может помочь.