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


61

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

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

1
Обратите внимание, что useraddдоступно на всех Unix-подобных платформах; adduserтолько для Debian и его производных.
Франклин Ю

Ответы:


68

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

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


1
adduser доступен не во всех дистрибутивах (например, на основе suse), а на некоторых других это просто символическая ссылка на useradd (на основе redhat).
18:30

12

Основным преимуществом adduser перед useradd является работа с пользователями системного уровня. С помощью adduser учетная запись пользователя системного уровня при создании помещает каталог пользователя в домашний каталог для системного пользователя, в котором useradd не работает автоматически. Если вы читаете человека, они по существу одинаковы, за исключением пользователей системного уровня, и связанные домашние каталоги являются автоматическими. adduser автоматически создает каталог / home / user для пользователей системного уровня, где в useradd нет положения , кроме случаев, указанных в опции -m . В других чтениях, с которыми я сталкивался, в общем утверждается, что UID и GUID назначаются в Adduser в соответствии с принятыми конформными стандартами Debian.,


1
У adduser есть опция --no-create-home.
ychaouche

1

В нескольких экземплярах 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). И так, программы называются user * (useradd, usermod и userdel соответственно). Я предполагаю, что альтернативное * соглашение об именах пользователей (adduser, moduser и deluser - их не существует) также может работать. Но это было бы немного более неловко (по причине, которую я не могу выразить ясно в данный момент :)


не могу найти moduserна Debian, но deluserопределенно есть.
ychaouche

0

В raspian (мне нужно было бы проверить другие ОС), adduser USER запускает диалог (TUI), а useradd USER - нет.

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

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

  • vi / etc / passwd
  • vi / etc / group
  • rm -rf / home / USER

Я предполагаю, что поскольку adduser «использует» useradd, остальное - это метаданные о пользователе. Технически, никаких изменений в «skel», «file mask» и т. П., Т. Е. В вашей системе по умолчанию.

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.