Was ist der Unterschied zwischen "adduser" und "useradd"?

Ich frage mich: Warum gibt es diese beiden Befehle unter Debian Linux mit sehr ähnlichen Namen und Funktionen? Das war schon immer verwirrend für mich.

  • Ist einer von ihnen einem anderen überlegen?
  • Warum werden sie nicht zu einem zusammengeführt?
  • Gibt es einen signifikanten Unterschied zwischen ihnen?
  • Welches soll ich benutzen? Oder hängt es von einem Anwendungsfall ab?
Author: Petr, 2013-02-07

5 answers

useradd ist native Binärdatei, die mit dem System kompiliert wurde. Aber adduser ist ein Perl-Skript, das useradd binär im Backend verwendet.

adduser ist benutzerfreundlicher und interaktiver als sein Backend useradd. Es gibt keinen Unterschied in den Funktionen.

 92
Author: Apple II,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-07 15:34:26

Der Hauptvorteil von adduser gegenüber useradd besteht im Umgang mit Benutzern auf Systemebene. Mit adduser legt das Benutzerkonto auf Systemebene beim Erstellen ein Benutzerverzeichnis für den Systembenutzer in home, wobei useradd dies nicht automatisch tut. Wenn Sie den Mann lesen, sind sie im Wesentlichen gleich, außer dass Benutzer auf Systemebene und zugehörige Home-Verzeichnisse automatisch sind. adduser erstellt automatisch ein/home / user Verzeichnis für Benutzer auf Systemebene, wo es ist nicht eine Bestimmung in useradd, außer wenn angegeben von -m - option. Die anderen Lesungen, auf die ich gestoßen bin, besagen allgemein, dass UID und GUID durch akzeptierte konforme Debian-Standards in adduser zugewiesen werden.

 16
Author: user517969,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-11-04 22:24:52

In einigen Redhat-Instanzen, die ich überprüft habe (4.9 von 2011 und 6.9 von 2017), ist adduser einfach ein Alias für useradd, kein Perl-Skript. Hier ist es in der 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

Ich erinnere mich, dass useradd das "richtige" Programm ist: Das Hinzufügen eines Benutzers ist nur eine Operation im CRUD-Spektrum. Sie benötigen auch die Operationen' Ändern 'und' Löschen '('Lesen' wird vermutlich durch Anzeigen von /etc/passwd abgedeckt). Und so heißen die Programme user* (useradd, usermod und userdel jeweils). Ich nehme an, die alternative *user Namenskonvention (adduser, moduser und deluser-diese existieren nicht) könnte ebenfalls funktionieren. Aber es wäre etwas umständlicher (aus einem Grund, den ich im Moment nicht klar ausdrücken kann:)

 4
Author: Happyblue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-01-29 03:38:30

In raspian (ich müsste nach anderen Betriebssystemen suchen) startet 'adduser USER' einen Dialog (TUI), während 'useradd USER' DIES NICHT tut.

Anscheinend wird mit adduser, sobald der Dialog angezeigt wird, der vollständige Befehl 'useradd' bereits ausgeführt. Selbst wenn Sie STRG-C drücken, ist Ihr Benutzer da.

Wie in den neuen Systemen erstellen sie "persönliche" Gruppen, um den neu erstellten Benutzer zu entfernen, müssten Sie:

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

I angenommen, da adduser useradd "verwendet", sind der Rest Metadaten über den Benutzer. Technisch gesehen keine Änderungen an "Skel", "Dateimasken" oder ähnlichem, dh Ihre Systemeinstellungen.

Auf der anderen Seite könnte es nützlicher sein, da useradd keine TUI aufruft scripting.

Um ehrlich zu sein, habe ich es nur in Rasbian getestet, weil ich aus diesem Grund auf die Frage getreten bin.

Ich kann mir vorstellen,dass andere Betriebssysteme eine andere Version von adduser implementieren.

 0
Author: mariotti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-10-20 21:52:25

Ein signifikanter Unterschied, auf den ich gestoßen bin (und den ich hier nicht in einer Antwort gesehen habe), ist, dass useradd --system --shell /bin/bash zu implizieren scheint, während adduser --system impliziert --shell /usr/sbin/nologin, was ich wollte.

Aber ich wollte auch kein Home-Verzeichnis (das ist der Standard mit useradd aber nicht mit adduser), also könnte ich entweder useradd so verwenden

useradd --system --shell /usr/sbin/nologin foo

(oder /bin/false ist auch beliebt für no shell)

Was z.B. zu folgendem Eintrag in /etc/passwd

foo:x:994:991::/home/foo:/usr/sbin/nologin

, Oder verwenden Sie adduser so

adduser --system --no-create-home foo

Was z.B. zu folgendem Eintrag in /etc/passwd

foo:x:110:65534::/home/foo:/usr/sbin/nologin

Beachten Sie, dass es auch sehr unterschiedliche automatische Zuweisungen von (G)UIDs gibt. useradd scheint sie von 999 nach unten zu zählen, während adduser von 100 für die UID nach unten zählt und 65534 für die GUID verwendet (was no group). Tatsächlich erstellt useradd auch eine Gruppe (siehe /etc/group), während adduser dies nicht tut.

Also bleibe ich bei adduser all diese Fakten gelernt zu haben.

Quelle: Getestet auf Raspberry Pi OS (Debian-Buster basiert).

 0
Author: msa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-06 22:05:42