На моем сервере у меня есть каталог /srv/svn
.
Можно ли, например devFirmA
, установить для этого каталога несколько владельцев групп , devFirmB
и devFirmC
?
Дело в том, что я хочу, чтобы subversion
управление версиями управляло несколькими пользователями по нескольким репозиториям, и я не знаю, как объединить /srv/svn
, корневой каталог репозиториев, разрешения. У меня есть, например, три фирмы FirmA
, FirmB
и FirmC
. Теперь, внутри /srv/svn
я создал три директории, FirmA
, FirmB
, FirmC
и в них я создал хранилище для каждого проекта , и теперь я не знаю , как установить схему разрешения , так как все elementes внутри /srv/svn
находятся в собственности root:root
, которые не в порядке, или я неправильно?
permissions
group
subversion
KernelPanic
источник
источник
Ответы:
Это чрезвычайно распространенная проблема, если я правильно ее понимаю и постоянно с ней сталкиваюсь. Если бы я использовал ACL для каждой тривиальной проблемы группировки, у меня было бы множество неуправляемых систем. Они используют лучшие практики, когда вы не можете сделать это иначе, не для этой ситуации. Это метод, который я очень настоятельно рекомендую.
Сначала вам нужно установить значение umask на 002, чтобы группа могла поделиться с собой. Я обычно создаю файл вроде
/etc/profile.d/firm.sh
, а затем добавляю тестовую команду с помощью umask.[ $UID -gt 10000 ] && umask 002
Затем вам нужно установить каталоги для соответствующих групп,
Наконец, вам нужно правильно установить бит SGID, чтобы группа всегда оставалась той, которую вы установили. Это предотвратит установку записанного файла в GID автора.
Теперь, наконец, если вы хотите предотвратить доступ к каталогам со стороны других пользователей.
источник
svnadmin
:sudo usermod -a -G FirmA,FirmB,FirmC svnadmin
Это добавитsvnadmin
ко всем этим группам. Поскольку для файлов во всех этих группах включена «групповая запись» (chmod 664
сделали это), вы, кроме firmX, будете единственными создателями файлов, принадлежащих firmX.find /srv/svn/FirmA -type f -print0 | xargs -0 chmod ug+rw,o+r,o-wx
Вы можете иметь только одну группу в качестве владельца .
Однако, используя списки контроля доступа, вы можете определить разрешения для других групп.
Проверьте, установлен ли у вас ACL, выдав команду
getfacl
. Если в вашей системе не установлен ACL, установите инструменты командной строки, которые входят вacl
пакет :sudo apt-get install acl
С
getfacl
его помощью вы можете прочитать информацию ACL о каталоге или другом файле, а такжеsetfacl
можете добавить группы в файл.Например:
Добавление группы
devFirmB
с г EAD, ш Rite, е х ecute разрешения на доступ к каталогу/srv/svn
.Если вы также хотите, чтобы файлы, созданные в этом каталоге, принадлежали нескольким группам, установите ACL в качестве ACL по умолчанию. Запись
X
в группе по умолчанию означает «разрешить выполнение, если исполняется владельцем (или кем-либо еще)».источник
Невозможно иметь файл, принадлежащий нескольким группам Linux с традиционными разрешениями Unix. (Тем не менее, это возможно с ACL .)
Но вы можете использовать следующий обходной путь и создать новую группу (например, вызываемую
devFirms
), которая будет включать всех пользователей группdevFirmA
,devFirmB
иdevFirmC
.Вы создаете новые группы пользователей с:
Во-первых, вам может потребоваться установить
id-utils
командуlid
-com:Затем вы можете запустить следующую строку кода, чтобы легко скопировать всех пользователей
SOURCEGROUP
вTARGETGROUP
. Конечно, вы должны выполнить команду один раз для каждой группы, которую вы хотите скопировать. Не забудьте заменить заглавные буквы на названия групп.Так что в вашем случае вам нужно будет выполнить команду (все строки сразу):
Обратите внимание, что эти команды копируют только всех пользователей, которые являются текущими членами исходных групп. Каждый пользователь, который будет добавлен позже, также должен быть добавлен вручную в вашу общую группу с помощью
adduser
команды. Просто замените заглавные заполнители еще раз фактическим именем пользователя и группы (devFirms
):Спасибо Джастину Этье за его ответ в Unix & Linux.SE: Добавить всех пользователей одной группы в другую группу?
источник
Нет, это невозможно.
Каждый файл (а также каталоги) может иметь только одного пользователя и одну группу.
источник
Чтобы предоставить разные права нескольким группам или пользователям, используйте следующие команды (проверено на RHEL 6 и 7):
Чтобы сделать нового владельца группы:
Чтобы проверить текущие настройки ACL:
источник