Права доступа к каталогу веб-сервера

Мне нужна помощь в понимании прав доступа к каталогу веб-сервера. Apache, CentOS, PHP, Mysql

Например, у меня есть несколько сайтов в / var / www / html Они находятся по следующим путям: /var/www/html/www_domainname_com

Внутри каждого сайта у меня может быть такой путь, как /lib/mysql/ как PHP-соединение, конфигурация базы данных и т. д.

Какие у меня должны быть разрешения, чтобы кто-то не мог просто перейти к этому каталогу? Должен ли я просто.htaccess их?

У меня есть apache: apache как владелец всех моих веб-каталогов.

Могу ли я запретить кому-либо сканировать определенные каталоги моего веб-сервера? У меня есть robots.txt, но что сказать гусеницу, которому он подчиняется?

Итак, подведем итог: 1. Каков наилучший владелец / набор разрешений для моих конфиденциальных файлов, которые нужны веб-серверу, php или mysql, но я не хочу, чтобы люди просматривали их?

  1. Можно ли предотвратить прямое сканирование порций?

3 ответа

Да.

Что вы хотите сделать, так это наложить директиву open_basedir для каждого сайта. Вы указываете каталог, и, следовательно, ни один PHP-скрипт не сможет выползти из этого каталога.

Это означает, что вам нужна определенная директива для каждого веб-сайта, поэтому либо вы устанавливаете вышеупомянутую директиву через.htaccess, либо через php.ini для каждого сайта.

Для реализации последнего варианта вам понадобится suPHP или что-то подобное.

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

В то время как ответ Антуана Бенкемуна затрагивает конкретные вопросы, которые вы затронули (которые задавались и отвечали много раз прежде, например, здесь), очень плохая идея, чтобы все каталоги / файлы были доступны для записи с помощью того же uid, на котором работает веб-сервер.

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

Обратите внимание, что это не замена опции open_basedir для каждого vhost.

Вы также должны установить путь сохранения сеанса по умолчанию и включить путь для каждого хоста (это должно быть доступно для записи для uid веб-сервера).

C.

Другие вопросы по тегам