Как я могу изменить группу пользователя по умолчанию в Linux?

41

Будучи новичком в администрировании Linux, я немного запутался в следующих командах:

useradd
usermod
groupadd
groupmod

Я только что закончил читать книгу по администрированию пользователей в руководстве администратора Linux / Unix, но некоторые вещи все еще немного туманны.

В основном useraddкажется достаточно простым:

useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert

Я могу добавить «Дэвида Хилберта» с именем пользователя hilbert, установив его каталог по умолчанию, оболочку и группы. И я думаю, что -gэто его основная группа / группа по умолчанию и -Gдругие его группы.

Итак, это мои следующие вопросы:

  1. Будет ли эта команда все еще работают , если группы facultyи famousне существовало? Будет ли это просто создать их?
  2. Если нет, какую команду я использую для создания новых групп?
  3. Если я удалю пользователя, hilbertи в этих группах не будет других пользователей, они все еще будут существовать? Должен ли я удалить их?
  4. После того, как я выполню useraddкоманду выше, как мне удалить Дэвида из famousгруппы и переназначить его основную группу, hilbertкоторой еще не существует?
УХО
источник

Ответы:

27

Команда usermodпозволит вам изменить основную группу пользователя, дополнительную группу или ряд других атрибутов. -gПереключатель контролирует первичную группу.

По другим вопросам ...

  1. Если вы укажете группу, groupnameкоторой нет на useraddэтапе, вы получите сообщение об ошибке - useradd: unknown group groupname

  2. Команда groupaddсоздает новые группы.

  3. Группа останется, если вы удалите всех пользователей, содержащихся внутри. Вам не обязательно удалять пустую группу.

  4. Создать hilbertгруппу через groupadd hilbert. Затем переместите основную группу Дэвида, используя usermod -g hilbert hilbert. (Обратите внимание, что первое hilbert- это имя группы, а второе hilbert- имя пользователя. Это важно в тех случаях, когда вы перемещаете пользователя в группу с другим именем)

Вы можете все усложнить здесь, хотя. Во многих дистрибутивах Linux простой useradd hilbertпользователь hilbertсоздает группу и группу с тем же именем, что и у основного. Я бы добавил дополнительные группы, указанные вместе, используя -Gпереключатель.

ewwhite
источник
1
Спасибо. если я сделаю usermod -g hilbert hilbertэто, удалит ли другие группы Гильберта? Если да, то как бы я сохранил эти другие группы? Если нет, то я бы удалил его из других его групп?
cwd
Проверьте это и посмотрите, подходит ли вам среда.
ewwhite
Ответ @ Mick получил мое одобрение, потому что он указывает, что вам нужно использовать -a с -G (в противном случае любая группа, которую вы удалите, будет удалена )
Джефф
9

Вы должны прочитать, man usermodчто объясняет, что происходит с различными опциями:

usermod -g hilder hilder

заменит вашу регистрационную группу с 'faculty' на 'hilder', пока существует группа 'hilder'. Если он не существует, то сначала нужно создать его с помощью groupadd.

Когда вы используете эту -Gопцию, вы должны также использовать -aопцию, чтобы добавлять новые группы в текущий список дополнительных групп, к которым принадлежит пользователь 'hilder'. Без -aопции вы замените текущие дополнительные группы новым набором групп. Поэтому используйте это осторожно.

Мик
источник
5

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

  • usermod -g new_group user_name
  • прекратить все user_name «S активные сеансы

Чтобы проверить ваши изменения, запустите idи посмотрите на значениеgid=

Если команда выполняется без ошибок, но gid не изменился, вы пропустили жирную часть шага 2.

ndemou
источник
1

Ответ № 1 хорош, но вы также можете добавить следующее, чтобы добавить новую группу:

# nano /etc/group

Недостатком /etc/groupпрямого редактирования является то, что вам придется придумать неиспользованный GID (идентификационный номер группы).

Следующее позволит вам изменить основную группу пользователя. # nano /etc/passwd

Вы определяете местоположение пользователя и изменяете GID (номер группы, ищите его /etc/group), помните, что синтаксис выглядит следующим образом:

 <name>:*:<UID>:<GID>:<comment>:<directory>:<shell>

Там нет недостатка я могу думать о таком подходе (если вы знаете GID), это то , что я часто использую для локальных пользователей, в основном потому , что я использую много различных систем UNIX с различной usermod, adduserи useraddпараметрами командной строки.

Это немного больше руководства, однако делает работу. Обратите внимание, что вы можете использовать viiso nanoдля редактирования файлов, если вы знаете vi.

Николай Александров Георгиев
источник
0

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

  • usermod -g groupname команда username

Или вы можете использовать newgrpдля небольшой среды и временной ситуации.

Создайте нового пользователя bob и новую группу dodo.

useradd bob

Так что в RedHat / Centos у нас есть UID = (ID_number) bob; GID = (ID_number) боб в качестве основной группы по умолчанию

groupadd dodo

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

usermod -aG dodo bob -make sure to use "a"

Далее используйте newgrpдля смены владельца:

newgrp dodo

Будьте осторожны, чтобы в вашей учетной записи был пароль и он был членом будущей основной группы. И newgrp открывает новую оболочку; пока пользователь остается в этой оболочке, основная группа не изменится. Чтобы переключить основную группу обратно на исходную, вы можете покинуть новую оболочку, выполнив команду exit.

Драгос Алексей
источник