Як додати існуючого користувача до наявної групи?


668

Я хочу додати користувача Apache ( www-data) до audioгрупи. Я прочитав сторінку man 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...

Зі сторінки чоловіка мені незрозуміло, які параметри я повинен використовувати, щоб зробити цю роботу.

Відповіді:


1039

useraddКоманда спробує додати новий користувач. Оскільки ваш користувач вже існує, це не те, чого ви хочете.

Натомість: Щоб змінити існуючого користувача, наприклад додавання цього користувача до нової групи, використовуйте usermodкоманду.

Спробуйте це:

sudo usermod -a -G groupName userName

Користувачеві потрібно буде вийти та знову увійти, щоб побачити свою нову групу.

  • -a(Додавання) перемикач має важливе значення. В іншому випадку користувач буде видалений з будь-якої групи, яка не в списку.

  • -GПеремикач займає (розділена кому) список додаткових груп , щоб призначити користувач.


71
sudo usermod -a -G [group-name] [user-name]: Просто запит для тих, хто лише погляне на відповідь, прочитавши заголовок
Програміст

36
Я думаю, що зараз кращий спосіб sudo adduser user group. Це простіший і чистіший синтаксис. Дивіться відповідь від @Bai.
ctbrown

3
@wilhil:: man usermod" -a, --append - додайте користувача до додаткової групи. Використовуйте лише параметр -G; -G, --groups GROUP1 [, GROUP2, ... [, GROUPN] ]] [...] Якщо користувач наразі є членом групи, яка не зазначена в списку, користувач буде видалений із групи. Ця поведінка може бути змінена за допомогою параметра -a, яка додає користувача до поточного додаткового список груп ".
Адам Міхалик

18
Чи є спосіб обійти частину "вихід і повернення"? Якийсь тип команд груп оновлення, можливо?
con-f-use

14
@ con-f-use, якщо ви можете запустити sudo login -f YOURUSERNAME, він розпочне новий сеанс оболонки. Використовуйте idкоманду, щоб переконатися, що новий сеанс у правильному наборі груп. Однак це не "глобально" - це не стосується вже відкритих терміналів. Тож справді вихід із системи - найкращий варіант, де це можливо
Аарон Макдейд

222

Додавання користувача до групи:

sudo adduser user group

Видалення користувача з групи:

sudo deluser user group

3
не зовсім те, про що задають це запитання
Теджндра

11
@ Коментар Теджндри, мабуть, передбачає, що для використання ОПД бажано / обов’язково відповісти на питання ОП; Можливо, ця відповідь - це просто відсутні слова, які свідчать про те, що аддусер / дезерсер є кращою альтернативою.
шавлія

12
Для мене простіший інтерфейс краще, тому мені подобається цей.
Betlista

4
Це саме питання, яке задають. @knocte, так, я думаю, що це специфічно для Debian
Auspex

3
@Auspex Я можу підтвердити, що він не працює на Red Hat.
Stibu

54

Після додавання до наявного користувача:

usermod -a -G group user  

Можливо, вам знадобиться вийти та увійти, щоб отримати дозволи на групи /etc/group.


21
Будь ласка, зробіть його частиною "потрібно вийти та увійти" жирним шрифтом.
Джин Квон

FYI: Я думаю, що idкоманда повинна вказувати, що ви були додані до групи без необхідності виходити. id myuser
ficuscr

5
Для Ubuntu 14.10 мені потрібно було вийти та повернутися назад.
A.Danischewski

26

Я зазвичай використовую

sudo gpasswd -a myuser mygroup

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команди

У моєму випадку я намагався додати групу "docker" своєму користувачеві

Перед:

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

Після:

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

5

У Ubuntu, оскільки вхід у систему rootне включений , користувачі sudoгрупи можуть отримати привілеї для певних команд з обмеженням. Будь-яка обмежена команда повинна мати попередження, sudoщоб підвищити привілей.

sudo usermod -a -G group user

додасть існуючого користувача userдо додаткової групи з назвою group. Основна група користувача залишиться незмінною.


1
sudo usermod -a -G groupName userName

буде працювати нормально, але мені довелося повністю перезавантажитись , просто вийдіть із системи та знову увійдіть не зробили роботу ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.