Настройка нескольких групп в качестве владельцев каталогов

На моем сервере у меня есть каталог /srv/svn.

Можно ли установить для этого каталога несколько владельцев групп, например devFirmA, devFirmB и devFirmC?

Дело в том, что я хочу subversion управлять версиями нескольких пользователей по нескольким репозиториям, и я не знаю, как merge /srv/svn, корневой каталог репозиториев, разрешений. У меня есть, например, три фирмы, FirmA, FirmB и FirmC. Теперь внутри /srv/svn Я создал три каталога, FirmA, FirmB, FirmC и внутри них я создал репозиторий для каждого проекта, и теперь я не знаю, как установить схему разрешений, поскольку все элементы внутри /srv/svn принадлежат по root:root, что плохо, или я не прав?

27 голосов | спросил KernelPanic 10 PMpFri, 10 Apr 2015 14:18:51 +030018Friday 2015, 14:18:51

4 ответа


22

У вас может быть только одна группа в качестве владельца .

Однако используя списки контроля доступа , вы может определять разрешения для других групп.

Проверьте, установлен ли ACL, выдав команду getfacl.  Если ваша система не установлена ​​ACL, установите инструменты командной строки, которые находятся в acl с помощью: sudo apt-get install acl

С getfacl вы можете прочитать информацию ACL в каталоге или другом файле и setfacl вы можете добавлять группы в файл.

Например:

setfacl -m g:devFirmB:rwx /srv/svn/  

Добавляет группу devFirmB с r ead, w обряд, e x ecute разрешения в каталог /srv/svn.

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

setfacl -m g:devFirmB:rwx /srv/svn/  
setfacl -d -m g:devFirmB:rwX /srv/svn/  
ответил jcbermu 10 PMpFri, 10 Apr 2015 14:36:15 +030036Friday 2015, 14:36:15
4

Невозможно иметь файл, принадлежащий нескольким группам Linux с традиционными разрешениями Unix. (Тем не менее, это возможно с помощью ACL .)

Но вы можете использовать следующее обходное решение и создать новую группу (например, называемый devFirms), который будет включать всех пользователей групп ---- +: = 1 =: + ----, devFirmA и devFirmB
. Вы создаете новые группы пользователей:

devFirmC

Во-первых, вам может потребоваться установить sudo addgroup NEWGROUPNAME , чтобы получить id-utils -command:

lid

Затем вы можете запустить следующую строку кода, чтобы легко скопировать всех пользователей sudo apt-get install id-utils в SOURCEGROUP. Конечно, вам нужно выполнить команду один раз для каждой группы, которую вы хотите скопировать. Не забудьте заменить капитализированных держателей места фактическими именами групп.

TARGETGROUP

Итак, в вашем случае вам нужно будет запустить команду (все строки сразу):

for u in $(lid -g -n SOURCEGROUP); do sudo usermod -a -G TARGETGROUP $u; done

Обратите внимание, что эти команды копируют только всех пользователей, которые являются членами current исходных групп. Каждый пользователь, который добавляется позже, также должен быть добавлен вручную в вашу общую группу с помощью команды sudo addgroup devFirms && for u in $(lid -g -n devFirmA); do sudo usermod -a -G devFirms $u; done && for u in $(lid -g -n devFirmB); do sudo usermod -a -G devFirms $u; done && for u in $(lid -g -n devFirmC); do sudo usermod -a -G devFirms $u; done . Просто замените заново капитализированных держателей места фактическим именем пользователя и группы (adduser):

devFirms

Джастин Этье за его ответ на Unix&Linux.SE: добавить всех пользователей одной группы в другую группу?

ответил Byte Commander 10 PMpFri, 10 Apr 2015 15:11:55 +030011Friday 2015, 15:11:55
2

Нет, это невозможно.

В каждом файле (а также в каталогах) может быть только один пользователь и одна группа.

ответил Uwe Plonus 10 PMpFri, 10 Apr 2015 14:36:09 +030036Friday 2015, 14:36:09
2

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

Чтобы создать нового владельца группы:

setfacl -m g:<group_name>:<rights you want to give eg.rwx> -R <directory_name>

Чтобы проверить текущие настройки acl:

getfacl <directory_name>
ответил Mr.H 20 Jam1000000amWed, 20 Jan 2016 10:31:51 +030016 2016, 10:31:51

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132