Apache, www-data, права на файлы и директории?

На сервере есть директория /home/www/ в которой лежат директории с сайтами:


/home/www/site1.com — должен иметь полный доступ пользователь user1 и www-data;

/home/www/site2.com — должен иметь полный доступ пользователь user2 и www-data;

/home/www/site3.com — должен иметь полный доступ пользователь user3 и www-data;


где www-data — это apache2.


Какие группы и владельцев мне нужно выставлять на файлы и директории?


Апач для каждого сайта создает логи, т.е. текстовые файлы, куда записывает информацию, к примеру:

/home/www/site1.com/log/2013-05-15.txt.

Пользователи не должны видеть, что находится НЕ в их директориях.


Ну и нужно ли добавлять пользователей (user1-3, www-data) в другие группы?
  • Вопрос задан
  • 49724 просмотра
Пригласить эксперта
Ответы на вопрос 6
Anonym
@Anonym
Программирую немного )
Добавьте www-data в группы user1, user2 и user3.
Владельцами каталогов сделайте user1, user2 и user3 соответственно.
Выставьте права 770.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
Чуть выше Anonym первоначально дал неправильный совет, но в комментариях сам же и указал в чем ошибка. sledopit предлагает правильный вариант, но для этого требуются права на сервер допускающие установку дополнительных модулей. Есть еще такой официальный модуль как suexec. Но если разговор про обычный шаред, то там такая задача в принципе не решаема (разве только если указанные модули уже там установлены).

Но лично я на своих серверах предпочитаю связку nginx+php-fpm+chroot. Для каждого сайта рабочие процессы запускаются с правами владельца сайта, допустим u1:u1. На корневой директории сайта стоит 0710 и u1:nginx, на папке log 0770/u1:nginx. На всех остальных файлах стоят права 0640/u1:u1, на папках 0711/u1:u1. Если файл публичный, то он должен относиться к группе nginx. Ни какой php одного сайта ни чего не может прочесть в файлах другого.
Ответ написан
@arbuzmaster
открываем консоль, пишем
su
пароль- вводим пароль root
cd /
cd home/
chmod -R 770 www
cd www/
chown -R user1:www-data site1.com
chown -R user2:www-data site2.com
chown -R user3:www-data site2.com
Ответ написан
sledopit
@sledopit
Посмотрите на apache-mpm-itk.
Оно позволяет запускать каждый вирт хост от отдельного пользователя, определяемого в конфиге без приседания с setfacl, общими группами и т.д.
Ответ написан
truekenny
@truekenny
Для php есть параметр конфигурации open_basedir, который позволяет ограничить доступ скриптам внутри определенных директорий.
Ответ написан
Комментировать
@Seo5
для apache полный мануал https://saitsozdanie.ru/sisadmin/ustanovka-prav-po...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы