Назад | Перейти на главную страницу

Общая папка в Linux

как мне создать действительно общую папку на сервере Linux? Я хочу, чтобы члены проектной группы могли читать и записывать каждый файл, как если бы они были их собственными, независимо от того, скопировали ли они или переместили файл в папку, создали его сами внутри папки или если файл был создан другие.

Пока что столкнулся со следующими проблемами:

Мое текущее решение - это общий ресурс SAMBA, установленный на одном сервере с force user и force group включен. Однако это обременительно для администрирования нескольких проектных групп, и я думаю, что у меня падает производительность.

Любая помощь или идея будут очень благодарны. Я запускаю Debian 10.

С наилучшими пожеланиями из Гамбурга, Германия.

Майкл

У вас есть несколько уровней конфигурации, которые нужно выстроить, и это может быть сделано для упрощения администрирования.

Как предположил Абхишек, установка бита setgid для каталога очень полезна, потому что это делает групповое владение каталогом наследуемым по умолчанию для вновь создаваемых файлов и каталогов.

Однако, как вы заметили, скопированные файлы сохраняют свои права собственности. Для переустановки группового владения хорош подход incrontab. Более современный подход будет использовать файл .path systemd для отслеживания изменений и соответствующий файл .service для запуска chgrp.

Чтобы ответить на ваш вопрос о настройке для поддержки многих групп проектов, примите во внимание следующее:

Во-первых, помните, что Samba обеспечивает только аутентификацию и зависит от разрешений файловой системы и учетных записей пользователей хоста.

Установите для umask значение 0002, что по умолчанию разрешает групповые права на запись.

Создайте учетную запись хоста для каждого пользователя:

sudo useradd andreas
sudo useradd beatrix
sudo useradd ciela

Создайте "суперпользователя" данных, отличного от root, для административных целей:

sudo useradd oberst

Создайте группу для каждого проекта:

sudo groupadd hund
sudo groupadd katz

Создайте каталог данных для каждого проекта, установите разрешения (включая бит setguid) и владельца. Следующее устанавливает бит setgid (2), дает полные разрешения (7) суперпользователю и указанной группе и не дает никаких разрешений другим (0), поэтому члены группы не могут читать, писать или выполнить:

sudo mkdir /srv/hund
sudo chown oberst:hund /srv/hund
sudo chmod 2770 /srv/hund
sudo mkdir /srv/katz
sudo chown oberst:katz /srv/katz
sudo chmod 2770 /srv/katz 

Добавить пользователей в группы:

sudo usermod -a -G hund andreas
sudo usermod -a -G hund beatrix
sudo usermod -a -G katz beatrix
sudo usermod -a -G katz ciela

Добавьте пользователей в Samba:

sudo smbpasswd -a andreas
sudo smbpasswd -e andreas
sudo smbpasswd -a beatrix
sudo smbpasswd -e beatrix
sudo smbpasswd -a ciela
sudo smbpasswd -e ciela

Отредактируйте smb.conf для создания общих ресурсов. Read-only = no разрешает доступ для записи, а browsable = no запрещает другим (т. Е. Не членам группы) просматривать общий ресурс. Обратите внимание на префикс «@» в допустимой директиве users, которая определяет доступ по ссылке на группы узлов:

[hund]
    path=/srv/hund
    read only=no
    browsable=no
    force group=hund
    valid users=@hund

[katz]
    path=/srv/katz
    read only=no
    browsable=no
    force group=katz
    valid users=@katz

Теперь (возможно, после перезагрузки) / srv / hund доступны (чтение / запись) для andreas и beatrix, но не для ciela, а / srv / katz могут быть доступны (для чтения / записи) для beatrix и ciela, но не для andreas.

Все, что необходимо для изменения доступа пользователя, - это просто изменить членство в группе с помощью usermod.

Конечно, вы также должны настроить пароли для учетных записей хоста и Samba.

Надеюсь, это будет полезно.

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

find /path/to/teamfolder -type d -exec chmod g+s '{}' \;

Также установите разрешения ACL для каталога проекта, например:

setfacl -d -m u::rwx,g::rwx,o::r-x /path/to/teamfolder

Когда для каталога установлен бит setgid, все файлы, созданные в этом каталоге, наследуют групповое владение этим каталогом. Разрешения ACL позволят созданным файлам внутри каталога проекта иметь права записи для группы.

Нового пользователя можно добавить как:

sudo usermod -a -G projgrp newuser

Надеюсь это поможет.