Was ist der Unterschied zwischen adduser und useradd?

441

Was ist der Unterschied zwischen den Befehlen adduserund useraddunter Ubuntu?

Joe Cabezas
quelle
17
Gleiche Frage zu Super User und Server Fault
ændrük
5
und auch auf Unix StackExchange (ziemlich detaillierte Antwort)
Xealits
und es ist und bleibt eine gute, berechtigte Frage. Das Problem ist nicht, dass die Leute es in den jeweiligen Kontexten fragen, sondern dass diese Frage überhaupt gestellt werden muss.
foo

Antworten:

387

useraddist native Binärdatei, die mit dem System kompiliert wurde. Aber es adduserist ein Perl-Skript, das useraddim Back-End Binärdateien verwendet .

adduserist benutzerfreundlicher und interaktiver als das Back-End useradd. Die angebotenen Funktionen unterscheiden sich nicht.

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

Radu Rădeanu
quelle
59
Der Befehl add useradd erstellt kein Verzeichnis '/ home / username', aber der Befehl adduser wird
Deepen
65
useradd mit der -mOption erstellt das Home-Verzeichnis.
Richsinn
10
Die Implimentation ist nicht so interessant, die Semantik ist. Like adduser(8)ist benutzerfreundlicher und erstellt und richtet einen Benutzer standardmäßig so ein, wie Sie es erwarten. Und useradd(8)tun Sie nur das, wonach Sie fragen. Wenn Sie also ein Basisverzeichnis erstellen möchten, müssen Sie es angeben, um es für Sie zu erstellen.
Anders
23
Ich muss das jedes Mal googeln ... Wie kann ich mir merken, welches welches ist?
Quentin Skousen
11
@kkhugs für mich "adduser" fühlt sich am intuitivsten an, weil es ein Befehl ist, der sich wie Englisch anhört, während der andere semantisch nicht. Wenn Sie sich als das "intuitivste" der beiden erinnern, können Sie auch versuchen, es als das bevorzugte / einfachere zu merken.
pzkpfw
146

Verwenden Sie immeradduser (und deluserbeim Löschen von Benutzern), wenn Sie neue Benutzer über die Befehlszeile erstellen. (Wenn Sie ein Skript schreiben, insbesondere wenn Sie Portabilität anstreben, möchten Sie möglicherweise stattdessen die Lowlevel-Dienstprogramme verwenden - und adduser/ oder sind delusermöglicherweise nicht in allen Distributionen verfügbar, z. B. unter SuSE.)

Die Befehle useradd, userdelund usermodsind Hilfsprogramme, die aus historischen Gründen zur Verfügung stehen, während adduser/deluserDo The Right Thing ™. (Ich erinnere mich, was ich verwenden soll, indem ich überlege, user*was adduser/deluserim Alphabet nachher kommt und daher "schlimmer" ist.)

Gemäß den jeweiligen Manpages (auf Ubuntu 12.04 Precise Pangolin, dh einem von Debian abgeleiteten System).

Manpage für addusersagt:

(Betonung hinzugefügt.)

adduserund addgroupfügen Sie dem System Benutzer und Gruppen gemäß den Befehlszeilenoptionen und Konfigurationsinformationen in hinzu /etc/adduser.conf. Sie sind freundlicher Frontends auf den Low - Pegel - Tools wie useradd, groupaddund usermodProgramme , die standardmäßig die Wahl Debian - Richtlinien konformes UID und GID - Werte, ein Home - Verzeichnis mit Skelett-Konfiguration Erstellen eines benutzerdefinierten Skript ausgeführt wird , und andere Funktionen. adduserund addgroupkann in einem von fünf Modi ausgeführt werden:

Manpage für useraddsagt:

useraddist ein Hilfsprogramm für das Hinzufügen von Benutzern. Unter Debian sollten Administratoren normalerweise adduser(8)stattdessen verwenden.

Siehe auch: Was ist der Unterschied zwischen "adduser" und "useradd"? (auf SuperUser)

zrajm
quelle
6
Ich kann mich nie erinnern, welches, also ist das mein blöder Spruch, wenn es jemandem hilft :) "user" reimt sich auf "loser" und "loser" kommt als letztes. Also: adduser, deluser.
Mads Skjern
26
Ich bin nicht mit " Always useradduser " einverstanden : Für automatisierte Skripte würde ich es vorziehen, useraddweil es immer da ist, nicht interaktiv und nicht distro-spezifisch .
Wernight
2
Ich habe adduseropenSUSE ausprobiert und es ist nicht da. (13.2)
cst1992
1
@ cst1992 Du hast Recht, ich habe die Antwort bearbeitet, um dies widerzuspiegeln. Als ich locate adduserein SuSE 11-System bei der Arbeit ausprobierte, stellte ich seltsamerweise fest, dass es eine adduserManpage, aber keine Binärdatei (und weder eine deluserManpage noch einen Befehl) gab.
Zrajm
2
Auf Red Hat/usr/sbin/adduser -> useradd
Levon
17

adduser: Benutzer mit vollem Profil und Informationen hinzufügen (Pass, Kontingent, Erlaubnis usw.)

useradd: Benutzer nur mit seinem Namen hinzufügen (wenn Sie einen temporären Benutzer nur mit einem Namen hinzufügen möchten, andere Informationen nicht erforderlich)

M und M
quelle
1
+1 und Willkommen! Ich habe für die Person gestimmt, die nicht in der Lage war, ihre vorherige Abstimmung zu erklären. Mach weiter! Gute Programmierer stehen immer an der Spitze - (und stimmen nicht ohne Erklärung ab). :)
Ricalsin
11

Weitere Unterschiede, die zu bestimmten Szenarien führen, in denen useradd vorzuziehen ist.

  1. In einigen neueren Distributionen, einschließlich Ubuntu 14.4, fordert adduser Informationen wie Passwort und "gecos" (Daten für den Fingerbefehl) an. Dies bedeutet, dass es möglicherweise weniger für den Aufruf aus einem Skript geeignet ist (Kredit: bereits in einem Kommentar von Wernight erwähnt).

    Die Eingabeaufforderungen können durch Übergeben von Nullargumenten unterdrückt werden:

    adduser --disabled-password --gecos "" USER
    
  2. useraddMit dieser -GOption können Sie mehrere zusätzliche Gruppen übergeben, denen Sie einen Benutzer hinzufügen möchten. adduserEs scheint erforderlich zu sein, dass Sie den Befehl einmal für jede Gruppe aufrufen, um ihn hinzuzufügen.

AdamS
quelle
Funktioniert nicht auf Ubuntu 16.04.
answerSeeker
8

adduserist insofern freundlicher, als es die Home-Ordner des Kontos und andere Einstellungen (z. B. das automatische Laden von Systemstatistiken und Benachrichtigungen beim Anmelden) einrichtet, während es useraddnur den Benutzer erstellt.

Paul
quelle
2
Falsch. useradd kann mit -m ein Home-Verzeichnis erstellen, mit -p ein Passwort festlegen, mit -k Skelettdateien erstellen und mit -G einen Benutzer zu einer Gruppe hinzufügen.
Ychaouche
5

Der grundlegende Unterschied ist, dass "adduser" ein Basisverzeichnis erstellt und Skelettdateien zu diesem Verzeichnis hinzufügt, in dem "useradd" keine Basisverzeichnis- und Skelettdateien erstellt!

adduser versuche:

Adding user `try' ...
Adding new group `try' (1001) ...
Adding new user `try' (1001) with group `try' ...
Creating home directory `/home/try' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for try
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

useradd try1:

# ll /home/
total 20
drwxr-xr-x  5 root    root    4096 Oct 26 15:52 ./
drwxr-xr-x 22 root    root    4096 Oct 26 15:47 ../
drwx------  8 ashishk ashishk 4096 Oct 26 15:50 ashishk/
drwxr-xr-x  3 root    root    4096 Oct 14 13:02 .ecryptfs/
drwxr-xr-x  2 try     try     4096 Oct 26 15:52 try/
root@chef-workstation:/home/ashishk#
Ashish Karpe
quelle
Falsch. Siehe vorherigen Kommentar
ychaouche
0

Ich werde auch darauf hinweisen, dass adduserdies nicht immer die -MOption hat und auch nicht die --systemFlagge respektiert, die speziell besagt :

Beachten Sie, dass useradd unabhängig von der Standardeinstellung in /etc/login.defs (CREATE_HOME) kein Basisverzeichnis für einen solchen Benutzer erstellt. Sie müssen die Optionen -m angeben, wenn Sie ein Basisverzeichnis für ein Systemkonto erstellen möchten.

Wenn Sie versuchen, einen Systembenutzer ohne Basisverzeichnis zu erstellen, verwenden Sie useradd --system -M.

Blockschleife
quelle