Рейтинг:2

Как я могу добавить существующего пользователя к существующему идентификатору группы (не имени группы)?

флаг cn

Я хочу добавить существующего пользователя, фу, в существующую группу, докер. Проблема в том, что на моей машине есть две группы с одинаковым именем докер, один с id 131 и другой 999. Я хочу добавить фу в группу докеров 999. Следующая команда добавляет только фу в 131 докер группа:

sudo usermod -aG докер foo

Как я могу добавить в докер группа с идентификатором 999 вместо этого?

Обновлять: после дальнейшего просмотра я понимаю, что только докер 131 группа указана под /и т.д./группа:

$ кошка /etc/группа | докер grep
docker:x:131:Стив,Марк,Эмми,user1,foo

Я понятия не имею, откуда взялся докер 999, но следующий пользователь может запускать докер без sudo:

$ идентификатор пользователя1
uid=260800(user1) gid=5000(студент) groups=5001(sudoaccess),999(docker),27(sudo),124(sambashare),13010(eestaff),131(docker)

в то время как фу пользователь не может:

$ идентификатор фу
uid=305800(foo) gid=5000(студент) groups=27(sudo),131(докер)
sudodus avatar
флаг jp
1. Почему у вас есть две группы с одинаковым названием группы? 2. Можно попробовать сделать резервную копию файла `/etc/group`, а затем отредактировать (с доступом sudo) его, чтобы добавить пользователя в нужную группу (после последнего двоеточия, или если уже есть какой-то пользователь там напишите запятую, а затем добавьте пользователя.. Вы должны увидеть шаблон в строках для некоторых других групп.
Tu Bui avatar
флаг cn
@sudodus странно ```/etc/group``` имеет только группу docker 131 (вопрос обновлен).
sudodus avatar
флаг jp
Как узнать, что у вас есть пользователь с числовым идентификатором 999? Этот числовой идентификатор используется для пользователя по умолчанию в реальных системах. И как вы выбрали этот номер для идентификатора пользователя? Вы установили какой-то специальный пакет программ? Какую версию Ubuntu вы используете (20.04 LTS или другую версию)? И это живая система или установленная система?
sudodus avatar
флаг jp
Возможно, 999 был помещен в этот список только для того, чтобы заставить его работать для пользователя по умолчанию в живых системах. Что выводит `grep 131 /etc/group`; Пожалуйста, отредактируйте исходный вопрос и отобразите вывод как `код`
sudodus avatar
флаг jp
Я вижу ваши правки. Работает ли сейчас (или после выхода/входа или перезагрузки) использование докера с новым пользователем «foo»?
sudodus avatar
флаг jp
Я вижу в комментарии, что вы используете 16.04, выпущенную в апреле 2016 года, окончание поддержки в апреле 2021 года, так что на самом деле пора перейти на поддерживаемую версию.
Рейтинг:4
флаг hr

Так что это оказывается проблема XY

  1. проблема, как указано (X) «Как добавить существующего пользователя в существующий идентификатор группы (не имя группы)?»

  2. актуальная проблема (Y) «Что делать, если /и т.д./группа и /etc/gshadow файлы расходятся во мнениях относительно числового GID группы?»


X. Как добавить существующего пользователя к существующему идентификатору группы (не имени группы)?

Это не явно указано на странице руководства, но пользовательский мод будет принимать числовой GID в качестве аргумента как для (основная группа) и (вторичные группы), по крайней мере, как было протестировано в Ubuntu 18.04.

Бывший. данный

$ групп тестовый пользователь
testuser : персонал testuser

$ getent группа ftp
фтп:х:134:

тогда

$ sudo usermod -aG 134 тестовый пользователь

$ групп тестовый пользователь
testuser: сотрудники testuser ftp

Y. Что делать, если /и т.д./группа и /etc/gshadow файлы расходятся во мнениях относительно числового GID группы?

Для этого есть инструмент командной строки, предоставляемый как часть пароль упаковка:

ИМЯ
       grpck - проверить целостность групповых файлов

СИНТАКСИС
       grpck [параметры] [группа [тень]]

ОПИСАНИЕ
       Команда grpck проверяет целостность информации о группах. Это
       проверяет, что все записи в /etc/group и /etc/gshadow имеют правильные
       формате и содержать достоверные данные. Пользователю предлагается удалить записи
       которые неправильно отформатированы или имеют другие неисправимые ошибки.

       Проверки выполняются, чтобы убедиться, что каждая запись имеет:

       · правильное количество полей

       · уникальное и допустимое имя группы

       · действительный идентификатор группы (только /etc/group)

       · действительный список участников и администраторов

       · соответствующая запись в файле /etc/gshadow (соответственно
           /etc/group для проверки gshadow)

Чтобы проверить несоответствия, сначала запустите в режиме только для чтения:

судо grpck -r

(даже здесь требуются повышенные привилегии, потому что /etc/gshadow читается только рутом).Затем, как только вы определили проблему, запустите снова в интерактивном режиме, чтобы исправить проблемы:

судо grpck

Есть аналогичная утилита pwck для обеспечения согласованности между /etc/passwd и /и т.д./тень.

Tu Bui avatar
флаг cn
К сожалению, в моем случае это не работает (Ubuntu 16.04).Я думаю, что это как-то связано с докером ```999``` не в ```/etc/group```. Я обновил вопрос с дополнительной информацией.
флаг hr
@TuBui Возможно, GID для группового докера несовместим между `/etc/group` и `/etc/gshadow` - запустите `sudo pwck -r` и добавьте вывод к своему вопросу.
флаг hr
извините, я имел в виду `sudo grpck -r`, конечно
Рейтинг:1
флаг cn

TL;DR чтобы ответить на вопрос заголовка, пожалуйста, подпишитесь на пост @steeldriver aka. пользовательский мод также работает с идентификатором группы. Приведенное ниже решение специально предназначено для проблемы, описанной в тексте ОП.

Судя по всему проблема решается правкой /и т.д./группа и измените идентификатор группы докеров 131 к 999. После выхода из системы и повторного входа у меня осталась только одна группа докеров - 999 группа.

$ идентификатор фу
uid=305800(foo) gid=5000(студент) groups=27(sudo),999(докер)

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

флаг hr
В будущем я бы рекомендовал использовать `grpck`, чтобы сделать это за вас, а не вручную редактировать файл(ы) напрямую.
sudodus avatar
флаг jp
+1 за комментарий steeldriver и ваш собственный страх: изменение номера идентификатора группы «docker» на 999 может привести к странному поведению. - В любом случае, вы всегда можете сбросить `/etc/group`, если это необходимо для какого-то другого приложения, так что удачи :-)

Ответить или комментировать

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