Невозможно иметь файл, принадлежащий нескольким группам Linux с традиционными разрешениями Unix. (Тем не менее, это возможно с ACL .)
Но вы можете использовать следующий обходной путь и создать новую группу (например, вызываемую devFirms
), которая будет включать всех пользователей групп devFirmA
, devFirmB
и devFirmC
.
Вы создаете новые группы пользователей с:
sudo addgroup NEWGROUPNAME
Во-первых, вам может потребоваться установить id-utils
команду lid
-com:
sudo apt-get install id-utils
Затем вы можете запустить следующую строку кода, чтобы легко скопировать всех пользователей SOURCEGROUP
в TARGETGROUP
. Конечно, вы должны выполнить команду один раз для каждой группы, которую вы хотите скопировать. Не забудьте заменить заглавные буквы на названия групп.
for u in $(lid -g -n SOURCEGROUP); do sudo usermod -a -G TARGETGROUP $u; done
Так что в вашем случае вам нужно будет выполнить команду (все строки сразу):
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
):
sudo adduser NEWUSER TARGETGROUP
Спасибо Джастину Этье за его ответ в Unix & Linux.SE: Добавить всех пользователей одной группы в другую группу?