Хороший и простой способ обмена файлами на локальной машине

Я хотел бы иметь каталог со следующими свойствами:

Многие пользователи могут копировать в него файлы Эти файлы могут быть удалены / изменены этими пользователями (пользователь A может удалить / изменить файл, который был скопирован в этот каталог)

он не может быть выполнен с использованием обычных прав доступа к файлам (поскольку разрешения сохраняются на копии).

Вот что я нашел в сети:

] Многие пользователи могут копировать в него файлы blueprint

Некоторые примеры использования:

blueprint Эти файлы могут быть удалены / изменено этими пользователями (пользователь A может удалить / изменить файл, который был скопирован в этот каталог) Разрешить многим разработчикам изменять тестовый экземпляр php-приложения, не давая им root (я думаю, они будут копировать файлы) --- I «Я возглавляю команду некоммерческих младших разработчиков, и мне нужно сохранить это просто!

РЕДАКТИРОВАТЬ

Уставка AFAIK для бита SGID не имеет значения, она влияет только на вновь созданные файлы --- и основной рабочий процесс для этих случаев использования ivnolves копирование и другие операции (которые делят файл без изменений )

13
задан 25 November 2010 в 00:47

28 ответов

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs для создания общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталогов. Каждый пользователь увидит файлы и папки (в том числе вновь созданные).

Вкратце, вы запускаете

sudo bindfs -o perms=0700,mirror-only=user1:user2:user3 /home/shared /home/shared

, чтобы сделать / home / shared доступным для пользователя1, user2 и user3.

Инструкции

См. Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) для получения полных инструкций, включая постоянную настройку (каждый раз при включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Он позволяет указать права собственности и разрешения файлов внутри точки монтирования. ... Главное преимущество заключается в том, что новые файлы, созданные в общей папке, наследуют право собственности & amp; разрешения.

Инструкции

Примечания к документации:

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования ), с настройками разрешений. Он позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

Если вы хотите настроить более расширенные разрешения для разных пользователей и / или группы, попробуйте Списки контроля доступа. [ ! d17]

1
ответ дан 25 July 2018 в 22:50

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 25 July 2018 в 22:50

Просто сделайте следующее:

mkdir /src/teamA addgroup teamA chgrp teamA /src/teamA chmod g+rws /src/teamA

Теперь все в группе teamA могут делать все внутри /src/teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 25 July 2018 в 22:50

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL). Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d1]

Вам нужно, чтобы участвующие пользователи имели umask из 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu не включает ACL по умолчанию, поэтому есть один -time-требование администратора. Измените /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

Если люди создают файлы и копируют их в общий каталог, файлы будут доступны для чтения по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо, или вы сразу столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

setfacl -m user:bob:rwx /path/to/shared/root setfacl -d -m user:bob:rwx /path/to/shared/root

Управление версиями

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы поделиться репозиторием git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 25 July 2018 в 22:50
  • 1
    ACL будет работать отлично, если бы автоматическое наследование не прерывалось cp (и mv?), Которое отбрасывает (игнорирует) набор acl по умолчанию на уровне целевого каталога. – useful 21 October 2014 в 14:40

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs для создания общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталогов. Каждый пользователь увидит файлы и папки (в том числе вновь созданные).

Вкратце, вы запускаете

sudo bindfs -o perms=0700,mirror-only=user1:user2:user3 /home/shared /home/shared

, чтобы сделать / home / shared доступным для пользователя1, user2 и user3.

Инструкции

См. Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) для получения полных инструкций, включая постоянную настройку (каждый раз при включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Он позволяет указать права собственности и разрешения файлов внутри точки монтирования. ... Главное преимущество заключается в том, что новые файлы, созданные в общей папке, наследуют право собственности & amp; разрешения.

Инструкции

Примечания к документации:

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования ), с настройками разрешений. Он позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

Если вы хотите настроить более расширенные разрешения для разных пользователей и / или группы, попробуйте Списки контроля доступа. [ ! d17]

1
ответ дан 2 August 2018 в 04:14

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 2 August 2018 в 04:14

Просто сделайте следующее:

mkdir /src/teamA addgroup teamA chgrp teamA /src/teamA chmod g+rws /src/teamA

Теперь все в группе teamA могут делать все внутри /src/teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 2 August 2018 в 04:14

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL). Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d1]

Вам нужно, чтобы участвующие пользователи имели umask из 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu не включает ACL по умолчанию, поэтому есть один -time-требование администратора. Измените /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

Если люди создают файлы и копируют их в общий каталог, файлы будут доступны для чтения по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо, или вы сразу столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

setfacl -m user:bob:rwx /path/to/shared/root setfacl -d -m user:bob:rwx /path/to/shared/root

Управление версиями

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы поделиться репозиторием git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 2 August 2018 в 04:14
  • 1
    ACL будет работать отлично, если бы автоматическое наследование не прерывалось cp (и mv?), Которое отбрасывает (игнорирует) набор acl по умолчанию на уровне целевого каталога. – useful 21 October 2014 в 14:40

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 4 August 2018 в 20:19

Просто выполните это:

  mkdir / src / teamA команда addgroupA chgrp teamA / src / teamA chmod g + rws / src / teamA  

Теперь все в группе teamA могут делать все внутри / src / teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 4 August 2018 в 20:19

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL) . Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d14]

Вам нужно, чтобы участвующие пользователи имели umask от 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu по умолчанию не включает ACL, поэтому есть один -time-требование администратора. Измените / etc / fstab , используя ваш любимый редактор, и измените каждую строку, соответствующую файловой системе, где вы хотите обмениваться файлами: добавьте acl в параметры. (Не забудьте изменить другую строку и не использовать редактор, который переносит длинные строки.) Ниже приведен пример строки с добавленной опцией acl :

  UUID  = 5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors = remount-ro, acl 0 1  

Чтобы вариант вступил в силу в первый раз, используйте команду, подобную следующей (для каждая файловая система):

  sudo mount -o remount, acl /  

Установите инструменты ACL из пакета acl . [ ! d18]

Настройка общего каталога

Чтобы файлы были разделены группой mygroup :

  setfacl -m group: mygroup  : rwx / path / to / shared / root setfacl -d -m group: mygroup: rwx / path / to / shared / root  

Если люди создают файлы и копируют их в общий каталог , файлы будут читаемыми по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо или вы сразу же столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

  setfacl -m user: bob: rwx / path / to / shared / root setfacl -d -m user: bob: rwx / path / to / shared / root  [  ! d27] 

Контроль версий

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы разделить репозиторий git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 4 August 2018 в 20:19

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs , чтобы создать общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталоги.

Вкратце, вы запускаете

  sudo bindfs -o perms = 0700, зеркало-  only = user1: user2: user3 / home / shared / home / shared  

, чтобы сделать / home / shared доступным для пользователей1, user2 и user3.

Инструкции

Подробные инструкции см. в Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) , включая настройку навсегда (при каждом включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Это позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

...

Главное преимущество в том, что новые файлы, созданные в общей папке, наследуют владение & amp; Разрешения.

Списки контроля доступа (ACL)

Примечания к документации:

Если вы хотите установить более расширенные разрешения для разные пользователи и / или группа попробуют Списки контроля доступа .

Подробнее см. Gilles answer .

1
ответ дан 4 August 2018 в 20:19

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 6 August 2018 в 04:19

Просто выполните это:

  mkdir / src / teamA команда addgroupA chgrp teamA / src / teamA chmod g + rws / src / teamA  

Теперь все в группе teamA могут делать все внутри / src / teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 6 August 2018 в 04:19

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL) . Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d14]

Вам нужно, чтобы участвующие пользователи имели umask от 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu по умолчанию не включает ACL, поэтому есть один -time-требование администратора. Измените / etc / fstab , используя ваш любимый редактор, и измените каждую строку, соответствующую файловой системе, где вы хотите обмениваться файлами: добавьте acl в параметры. (Не забудьте изменить другую строку и не использовать редактор, который переносит длинные строки.) Ниже приведен пример строки с добавленной опцией acl :

  UUID  = 5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors = remount-ro, acl 0 1  

Чтобы вариант вступил в силу в первый раз, используйте команду, подобную следующей (для каждая файловая система):

  sudo mount -o remount, acl /  

Установите инструменты ACL из пакета acl . [ ! d18]

Настройка общего каталога

Чтобы файлы были разделены группой mygroup :

  setfacl -m group: mygroup  : rwx / path / to / shared / root setfacl -d -m group: mygroup: rwx / path / to / shared / root  

Если люди создают файлы и копируют их в общий каталог , файлы будут читаемыми по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо или вы сразу же столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

  setfacl -m user: bob: rwx / path / to / shared / root setfacl -d -m user: bob: rwx / path / to / shared / root  [  ! d27] 

Контроль версий

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы разделить репозиторий git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 6 August 2018 в 04:19

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs , чтобы создать общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталоги.

Вкратце, вы запускаете

  sudo bindfs -o perms = 0700, зеркало-  only = user1: user2: user3 / home / shared / home / shared  

, чтобы сделать / home / shared доступным для пользователей1, user2 и user3.

Инструкции

Подробные инструкции см. в Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) , включая настройку навсегда (при каждом включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Это позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

...

Главное преимущество в том, что новые файлы, созданные в общей папке, наследуют владение & amp; Разрешения.

Списки контроля доступа (ACL)

Примечания к документации:

Если вы хотите установить более расширенные разрешения для разные пользователи и / или группа попробуют Списки контроля доступа .

Подробнее см. Gilles answer .

1
ответ дан 6 August 2018 в 04:19

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 7 August 2018 в 22:24

Просто выполните это:

  mkdir / src / teamA команда addgroupA chgrp teamA / src / teamA chmod g + rws / src / teamA  

Теперь все в группе teamA могут делать все внутри / src / teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 7 August 2018 в 22:24

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL) . Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d14]

Вам нужно, чтобы участвующие пользователи имели umask от 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu по умолчанию не включает ACL, поэтому есть один -time-требование администратора. Измените / etc / fstab , используя ваш любимый редактор, и измените каждую строку, соответствующую файловой системе, где вы хотите обмениваться файлами: добавьте acl в параметры. (Не забудьте изменить другую строку и не использовать редактор, который переносит длинные строки.) Ниже приведен пример строки с добавленной опцией acl :

  UUID  = 5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors = remount-ro, acl 0 1  

Чтобы вариант вступил в силу в первый раз, используйте команду, подобную следующей (для каждая файловая система):

  sudo mount -o remount, acl /  

Установите инструменты ACL из пакета acl . [ ! d18]

Настройка общего каталога

Чтобы файлы были разделены группой mygroup :

  setfacl -m group: mygroup  : rwx / path / to / shared / root setfacl -d -m group: mygroup: rwx / path / to / shared / root  

Если люди создают файлы и копируют их в общий каталог , файлы будут читаемыми по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо или вы сразу же столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

  setfacl -m user: bob: rwx / path / to / shared / root setfacl -d -m user: bob: rwx / path / to / shared / root  [  ! d27] 

Контроль версий

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы разделить репозиторий git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 7 August 2018 в 22:24

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs , чтобы создать общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталоги.

Вкратце, вы запускаете

  sudo bindfs -o perms = 0700, зеркало-  only = user1: user2: user3 / home / shared / home / shared  

, чтобы сделать / home / shared доступным для пользователей1, user2 и user3.

Инструкции

Подробные инструкции см. в Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) , включая настройку навсегда (при каждом включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Это позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

...

Главное преимущество в том, что новые файлы, созданные в общей папке, наследуют владение & amp; Разрешения.

Списки контроля доступа (ACL)

Примечания к документации:

Если вы хотите установить более расширенные разрешения для разные пользователи и / или группа попробуют Списки контроля доступа .

Подробнее см. Gilles answer .

1
ответ дан 7 August 2018 в 22:24

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 10 August 2018 в 10:33

Просто выполните это:

  mkdir / src / teamA команда addgroupA chgrp teamA / src / teamA chmod g + rws / src / teamA  

Теперь все в группе teamA могут делать все внутри / src / teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 10 August 2018 в 10:33

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL) . Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d14]

Вам нужно, чтобы участвующие пользователи имели umask от 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu по умолчанию не включает ACL, поэтому есть один -time-требование администратора. Измените / etc / fstab , используя ваш любимый редактор, и измените каждую строку, соответствующую файловой системе, где вы хотите обмениваться файлами: добавьте acl в параметры. (Не забудьте изменить другую строку и не использовать редактор, который переносит длинные строки.) Ниже приведен пример строки с добавленной опцией acl :

  UUID  = 5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors = remount-ro, acl 0 1  

Чтобы вариант вступил в силу в первый раз, используйте команду, подобную следующей (для каждая файловая система):

  sudo mount -o remount, acl /  

Установите инструменты ACL из пакета acl . [ ! d18]

Настройка общего каталога

Чтобы файлы были разделены группой mygroup :

  setfacl -m group: mygroup  : rwx / path / to / shared / root setfacl -d -m group: mygroup: rwx / path / to / shared / root  

Если люди создают файлы и копируют их в общий каталог , файлы будут читаемыми по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо или вы сразу же столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

  setfacl -m user: bob: rwx / path / to / shared / root setfacl -d -m user: bob: rwx / path / to / shared / root  [  ! d27] 

Контроль версий

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы разделить репозиторий git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 10 August 2018 в 10:33

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs , чтобы создать общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталоги.

Вкратце, вы запускаете

  sudo bindfs -o perms = 0700, зеркало-  only = user1: user2: user3 / home / shared / home / shared  

, чтобы сделать / home / shared доступным для пользователей1, user2 и user3.

Инструкции

Подробные инструкции см. в Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) , включая настройку навсегда (при каждом включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Это позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

...

Главное преимущество в том, что новые файлы, созданные в общей папке, наследуют владение & amp; Разрешения.

Списки контроля доступа (ACL)

Примечания к документации:

Если вы хотите установить более расширенные разрешения для разные пользователи и / или группа попробуют Списки контроля доступа .

Подробнее см. Gilles answer .

1
ответ дан 10 August 2018 в 10:33

Вы можете комбинировать решение shellholic с заданием cron, которое обновляет gid для всех файлов в этой папке каждые 15 секунд или что-то подобное.

-3
ответ дан 13 August 2018 в 17:03

Просто выполните это:

  mkdir / src / teamA команда addgroupA chgrp teamA / src / teamA chmod g + rws / src / teamA  

Теперь все в группе teamA могут делать все внутри / src / teamA

Магия - это бит sgid (set group id) в каталоге.

2
ответ дан 13 August 2018 в 17:03

Списки контроля доступа

Прямой ответ - списки управления доступом (ACL) . Да, вы можете найти контрпример, но они достаточно хороши на практике (в отличие от простой записи в группах, которая требует, чтобы пользователи все время думали об этом). Они требуют, чтобы системный администратор (root) определял группы, если вы хотите, чтобы файлы были разделены только именованной группой (root может выбрать делегирование, например, путем принятия групп из LDAP, но это еще одна история). [ ! d14]

Вам нужно, чтобы участвующие пользователи имели umask от 022. Если они создают файлы, не читаемые во всем мире, эта схема не будет работать.

Включение ACL

Ubuntu по умолчанию не включает ACL, поэтому есть один -time-требование администратора. Измените / etc / fstab , используя ваш любимый редактор, и измените каждую строку, соответствующую файловой системе, где вы хотите обмениваться файлами: добавьте acl в параметры. (Не забудьте изменить другую строку и не использовать редактор, который переносит длинные строки.) Ниже приведен пример строки с добавленной опцией acl :

  UUID  = 5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors = remount-ro, acl 0 1  

Чтобы вариант вступил в силу в первый раз, используйте команду, подобную следующей (для каждая файловая система):

  sudo mount -o remount, acl /  

Установите инструменты ACL из пакета acl . [ ! d18]

Настройка общего каталога

Чтобы файлы были разделены группой mygroup :

  setfacl -m group: mygroup  : rwx / path / to / shared / root setfacl -d -m group: mygroup: rwx / path / to / shared / root  

Если люди создают файлы и копируют их в общий каталог , файлы будут читаемыми по всему миру (из-за umask), и каждый из группы может добавлять и удалять файлы (потому что группа доступна для записи в группе). Люди не могут редактировать файлы друг друга, но это хорошо или вы сразу же столкнетесь с редактированием конфликтов.

Если у вас нет группы unix, вы можете добавлять пользователей по одному :

  setfacl -m user: bob: rwx / path / to / shared / root setfacl -d -m user: bob: rwx / path / to / shared / root  [  ! d27] 

Контроль версий

Если вы хотите, чтобы люди могли редактировать файлы на месте, вам также нужно что-то, чтобы предотвратить конфликты редактирования. Это контроль версий.

Вам не нужно ничего из этого, чтобы разделить репозиторий git. Вы знаете, что есть такие решения, как гитоз, поэтому используйте их.

8
ответ дан 13 August 2018 в 17:03
  • 1
    ACL будет работать отлично, если бы автоматическое наследование не прерывалось cp (и mv?), Которое отбрасывает (игнорирует) набор acl по умолчанию на уровне целевого каталога. – useful 21 October 2014 в 14:40

Если вы хотите, чтобы пользователи имели доступ к файлам в общей папке (например, разные люди регистрируются на одном компьютере в разное время и нуждаются в доступе к тем же файлам), вы можете использовать bindfs , чтобы создать общий каталог.

Он позволяет нескольким локальным пользователям читать и писать (создавать, удалять, переименовывать, изменять ...) все файлы (в том числе вновь созданные) из общего каталога и его подкаталоги.

Вкратце, вы запускаете

  sudo bindfs -o perms = 0700, зеркало-  only = user1: user2: user3 / home / shared / home / shared  

, чтобы сделать / home / shared доступным для пользователей1, user2 и user3.

Инструкции

Подробные инструкции см. в Bindfs-SharedDirectoryLocalUsers (документация Ubuntu) , включая настройку навсегда (при каждом включении компьютера). Я использую это на своей машине для нескольких каталогов, каждый из которых имеет разные группы обмена (одна папка доступна для всех учетных записей, другая - только для работы учетных записей, другая - только для личных учетных записей).

Из сообщения :

bindfs - файловая система FUSE для установки каталога в другое место (точка монтирования) с настройками разрешений. Это позволяет вам указать права собственности и разрешения файлов внутри точки монтирования.

...

Главное преимущество в том, что новые файлы, созданные в общей папке, наследуют владение & amp; Разрешения.

Списки контроля доступа (ACL)

Примечания к документации:

Если вы хотите установить более расширенные разрешения для разные пользователи и / или группа попробуют Списки контроля доступа .

Подробнее см. Gilles answer .

1
ответ дан 13 August 2018 в 17:03

Другие вопросы по тегам:

Похожие вопросы: