Я пытаюсь настроить свой новый 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-коды.
Простите за плохой английский.
Спасибо.
Файл passwd доступен для чтения всем пользователям. Это совершенно нормально. То же самое для /. Программам необходим доступ к / etc / passwd для сопоставления имен пользователей с идентификаторами. Фактические пароли хранятся в / etc / shadow, который более ограничен.
Если по какой-то причине вы не используете Если вы хотите, чтобы программы видели этот файл, вам следует создать chroot-тюрьму, которая предоставляет ей собственный поддельный корневой каталог и отдельную копию всех необходимых файлов. Но для большинства служб в этом нет необходимости.
Вы можете предотвратить доступ за пределами запрещенных границ, установив и используя AppArmour или SELinux.
На самом деле вы говорите следующее: «сценарии, которые я помещаю в систему и запускаю, имеют доступ для чтения файлов в системе, доступных для чтения всем ».
Да, да, они есть.