У меня есть веб-приложение на машине с виртуальным хостингом Linux. Допустим , у меня есть файл .htpasswd
, некоторые конфиги, которые хранят пароль базы данных и, как правило, не хотят, чтобы люди просматривали мой исходный код в поисках уязвимостей.
Веб-серверу (apache) необходим доступ на чтение (и в некоторых случаях запись) к указанным выше файлам. Однако я не хочу, чтобы другие люди на том же хосте имели доступ.
Я никогда не понимал, как это должно работать. Вопрос здесь аналогичен, но, похоже, больше указывает на то, что веб-приложение не может случайно разместить файл паролей.
AFAIK, все, с чем я должен работать - это базовые разрешения для Linux. На одном сервере я должен дать "другим" разрешения для apache. Затем удаление разрешений группы, в которые входят все остальные пользователи, лишает их доступа. Это кажется довольно окольным. На другом сервере в nobody
установлена группа public_html
установлены только разрешения группы.
Одна из проблем заключается в том, что если пользователь apache имеет доступ к моим файлам, простой сценарий может быть написан и выполнен для получения доступа другим пользователем:
<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>
TLDR: мне нужен apache для доступа к исходным файлам и паролям, но не для других пользователей на той же машине (за исключением администраторов ofc).
Что такое общие настройки?
Смежные вопросы:
- Как разрешить apache доступ к файлу, но запретить другим пользователям его просматривать?
- https://unix.stackexchange.com/questions/30879/what-user-should-apache-and-php-be-running-as-what-permissions-should-var-www
- https://askubuntu.com/questions/26848/permissions-issue-how-can-apache-access-files-in-my-home-directory