Что делает adduser, чего не делает useradd?

71

В дополнение к более распространенным useraddсистемам на основе Debian также имеется дополнительная adduserкоманда, которая предоставляет интерфейс более высокого уровня для добавления пользователей и некоторых связанных задач. На других сайтах SE существуют различные вопросы / ответы, в которых подробно описаны основные различия между этими командами, например:

Большинство ответов, по сути, говорят, что adduserпредоставляет более удобный интерфейс для добавления пользователей в интерактивном режиме, но не дают подробных сведений о том, что происходит при adduserзапуске, а не по сравнению с ним useradd. Так:

  1. Что делает adduserэто useraddне так?
  2. Какие команды мне нужно использовать для получения эквивалентных результатов?
Graeme
источник

Ответы:

79

Прежде всего, соответствующие фрагменты справочной страницы подчеркивают различия между двумя командами и дают некоторое представление о том, что происходит. Для adduser:

adduser и addgroup добавляют пользователей и группы в систему в соответствии с параметрами командной строки и информацией о конфигурации в /etc/adduser.conf. Они являются более дружественными интерфейсами для низкоуровневых инструментов, таких как программы useradd, groupadd и usermod, по умолчанию выбирая значения UID и GID, совместимые с политикой Debian, создавая домашний каталог с конфигурацией скелета, выполняя собственный сценарий и другие функции.

Тогда для useradd:

useradd - это утилита низкого уровня для добавления пользователей. В Debian администраторы обычно должны использовать вместо этого adduser (8).

Дальнейшее исследование adduserпоказывает, что это скрипт на Perl, обеспечивающий высокоуровневый интерфейс и, таким образом, предлагающий некоторые функциональные возможности следующих команд:

  • useradd
  • groupadd
  • passwd - используется для добавления / изменения паролей пользователей.
  • gpasswd - используется для добавления / изменения групповых паролей.
  • usermod - используется для изменения различных пользовательских параметров.
  • chfn - используется для добавления / изменения дополнительной информации, хранящейся у пользователя.
  • chage - используется для изменения срока действия пароля.
  • edquota - используется для изменения квот использования диска.

Основной прогон adduserкоманды выглядит следующим образом:

adduser username

Эта простая команда сделает несколько вещей:

  1. Создайте пользователя с именем username.
  2. Создайте домашний каталог пользователя (по умолчанию - /home/usernameи скопируйте в него файлы) /etc/skel.
  3. Создайте группу с тем же именем, что и пользователь, и поместите в нее пользователя.
  4. Подскажите пароль для пользователя.
  5. Запрашивайте дополнительную информацию о пользователе.

useraddПрограмма может выполнить большую часть большинства это, однако это не делает это по умолчанию и требует дополнительных опций. Некоторая информация требует большего количества команд:

useradd -m -U username
passwd username
chfn username

Обратите внимание, что это adduserгарантирует, что созданные UID и GID соответствуют политике Debian . Создание нормальных пользователей с помощью useraddвроде бы нормально, если UID_MIN/ UID_MAXв /etc/login.defsсоответствует политике Debian. Проблема, однако, заключается в том, что Debian определяет определенный диапазон для UID системных пользователей, который, по-видимому, поддерживается /etc/adduser.conf, поэтому наивное добавление системного пользователя с useraddуказанием UID / GUID в неправильном диапазоне оставляет возможность для серьезных проблем.

Другое распространенное использование для adduserупрощения процесса добавления пользователя в группу. Здесь следующая команда:

adduser username newgroup

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

usermod -G all,other,groups,user,is,in,newgroup

adduserОднако здесь есть один недостаток : вы можете указывать только одну группу за раз.

Graeme
источник
Это здорово! Я даже не знал, что это был вопрос. Требуются ли хэшированные пароли, как это делает useradd? Кстати, это очень хорошая работа.
mikeserv
Я не знаю, полностью ли я согласен с утверждением «администраторы должны ...» ... Лично я считаю, что администратор, вероятно, должен составлять свои собственные в adduserсоответствии с общесистемной политикой, но это всего лишь кресло защитник в лучшем случае.
mikeserv
@mikeserv, нет хешированных паролей. Есть еще одна программа, о которой вы должны знать - chpasswdона может принимать хешированные пароли stdin. Я подожду до завтра, прежде чем я обновлю этот другой ответ, хотя я думаю.
Graeme
хороший пост. Для меня немного слишком много деталей. Что мне больше всего не хватает, так это то, что adduserон изначально был создан для администраторов серверов, которым часто приходилось создавать / изменять / ограничивать реальных пользователей, как на почтовом сервере в университете. С adduserего помощью можно автоматизировать процесс. Это немного изменилось за эти годы, поэтому в настоящее время useraddможет быть трудным для многих администраторов, и для них adduserстало инструментом выбора.
На моем Ubuntu 16.04 -U/ --user-groupкажется по умолчанию.
Франклин Ю
2

Команда adduser по умолчанию также создает каталог / home / user для системных пользователей, чего нельзя сделать с помощью команды useradd . useradd добавляет домашние каталоги только для обычных пользователей, а не для системных пользователей.

MFPII
источник
1

Системный администратор может сделать с помощью useradd все, что можно сделать с помощью adduser. Здесь было сказано, что вы не можете создать каталог / home / user для системных пользователей с помощью useradd, и вы абсолютно можете это сделать, изменив файлы, содержащиеся в / etc / skel. / etc / skel содержит набор файлов, изначально использованных для заполнения домашнего каталога нового пользователя.

niten1
источник