Я настраиваю сервер Ubuntu, на котором будет 3 или 4 VirtualHosts, с которыми я хочу, чтобы пользователи могли работать (добавлять новые файлы, редактировать старые файлы и т. Д.). В настоящее время я планирую хранить сайты в /var/www
но не возражал бы против его перемещения.
Я знаю, как добавлять новых пользователей, я знаю, как добавлять новые группы. Я не уверен, как лучше всего справиться с тем, что пользователи могут редактировать только некоторые сайты. Я прочитал ответы здесь в этом вопросе, поэтому я подумал, что могу создать группу и добавить пользователей в эту группу, но тогда все они будут иметь по существу одинаковые разрешения. Мне просто нужно будет назначать каждому пользователю определенные разрешения? Или есть лучший способ справиться с этим?
Добавлено: я также должен отметить, что каждый пользователь будет входить в систему через SSH / sFTP. Пользователям никогда не нужно будет делать что-либо еще на сервере.
Вы должны использовать группу для каждого веб-сайта. И сделайте всех пользователей, которым нужен доступ для записи, членами соответствующей группы.
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