Я пытаюсь скопировать файл с сервера на настольный компьютер. Я поместил его в /var/www/html
(где находятся веб-страницы), и когда я пытаюсь загрузить его, я получаю 403 Forbidden
. Я даже пробовал chmod 777
на файле, но это не исправляет ситуацию.
Что я делаю не так и почему возникает эта ошибка?
решение1
Вам нужно изменить файл так, чтобы он принадлежал пользователю 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
. В качестве меры предосторожности используйте эту маску только в тех каталогах, где это необходимо (например, для записи данных кэша веб-сайта или загрузки файлов)
решение2
Я использую CentOS 7 + Apache, единственная команда, которая решила мою проблему, это (потому что я пробовал chown+chmod до этого):
sudo setenforce 0 #отключить SELinux
И тогда я могу загрузить файл (в моем случае anyfile.zip), но это может открыть двери для злоумышленников, которые смогут написать и выполнить код.
решение3
У вас, вероятно, естьSELinuxвключен. Самый простой способ обойти это для текущей цели — присвоить файлу идентификатор пользователя, под которым запущен Apache.