Как добавить существующего пользователя в существующую группу?

669

Я хочу добавить пользователя Apache ( www-data) в audioгруппу. Я прочитал справочную страницу useradd, но мне не повезло. Я бегу xubuntu 11.10. Вот что я делаю:

$ sudo useradd -G audio www-data
useradd: user 'www-data' already exists

Если я опускаю -Gопцию, bash, печатает справочную информацию для useradd:

$ sudo useradd  audio www-data
Usage: useradd [options] LOGIN
Options: -b, --base-dir BASE_DIR       base directory for the home directory...

Мне не ясно со страницы руководства, какие варианты я должен использовать, чтобы сделать эту работу.

Sparky1
источник

Ответы:

1040

Команда useraddпопытается добавить нового пользователя. Поскольку ваш пользователь уже существует, это не то, что вы хотите.

Вместо этого: чтобы изменить существующего пользователя, например добавить его в новую группу, используйте usermodкоманду.

Попробуй это:

sudo usermod -a -G groupName userName

Пользователь должен будет выйти и снова войти в систему, чтобы увидеть добавленную им новую группу.

  • Переключатель -a(добавить) имеет важное значение. В противном случае пользователь будет удален из любых групп, которых нет в списке.

  • -GПереключатель занимает (разделенная запятую) список дополнительных групп , чтобы назначить пользователь.

dpendolino
источник
71
sudo usermod -a -G [group-name] [user-name]: Просто шутка для тех, кто только взглянет на ответ после прочтения заголовка
Programster
36
Я думаю, что предпочтительный способ сейчас sudo adduser user group. Это более простой и понятный синтаксис. Смотрите ответ от @Bai.
ctbrown
3
@wilhil:: man usermod" -a, --append - добавить пользователя в дополнительную группу (ы). Использовать только с опцией -G ; -G, --groups GROUP1 [, GROUP2, ... [, GROUPN] ]] [...] Если пользователь в настоящее время является членом группы, которой нет в списке, он будет удален из группы. Это поведение можно изменить с помощью параметра -a, который добавляет пользователя к текущему дополнительному элементу. список групп. "
Адам Михалик
18
Есть ли способ обойти часть «Выйти и вернуться»? Может быть, какой-то тип команды update-groups?
con-f-use
14
@ con-f-use, если вы можете запустить sudo login -f YOURUSERNAME, он начнет новый сеанс оболочки. Используйте idкоманду, чтобы убедиться, что новый сеанс находится в правильном наборе групп. Однако это не «глобально» - это не относится к терминалам, которые уже открыты. Так что, действительно, выход из системы - лучший вариант, где это возможно
Аарон МакДейд
222

Добавление пользователя в группу:

sudo adduser user group

Удаление пользователя из группы:

sudo deluser user group
Бай
источник
3
не совсем то, что этот вопрос задают
Tejendra
11
@ Комментарий Теджендры, по-видимому, предполагает, что использование useradd желательно / обязательно для ответа на вопрос OP; Возможно, в этом ответе просто отсутствуют слова, указывающие на то, что adduser / deluser - лучшая альтернатива.
мудрец
12
Для меня более простой интерфейс лучше, поэтому мне нравится этот.
Бетлиста
4
Это именно тот вопрос, который задают. @knocte, да, я думаю, что это специфично для Debian
Auspex
3
@Auspex Я могу подтвердить, что он не работает в Red Hat.
Stibu
54

После добавления к существующему пользователю:

usermod -a -G group user  

Вам может потребоваться выйти из системы и войти, чтобы получить права доступа групп /etc/group.

Амос Фоларин
источник
21
Пожалуйста, сделайте это частью "необходимо выйти и войти" жирным шрифтом.
Джин Квон
К вашему сведению: idкоманда должна указывать, что вы были добавлены в группу без необходимости выхода. id myuser
ficuscr
5
Выйти из системы и вернуться к ней потребовалось мне в Ubuntu 14.10.
А.Данищевский
26

Я обычно использую

sudo gpasswd -a myuser mygroup
enzotib
источник
3
usermod не был доступен в моей системе Ubuntu 14.04. Это сработало отлично!
Дрю
Это прекрасно работало и на Debian Stretch, где usermodон не был установлен.
Джош Хабдас
8

Я публикую это как ответ, потому что у меня недостаточно репутации, чтобы комментировать. Как уже упоминалось в @ dpendolino, эффект этой команды сохранится:

sudo usermod -a -G groupName userName

... вам нужно выйти / войти снова.

Тем не менее, если вам нужен ярлык , чтобы начать использовать свой новый состав группы сразу (и у вас есть правильный SUDO привилегия) Я нашел эту работу вокруг:

$ sudo su -
# su [userName]
$ groups

Объяснение:

  • sudo su - даст вам корневую оболочку
  • su [userName] возвращает вас в оболочку с вашим пользователем
  • groupsпри запуске сейчас покажет группу, которую вы добавили с помощью usermod -aGкоманды

В моем случае я пытался добавить группу «Докер» для моего пользователя

До:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

После:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
Bluemorpho
источник
5

В Ubuntu, поскольку вход в систему как rootне включен , пользователи в sudoгруппе могут повысить привилегии для определенных запрещенных команд. Любая ограниченная команда должна начинаться с префикса sudoдля повышения привилегий.

sudo usermod -a -G group user

добавит существующего пользователя userв дополнительную группу с именем group. Основная группа пользователя останется неизменной.

Дебра Мясник МакКускер
источник
1
sudo usermod -a -G groupName userName

будет работать нормально, но мне пришлось полностью перезагрузиться , просто выйдите из системы и войдите снова, не сделав работу ...

Алекс
источник