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

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

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

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

$ sudo useradd  audio www-dataUsage: useradd [options] LOGINOptions: -b, --base-dir BASE_DIR       base directory for the home directory...

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

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

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

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

sudo usermod -a -G groupName userName
  • То -a (добавить) переключатель необходим. В противном случае пользователь будет удален из любых групп, которых нет в списке.

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

В целом (для графического интерфейса или для уже запущенных процессов и т.д.) пользователь вам нужно будет выйти из системы и снова войти в систему чтобы увидеть добавление их новой группы. Для текущего сеанса командной строки вы можете использовать newgrp:

newgrp groupName
  • newgrp добавляет группу в текущий сеанс командной строки.

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

sudo adduser user group

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

sudo deluser user group

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

usermod -a -G group user  

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

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

sudo gpasswd -a myuser mygroup

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

sudo usermod -a -G groupName userName

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

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

$ sudo su -# su [userName]$ groups

Объяснение:

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

В моем случае я пытался добавить группу "docker" к своему пользователю

До:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

После:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
sudo usermod -a -G groupName userName

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

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

sudo usermod -a -G группа пользователь

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

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

sudo usermod -a -G <groupname> <username>

Затем выйдите из системы и снова войдите в систему (или перезагрузитесь, если необходимо).

Объяснение:

То usermod команда изменит /etc/group файл чтобы указать указанное имя пользователя в строке, относящейся к этой группе. Если ты побежишь grep <groupname> /etc/group, вы должны увидеть свое имя пользователя в выходных данных.

В Linux каждый процесс назначается пользователю и группам, и любые дочерние процессы наследуют пользователя и группы родительского процесса. Итак, чтобы это изменение вступило в силу и распространилось, вам необходимо выйти из системы и снова войти в систему (в этот момент /etc/group читается и используется). На Wayland я обнаружил, что необходима полная перезагрузка.

Если вы запустите команду groups, вы можете увидеть, есть ли в текущем процессе ожидаемые группы или нет.