В чем разница между «adduser» и «useradd»?

В чем разница между «adduser» и «useradd»?

Интересно: Почему в Debian Linux есть эти две команды с очень похожими названиями и функционалом? Это всегда сбивало меня с толку.

  • Превосходит ли кто-либо из них другой?
  • Почему они не объединены в один?
  • Есть ли между ними существенная разница?
  • Какой из них мне использовать? Или это зависит от варианта использования?

решение1

useraddявляется собственным бинарным файлом, скомпилированным с системой. Но adduserявляется скриптом perl, который использует useraddбинарник в бэкэнде.

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

решение2

Главное преимуществоДобавить пользователянаддобавить пользователяимеет дело с пользователями системного уровня.Добавить пользователяучетная запись пользователя системного уровня при создании помещает каталог пользователя в домашнюю папку для системного пользователя, гдедобавить пользователяне автоматически. Если вы прочитаете man, они по сути одинаковы, за исключением пользователей системного уровня и связанных домашних каталогов, которые являются автоматическими.Добавить пользователяавтоматически создает каталог /home/user для пользователей системного уровня, если вдобавить пользователя, за исключением случаев, указанныхвариант. В других чтениях, с которыми я сталкивался, в общем утверждается, что UID и GUID назначаются принятыми конформными стандартами Debian вДобавить пользователя.

решение3

В паре экземпляров Redhat, которые я проверил (4.9 от 2011 и 6.9 от 2017), adduser — это просто псевдоним для useradd, а не скрипт Perl. Вот он в Redhat 6.9:

$ ls -la /usr/sbin/useradd /usr/sbin/adduser
lrwxrwxrwx. 1 root root      7 Nov  2  2016 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 111320 Feb  9  2016 /usr/sbin/useradd

Я помню, что useradd — «правильная» программа, так: добавление пользователя — это всего лишь одна операция в спектре CRUD. Вам также нужны операции «изменить» и «удалить» («чтение», предположительно, охватывается просмотром /etc/passwd). Итак, программы называютсяпользователь*(useradd, usermod и userdel соответственно). Я полагаю, что альтернатива*пользовательСоглашение об именовании (adduser, moduser и deluser -- их не существует) также может работать. Но это будет немного более неловко (по причине, которую я не могу четко выразить в данный момент :)

решение4

В Raspian (мне нужно будет проверить другие ОС) «adduser USER» запускает диалоговое окно (TUI), а «useradd USER» — НЕТ.

Видимо, при использовании adduser, как только появляется диалоговое окно, полная команда 'useradd' уже выполняется. Даже если вы нажмете CTRL-C, ваш пользователь там.

Поскольку в новых системах создаются «персональные» группы, чтобы удалить вновь созданного пользователя, вам необходимо:

  • vi /etc/passwd
  • vi /etc/группа
  • rm -rf /home/ПОЛЬЗОВАТЕЛЬ

Я предполагаю, что поскольку adduser "использует" useradd, остальное - метаданные о пользователе. Так что технически никаких изменений в "skel", "file masks" или т. п., т. е. ваши системные значения по умолчанию.

С другой стороны, поскольку useradd не вызывает никакого TUI, он может быть более полезен при написании скриптов.

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

Я могу себе представить, что в других ОС может быть реализована другая версия adduser.

Связанный контент