4

Я пытаюсь скопировать файл со своего сервера на настольный компьютер. Я поместил его в /var/www/html (там, где находятся веб-страницы), и когда я пытаюсь загрузить его, я получаю 403 Forbidden . Я даже попробовал chmod 777 на файл, и это не исправить.

Что я делаю не так и почему я получаю эту ошибку?

3 ответа3

9

Вам нужно изменить файл так, чтобы он принадлежал пользователю Apache. По умолчанию Apache будет работать как пользователь www-data (находится в группе www-data). Вы можете использовать chown чтобы изменить владельца файла (возможно, придется использовать с sudo):

chown -R www-data:www-data /var/www/html

Наконец, вы должны убедиться, что файлы имеют как минимум права на чтение и выполнение для пользователя Apache. Вы уже сделали это, как вы сказали, но после изменения всех разрешений / владельцев файлов, вы должны убедиться, что все в порядке, запустив ls -l /var/www/html . В качестве меры безопасности также целесообразно удалить все разрешения для других пользователей:

chmod -R 0550 /var/www/html

Обратите внимание, что если вы используете PHP или другой язык сценариев, требующий доступа для записи, вам, возможно, придется изменить маску разрешения выше на 0770 . В качестве меры предосторожности используйте эту маску только в каталогах, где это необходимо (например, для записи данных кэша веб-сайта или загрузки файлов)

4

Я использую CentOS 7 + Apache, единственная команда, которая разрешила мою проблему - это (потому что я пробовал chown + chmod раньше):

sudo setenforce 0 # отключить SELinux

И тогда я могу загрузить файл (в моем случае anyfile.zip), но он может открыть двери для злоумышленников, пишущих и исполняющих код.

0

У вас, вероятно, включен SELinux . Простейший способ обойти это для текущей цели - прикрепить файл к идентификатору пользователя, под которым работает Apache.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .