Почему nginx может получить доступ к / etc / passwd? [закрыто]

Я пытаюсь настроить свой новый VPS с парой сайтов.

Установлены nginx, php-fpm и другие необходимые службы.

Я настраиваю серверный блок nginx (виртуальные хосты) для своего сайта, а затем пытаюсь создать файл php для тестирования. Все работает хорошо, но затем я хочу попробовать файл echo file_get_contents ('/ etc / passwd') для проверки безопасности. И его работа тоже, файл test.php может получить доступ к моему файлу VPS etc / passwd и многому другому.

После того, как я попробую echo shell_exec ('ls /') , я покажу мои корневые папки.

Так это нормально? Или как я могу это предотвратить. Я хочу запретить доступ всем, кроме / var / www для пользователя www-data , у которого запущены PHP-коды.

Простите за плохой английский.

Спасибо.

1
задан 14 April 2014 в 15:32
2 ответа

Файл passwd доступен для чтения всем пользователям. Это совершенно нормально. То же самое для /. Программам необходим доступ к / etc / passwd для сопоставления имен пользователей с идентификаторами. Фактические пароли хранятся в / etc / shadow, который более ограничен.

Если по какой-то причине вы не используете Если вы хотите, чтобы программы видели этот файл, вам следует создать chroot-тюрьму, которая предоставляет ей собственный поддельный корневой каталог и отдельную копию всех необходимых файлов. Но для большинства служб в этом нет необходимости.

12
ответ дан 3 December 2019 в 16:11

Вы можете предотвратить доступ за пределами запрещенных границ, установив и используя AppArmour или SELinux.

На самом деле вы говорите следующее: «сценарии, которые я помещаю в систему и запускаю, имеют доступ для чтения файлов в системе, доступных для чтения всем ».

Да, да, они есть.

2
ответ дан 3 December 2019 в 16:11

Теги

Похожие вопросы