Лучшие разрешения / владение для корня документа apache

14

Мне нужна помощь в настройке правильных прав доступа или владения корнем документа apache. Вот что мне нужно:

  • разные сайты хранятся в /var/www/html/<site>
  • два пользователя должны обновлять / управлять сайтами через ssh
  • владелец должен отличаться от пользователя apache (для безопасности)

Как я могу это сделать? На данный момент все файлы доступны для записи, что не очень хорошо. Сервер работает CentOS 5.5

Благодарность

Marco
источник
Для более подробного ответа с другими вариантами защиты документа см. Serverfault.com/questions/357108/…
Quinn Comendant
Я думаю , что лучше хранить каждый веб - сайт в отдельном месте (не ставить как на DocumentRoot, использование 2 виртуальных хостов) , то каждый пользователь сисадмин владеет только его собственный веб - сайт и установить владельца группы обоих веб - сайтов каталогов в качестве группы Apache
бухгалтер

Ответы:

22

Создать новую группу

groupadd webadmin

Добавьте своих пользователей в группу

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Смена владельца каталога сайтов

chown root:webadmin /var/www/html/

Изменить права доступа к каталогу сайтов

chmod 2775 /var/www/html/ -R

Теперь любой может читать файлы (включая пользователя apache), но только root и webadmin могут изменять их содержимое.

Энди
источник
Выглядит хорошо. Но что произойдет, если пользователь создает новые файлы или копирует обновленные файлы. Эти разрешения применяются автоматически? Или ему нужно chown и chmod каждый раз?
Марко
Скопированные файлы сохраняют права доступа / права собственности. Права доступа к файлам по умолчанию для новых файлов обрабатываются umaskкомандой. Более подробная информация здесь osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Энди
3
вы могли бы сделать каталог setgid webadmin, чтобы помочь с новыми файлами
covener
1
^ +1. Быстрый способ был бы: >> chmod 2775 -R / var / www / html /
Джеймс Бродхед
@James та, обновлено
Энди
2

Я предпочитаю монтировать раздел с помощью -o acl. Это позволяет вам использовать команду setfacl, чтобы задавать детализированные разрешения для файлов и папок, вместо того, чтобы указывать только разрешения для группы пользователей.

Поэтому поместите acl в строку вашего раздела в / etc / fstab или перемонтируйте с помощью mount -o remount, acl / mnt / xy, а затем передайте право собственности на ваш веб-каталог никому: никому. Перейдите к 770 и используйте setfacl для предоставления прав записи только в те папки, которые в этом нуждаются, например. предоставьте www-данным (или пользователю, от имени которого работает ваш веб-сервер) разрешения на запись для папки загрузки и дайте разрешения на запись вашему собственному пользователю для всего каталога.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Теперь никто не может читать ваши файлы, кроме вашего веб-сервера и вашего собственного пользователя. Вы можете записывать в каждый файл в папке, а веб-сервер может записывать только в папку загрузки.

К. Норберт
источник