Назад | Перейти на главную страницу

Разрешение на запись с VSFTPD и Centos 6.2

У меня есть сервер с 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 если вы не можете понять, что еще может помочь.