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?
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.
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.
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:)
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.
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).
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