Как установить структуру разрешений для нескольких пользователей, редактирующих несколько сайтов в /var/www в Ubuntu 9.10?
Я настраиваю сервер Ubuntu, который будет иметь 3 или 4 виртуальных хоста, с которыми я хочу, чтобы пользователи могли работать (добавлять новые файлы, редактировать старые файлы и т. Д.). В настоящее время я планирую хранить сайты в /var/www
но не будет против его перемещения.
Я знаю, как добавлять новых пользователей, я знаю, как добавлять новые группы. Я не уверен, что лучший способ обработки пользователей - это возможность редактировать только некоторые сайты. Я перечитал ответы здесь в этом вопросе, поэтому я подумал, что мог бы создать группу и добавить пользователей в эту группу, но тогда у всех них были бы по существу одинаковые разрешения. Я только собираюсь назначить каждому пользователю определенные разрешения? Или есть лучший способ справиться с этим?
Добавлено: Я должен также отметить, что каждый пользователь будет входить через SSH/sFTP. Пользователям никогда не нужно будет ничего делать на сервере.
1 ответ
Вы должны использовать группу для каждого сайта. И сделать всех пользователей, которым нужен доступ для записи, быть членами соответствующей группы.
groupadd site1_com
mkdir /var/www/www.site1.com
chgrp site1_com /var/www/www.site1.com
find /var/www/www.site1.com -type d -print0|xargs -0 chmod g=rwxs
chmod -R g+rw /var/www/www.site1.com
usermod -aG site1_com user1
Теперь каждый раз, когда пользователи создают файлы в папке /var/www/www.site1.com, они должны использовать umask 0002
(в ~/.bashrc или в сценарии развертывания) или они должны установить разрешение для группы на чтение и запись. chmod -R g+rw /var/www/www.site1.com 2>/dev/null
,
Другим решением для установки разрешений было бы использование dnotify. Создайте /usr/local/sbin/dnotify_handler-reset_perms.sh
скрипт со следующим содержанием:
#! /bin/sh
CHANGED_FOLDER=$1
find $CHANGED_FOLDER -maxdepth 1 -mmin 0 -not -perm -g+w -exec chmod g+w {} \;
И добавить в /etc/rc.local
:
dnotify --recursive /var/www/www.site1.com --create --execute --background /usr/local/sbin/dnotify_handler-reset_perms.sh