
У меня есть веб-приложение на машине с общим хостингом Linux. Допустим, у меня есть файл .htpasswd
, некоторые конфигурации, которые хранят пароль базы данных, и я не хочу, чтобы кто-то рылся в моем исходном коде в поисках уязвимостей.
Веб-серверу (apache) нужен доступ на чтение (и запись в некоторых случаях) к вышеуказанным файлам. Однако я не хочу, чтобы другие люди на том же общем хосте имели доступ.
Я никогда не понимал, как это должно работать. Вопросздесьпохоже, но, похоже, больше направлено на предотвращение случайного размещения файла паролей веб-приложением.
AFAIK, все, с чем мне приходится работать, это базовые разрешения Linux. На одном сервере от меня ожидают предоставления "другим" разрешений для Apache. Затем удаление разрешений группы, в которой находятся все остальные пользователи, лишает их доступа. Это выглядит довольно окольным путем. На другом сервере есть группа, nobody
настроенная public_html
только с разрешениями группы.
Одна из проблем заключается в том, что если пользователь Apache имеет доступ к моим файлам, можно написать и выполнить простой скрипт, чтобы другой пользователь получил доступ:
<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>
TLDR: Мне нужно, чтобы Apache имел доступ к исходным файлам и паролям, но не другим пользователям на той же машине (кроме администраторов, конечно).
Какова общепринятая схема?
Похожие вопросы:
- Как разрешить 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
решение1
Создайте группу, добавьте в нее apache/www-data. Затем:
chown -R apache:имя_группы /var/www/mywebapp/ && \ chmod -R 640 /var/www/mywebapp
Это предоставит владельцу права на чтение и запись (6), а группе — на чтение (4) для папки и всех подкаталогов и файлов. Пользователь apache сможет получить доступ к файлам, как и владелец, но другие не смогут. Вы должны убедиться, что они не смогут использовать su для пользователя apache.
Используйте блоки каталогов в конфигурации vhost для ограничения доступа на уровне папок. http://httpd.apache.org/docs/2.0/misc/security_tips.html#См. Защита файлов сервера http://www.anchor.com.au/hosting/dedicated/Усиление_безопасности_виртуального_хоста_Apache