Списки контроля доступа
Прямой ответ - списки контроля доступа (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, так что используйте их.
Просто сделайте это:
Теперь каждый в
teamA
группе может сделать все внутри/src/teamA
Магия - это бит sgid (set group id) в каталоге.
источник
Если вы хотите, чтобы пользователи могли иметь доступ к файлам в общей папке (например, разные люди входят в систему на одном компьютере в разное время и нуждаются в доступе к одним и тем же файлам), вы можете использовать
bindfs
для создания общего каталога.Это позволяет нескольким локальным пользователям читать и записывать (создавать, удалять, переименовывать, изменять ...) все файлы (включая вновь созданные) из общего каталога и его подкаталогов. Каждый пользователь увидит файлы и папки (включая вновь созданные) как принадлежащие им.
Вкратце, вы бежите
сделать / home / shared доступным для user1, user2 и user3.
инструкции
См. Bindfs-SharedDirectoryLocalUsers (документация по Ubuntu) для получения подробных инструкций, включая постоянную настройку (каждый раз, когда вы включаете компьютер). Я использую это на своей собственной машине для нескольких каталогов, каждая из которых имеет разные группы общего доступа (одна папка доступна для всех учетных записей, другая - только для рабочих учетных записей, другая - только для личных учетных записей).
Из поста:
Списки контроля доступа (ACL)
Примечания к документации:
См. Ответ Жиля для более подробной информации.
источник
Вы можете объединить решение Shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.
источник