Я пытаюсь настроить ситуацию, когда я могу подключиться по FTP к своему серверу Linux CentOS 7 и обновить файлы веб-сайта из моей системы Windows 7. На этом этапе я могу подключиться к папке моего пользователя по FTP с помощью vsftp (/ home / robert), и Apache, похоже, работает для веб-сайта по умолчанию (/ var / www / html). Я создал виртуальный хост для порта 8080, и если я укажу его на / var / www / 8080 / public_html, он будет работать нормально, но как только я укажу его на / home / robert / public_html, он вернется с 403 Forbidden. У вас нет разрешения на доступ к этому серверу. Журнал ошибок apache показывает
[Wed Mar 18 16:12:27.546621 2015] [core:error]
[pid 21204] (13)Permission denied: [client 192.168.1.66:57090]
AH00035: access to / denied (filesystem path '/home/robert')
because search permissions are missing on a component of the path
В файле конфигурации apache (/etc/httpd/conf/httpd.conf) есть эта запись для виртуального хоста
Listen 80
Listen 8080
# Virtual Hosts
<VirtualHost *:8080>
ServerName 192.168.1.10:8080
# DocumentRoot /var/www/8080/public_html
DocumentRoot /home/robert/public_html
</VirtualHost>
Разрешения для /home/robert/public_html/index.html приведены ниже.
drwxr-xr-x. 7 root root 66 Mar 9 17:16 home
dr-x---r-x. 15 robert robert 4096 Mar 16 22:51 robert
drwxr-xr-x. 2 robert robert 23 Mar 17 23:28 public_html
-rwxr-xr-x. 1 robert robert 332 Mar 17 23:28 index.html
Это похоже на проблему с разрешениями, но я не понимаю, как действовать. Нужно ли мне добавлять пользователя apache в мою индивидуальную группу robert? Selinux здесь что-то делает? Любая помощь будет оценена. Спасибо.
ОБНОВЛЕНО: хорошо, мне кажется, что все веб-сайты должны быть расположены в папке / var / www /. Похоже, что selinux этого хочет. Итак, как мне удаленно FTP и получить доступ (чтение / запись) к файлам веб-сайта ??? Скажем, я хочу, чтобы пользователь Роберт подключился к FTP в / var / www / testweb и мог читать / записывать файлы там. Как это достигается ???
ОБНОВЛЕНО: Я посмотрел на опубликованный ответ и выполнил три команды ниже
setsebool -P httpd_enable_homedirs on
setsebool -P ftp_home_dir on
restorecon -r -v /home
Похоже, он что-то сделал, но результат тот же. Я все еще могу использовать FTP в папке пользователя, но веб-сайт не отображается ... Ошибка 403.
ОБНОВЛЕНО: Я также попытался запустить следующую команду, но она выдала ошибку во всех файлах
Команда я побежала
chcon -Rv --type=httpd_t /home/robert/public_html
Я получил ошибку
chcon: failed to change context of ‘index.html’ to ‘unconfined_u:object_r:httpd_t:s0’: Permission denied
Я также отключил selinux с помощью setenforce 0, но я все еще получил 403. Совет был оценен ... спасибо.
Я думаю, что разобрался. Apache работал, но последней командой, которая заставляла ftp работать при работающем selinux, была
setsebool -P ftpd_full_access on
Как только я это установил, FTP работал как надо. Итак, теперь я могу использовать FTP со своего компьютера с Windows 7, обновлять, публиковать, изменять файлы моего веб-сайта, и Apache с радостью доставляет контент. Ух ты ... на это ушли дни. Псих. Я настраиваю другого пользователя просто для тестирования, и все работает нормально.