Списки контроля доступа
Прямой ответ - списки контроля доступа (ACL) . Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группе, которая требует, чтобы пользователи постоянно об этом думали). Они требуют, чтобы системный администратор (root) определил группы, если вы хотите, чтобы файлы были доступны только именованной группе (root может делегировать, например, принимая группы из LDAP, но это другая история).
Вам необходимо, чтобы участвующие пользователи имели umask 022. Если они регулярно создают файлы, не предназначенные для чтения, эта схема не будет работать. Но если у них есть ограничительный umask, вероятно, потому что они не хотят делиться файлами в любом случае.
Включение ACL
Ubuntu по умолчанию не включает ACL, поэтому существует одноразовое требование администратора. Отредактируйте, /etc/fstab
используя ваш любимый редактор, и измените каждую строку, соответствующую файловой системе, где вы хотите обмениваться файлами: добавьте acl
к опциям. (Убедитесь, что вы не меняете никакую другую строку и не используете редактор, который переносит длинные строки.) Вот пример строки с acl
добавленной опцией:
UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors=remount-ro,acl 0 1
Чтобы опция вступила в силу в первый раз, используйте команду, подобную следующей (для каждой файловой системы):
sudo mount -o remount,acl /
Установите инструменты ACL из acl
пакета.
Настройка общего каталога
Чтобы файлы были доступны группе mygroup
:
setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root
Если люди создают файлы и копируют их в общий каталог, файлы будут доступны для чтения всем пользователям (из-за маски), и любой член группы сможет добавлять и удалять файлы (поскольку группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо, иначе вы сразу же столкнетесь с конфликтами редактирования.
Если у вас нет группы Unix, вы можете добавлять пользователей по одному:
setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root
Контроль версий
Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то предотвратить конфликты редактирования. Это контроль версий.
Вам не нужно ничего из этого, чтобы поделиться репозиторием git. Вы знаете, что есть решения, такие как Gitosis, так что используйте их.