Я установил apache2-mpm-itk на новый VPS для запуска нескольких сайтов на одном сервере с изоляцией, следуя приведенным здесь инструкциям: http://www.webtatic.com/packages/httpd-itk/. Я хочу заблокировать его как можно больше, но также мне нужно иметь возможность управлять файлами на каждом виртуальном хосте как каждый пользователь виртуального хоста.
Он рекомендует установить владельца корневой папки и разрешения следующим образом:
chown owner-user:vhost-group /path/to/webroot
chmod o-rwx /path/to/webroot
ls -ald /path/to/webroot
# drwxr-x--- 20 owner-user vhost-group 4096 Apr 5 19:38 /path/to/webroot
На моем сервере у меня есть root, пользователь без полномочий root, который является sudoer, и пользователь vhost для этого сайта (у которого нет привилегий sudo).
Настройка корневого веб-сайта с разрешениями 755, а затем установка владельца на владельца-пользователя (я установил его для своего пользователя sudoer без полномочий root) означает, что я не могу изменять файлы и каталоги в веб-корневом каталоге как пользователь vhost. (нет групповых разрешений на запись в корневом веб-каталоге). Единственное, что я могу придумать, это дать пользователю vhost-user привилегии sudo, но это не кажется безопасным.
В статье говорится, что пользователь-владелец является владельцем корневого веб-сайта, потому что:
Причина, по которой я не сменил пользователя каталога на vhost-user, заключается в том, что он предоставит процессу httpd доступ на запись, о котором вы все равно должны позаботиться, так как если в коде пользователя есть уязвимости, файлы могут быть взломаны .
Как я могу установить разрешения / пользователей и т. Д., Чтобы они были безопасными, но по-прежнему позволяли пользователю vhost управлять своим собственным домашним каталогом?
Кроме того, в корневом веб-каталоге, как мне установить разрешения для моих файлов и каталогов PHP, чтобы они были изолированы от других пользователей / групп на том же сервере?
Сначала замечание. Вы должны были использовать
chown -R owner-user:vhost-group /path/to/webroot
chmod -R 640 /path/to/webroot
chmod -R u+X,g+X /path/to/webroot
если /path/to/webroot
не оказалось пустым.
Глупый, но, к сожалению, правильный ответ на ваш вопрос прост: извините, ваш вопрос не имеет смысла. Зачем?
Вы определяете (т.е. принимаете определение этого веб-сайта) «безопасный» как «нет доступа для записи для пользователя X». И теперь вы хотите, чтобы оба были «безопасными» и имели права записи для этого пользователя. Очевидно, это невозможно.
На ваш вопрос можно будет ответить, только если в данном случае вы дадите как точное, так и удобное определение понятия «безопасность».
Мое первое предложение - разделить пользователей. Зачем vhost-user
управлять файлами, а не дополнительными vhost-manage
учетная запись? Имеет ли смысл иметь это требование?
Следующий момент: отсутствие доступа на запись в каталог просто не позволяет вам удалять и создавать файлы, но не позволяет изменять эти файлы. Вам просто нужен доступ на запись к этим файлам (не обязательно ко всем файлам).
Мне не кажется, что создание и удаление файлов с помощью сценария sudo представляет угрозу безопасности; особенно тогда, если это делается не как root, а как пользователь, единственной целью которого является владение этим деревом каталогов.