9

У меня есть пользователь Джон и пользователь Keith на сервере Ubuntu

Я добавил этих пользователей, используя

sudo adduser John 
sudo adduser Keith

Как теперь я могу добавить Джона в группу Кейта?

Я старался:

sudo usermod -aG Keith john

Но я получаю:

usermod: group 'Keith' does not exist

Что мне нужно сделать, чтобы решить эту проблему?

3 ответа3

17

Вы можете использовать: usermod -a -G grouptoadd username

Поскольку это гораздо менее очевидно, чем я думал, почему -a -G нормально, а -aG нет, я попытаюсь объяснить это:

Опция -G принимает либо одно значение, либо список значений. В случае одного значения это значение может быть задано следующим образом: -GVALUE, поскольку нет необходимости иметь пробел между параметром и значением. Это просто обычная практика.

Если в вашей системе есть группа под названием a, то вызов -Ga становится неоднозначным. Вы хотите, чтобы у пользователя была только одна группа? Вы звоните -a и -G? Тогда является ли "a" значением для -G? Где остальная часть значения (до -G)? Также распространенной практикой является то, что любой однобуквенный вариант может существовать раньше любого другого однобуквенного варианта. so tat -xy == -yz. Но это неоднозначно, когда один из параметров может принимать одно значение, например, VALUE, или несколько значений, таких как VAL1, Val2, val4 и т.д.

Таким образом, чтобы команда FAILSAFE работала правильно для всех вводимых данных, вы должны отделить -a от -G

От man usermod:

название

usermod - изменить учетную запись пользователя

конспект

usermod [опции] ВХОД

Описание

Команда usermod изменяет файлы системной учетной записи, чтобы отразить изменения, указанные в командной строке.

Опции

Опции, которые применяются к команде usermod :

  • -a, --append

    Добавьте пользователя в дополнительную группу(ы). Используйте только с опцией -G .

  • ...

  • -G, --groups GROUP1 [, GROUP2, ... [, GROUPN]]]

    Список дополнительных групп, в которые входит и пользователь. Каждая группа отделена от следующей запятой, без пробелов. На группы распространяются те же ограничения, что и на группу, указанную с параметром -g .

    Если пользователь в настоящее время является членом группы, которой нет в списке, он будет удален из группы. Это поведение можно изменить с помощью параметра -a , который добавляет пользователя в текущий список дополнительных групп.

  • ...

0

Если вы выполнили команды в точности так, как вы показали в своем вопросе, вы создали не пользователя Keith, а только пользователя John. Для выполнения команд одна за другой в командной строке их необходимо разделять с помощью ; или && . В противном случае будет выполнена только первая команда:

sudo adduser John sudo adduser Keith
adduser: Only one or two names allowed.

Если вы сделали выполнить их правильно, быть осторожным прописными буквами. В своем вопросе вы упоминаете и "Джон" и "Джон". Это должно работать:

sudo adduser keith
sudo adduser john
sudo usermod -aG keith john
0

Вы также можете редактировать файлы конфигурации вручную:

sudo nano /etc/password
sudo nano /etc/group

Назначьте идентификатор и другие поля.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .