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

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

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

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

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

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

8 ответов

Решение

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

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

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

sudo usermod -a -G groupName userName

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

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

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

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

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), я нашел этот обходной путь:

$ 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
sudo usermod -a -G groupName userName

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

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

sudo usermod -a -G group user

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

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

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

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

Объяснение:

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

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

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

Другие вопросы по тегам