У меня 2 пользователя: Алиса и Боб и 2 группы: Менеджмент и Персонал. У Алисы есть первичная группа «Управление» и вторичные группы «Персонал» и «Алиса». У Боба есть первичная группа Персонал и вторичная группа Боб.
Теперь им обоим нужен доступ для чтения / записи в локальный репозиторий Subversion в / var / svn / new-project /. Проблема в том, что, когда Алиса фиксируется в репозитории, Боб больше не может выполнять фиксацию в связи с тем, что он не входит в группу управления, которая является основной группой Алисы.
Мой вопрос: как включить как чтение, так и запись в репозиторий без нарушения разрешений, сохраняя их в отдельных первичных группах, без изменения каталога репозитория на 777 и без запуска cronjob, который фиксирует разрешения каждую минуту?
Используйте ACL (списки контроля доступа). Документация здесь: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html
Пример вашей настройки:
setfacl --recursive -m u:Alice:rwx /var/svn/new-project/
setfacl --recursive -m u:Bob:rwx /var/svn/new-project/
Вероятно, вы захотите включить бит setgid в каталоге и установить группу каталога как общую группу (в данном случае Персонал). setuid / setgid в каталоге заставляет файлы, созданные в этом каталоге, указывать владельца / группу каталога.
Сделайте структуру папок репозитория принадлежащей группе Персонал.
Разрешения на 770 и убедитесь, что у обоих пользователей есть umask 00x.
(При необходимости оберните клиента Subversion в небольшой сценарий, который устанавливает umask на 00x перед использованием.)
Если ваш клиент Subversion не сделает что-то необычное с правами доступа к файлам при обновлении репозитория, этого должно быть достаточно.