403 Запрещено для файла, размещенного в /var/www/html при попытке загрузки?

403 Запрещено для файла, размещенного в /var/www/html при попытке загрузки?

Я пытаюсь скопировать файл с сервера на настольный компьютер. Я поместил его в /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.

Связанный контент