Какие chmod и владелец: групповые настройки лучше всего подходят для веб-приложения?
Мы настраиваем веб-приложение PHP на CentOS и все наши файлы в настоящее время находятся в / var / www / html / project /
Apache настроен для работы как apache:apache и имеет доступ к указанному выше каталогу. Прямо сейчас наши файлы и каталоги имеют следующие права:
владелец = корневая группа = apache
КАТАЛОГИ: drwxr-x--- root apache
ФАЙЛЫ: -rw-r----- root apache
Это безопасная установка? Или лучше использовать нового пользователя, например, "проект", чтобы быть владельцем всех файлов и каталогов?
2 ответа
Рекомендуется, чтобы владельцем была любая учетная запись с ограниченными правами, используемая для загрузки файлов на сервер и управления ими. Группой часто является учетная запись, под которой работает php, поэтому в этом случае apache будет правильным. Другие разрешения должны быть установлены на ничего, как они есть. Вы близки к совершенству.
Если у вас есть ситуация, когда несколько учетных записей могут изменять / редактировать файлы, вы можете создать сценарий cron, который рекурсивно прерывает каталог каждый час или около того, чтобы поддерживать правильное владение. Та же самая техника работает, чтобы сохранить правильные разрешения также.
Кроме того, вы можете изменить umask учетной записи ограниченного пользователя, владельцем которой он является, в соответствии с вашей схемой разрешений.
Вы определенно играете в это безопасно.
Ваши настройки не позволят вам создавать дополнительные папки в ваших DIRECTORIES, если вам потребуется по требованию через apache.
Я бы посоветовал вам использовать следующие разрешения:
DIRECTORIES: drwxrwx--- root apache
FILES: -rw-rw---- root apache
Добавьте ваших разработчиков в группу apache, чтобы они могли продолжать запись в эти файлы, если они войдут в систему через ssh или ftp.
Вы можете иметь либеральные права доступа к файлам, если можете доверять пользователям, которые их запускают. Если ваш код надежен, вы можете позволить группе apache делать больше с разрешениями.
Редактировать: В общем, дайте apache:
rwx if it needs to create folders
rw if it needs to create files
r if everything is static
В конце концов, все сводится к тому, чтобы дать вам только необходимые разрешения. Сделайте их как можно более консервативными и откройте их при разработке приложения, если это необходимо.
Одна маленькая вещь о группах. Вы увидите несколько примеров, которые показывают это (это тоже правильные настройки):
DIRECTORIES: drwxrwxrw- root somegroup
FILES: -rw-rw-r-- root somegroup
Эти разрешения необходимы для запуска веб-приложения, поскольку пользователь apache не является частью разрешений группы. В этом случае Apache считается всеми, поэтому вам нужно установить разрешения, чтобы каждый мог взаимодействовать с вашим сайтом. Под всеми я не имею в виду всех в мире (то есть анонимных). Я имею в виду всех, кто в данный момент является пользователем вашего сервера (посмотрите в /etc/passwd, чтобы получить список).