GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einführung in den Linux-Befehl useradd

Das Hinzufügen eines Benutzers ist eine der grundlegendsten Übungen auf jedem Computersystem. Dieser Artikel konzentriert sich darauf, wie man es auf einem Linux-System macht.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Bevor ich anfange, möchte ich drei grundlegende Dinge erwähnen, die es zu beachten gilt. Erstens benötigen Linux-Benutzer wie bei den meisten Betriebssystemen ein Konto, um sich anmelden zu können. Dieser Artikel behandelt speziell lokale Konten, nicht Netzwerkkonten wie LDAP. Zweitens haben Konten sowohl einen Namen (als Benutzername bezeichnet) als auch eine Nummer (als Benutzer-ID bezeichnet). Drittens werden Benutzer typischerweise in eine Gruppe eingeordnet. Gruppen haben auch einen Namen und eine Gruppen-ID.

Wie zu erwarten, enthält Linux ein Befehlszeilenprogramm zum Hinzufügen von Benutzern; es heißt useradd . Möglicherweise finden Sie auch den Befehl adduser . Viele Distributionen haben diesen symbolischen Link zum useradd hinzugefügt Befehl aus Bequemlichkeitsgründen.

$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd

Werfen wir einen Blick auf useradd .

Hinweis:Die in diesem Artikel beschriebenen Standardeinstellungen spiegeln die in Red Hat Enterprise Linux 8.0 wider. Möglicherweise finden Sie geringfügige Unterschiede in diesen Dateien und bestimmten Standardeinstellungen bei anderen Linux-Distributionen oder anderen Unix-Betriebssystemen wie FreeBSD oder Solaris.

Standardverhalten

Die grundlegende Verwendung von useradd ist ganz einfach:Ein Benutzer kann einfach durch Angabe seines Benutzernamens hinzugefügt werden.

$ sudo useradd sonny

In diesem Beispiel die useradd Befehl erstellt ein Konto namens sohn . Es wird auch eine Gruppe mit demselben Namen erstellt, und zwar sohn wird darin platziert, um als primäre Gruppe verwendet zu werden. Es gibt andere Parameter, wie Sprache und Shell, die gemäß den Vorgaben und Werten angewendet werden, die in den Konfigurationsdateien /etc/default/useradd festgelegt sind und /etc/login.defs . Dies ist im Allgemeinen ausreichend für ein einzelnes, persönliches System oder eine kleine Geschäftsumgebung mit einem Server.

Während die beiden obigen Dateien das Verhalten von useradd steuern , Benutzerinformationen werden in anderen Dateien in /etc gespeichert Verzeichnis, auf das ich mich in diesem Artikel beziehen werde.

Datei Beschreibung Felder (fett – gesetzt von useradd)
Kennwort Speichert Benutzerkontodetails Benutzername :unused:uid :gid :Kommentar :homedir :Schale
Schatten Speichert Sicherheitsdetails des Benutzerkontos Benutzername :password:lastchange:minimum:maximum:warn:inaktiv :ablaufen :unbenutzt
Gruppe Speichert Gruppendetails Gruppenname :unused:gid :Mitglieder

Anpassbares Verhalten

Die Befehlszeile ermöglicht die Anpassung für Zeiten, in denen ein Administrator eine genauere Kontrolle benötigt, z. B. um die ID-Nummer eines Benutzers anzugeben.

Benutzer- und Gruppen-ID-Nummern

Standardmäßig useradd versucht, dieselbe Nummer für die Benutzer-ID (UID) und die primäre Gruppen-ID (GID) zu verwenden, aber es gibt keine Garantien. Obwohl es nicht erforderlich ist, dass UID und GID übereinstimmen, ist es für Administratoren einfacher, sie zu verwalten, wenn sie dies tun.

Ich habe nur das Szenario zu erklären. Angenommen, ich füge ein weiteres Konto hinzu, diesmal für Timmy. Vergleich der beiden Benutzer, sohn und timmy , zeigt, dass sowohl Benutzer als auch ihre jeweiligen primären Gruppen mithilfe von getent erstellt wurden Befehl.

$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash

$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:

Leider stimmen weder die UID noch die primäre GID des Benutzers überein. Dies liegt daran, dass das Standardverhalten darin besteht, dem Benutzer die nächste verfügbare UID zuzuweisen und dann zu versuchen, dieselbe Nummer der primären Gruppe zuzuweisen. Wenn diese Nummer jedoch bereits verwendet wird, wird der Gruppe die nächste verfügbare GID zugewiesen. Um zu erklären, was passiert ist, gehe ich davon aus, dass eine Gruppe mit der GID 1001 bereits existiert, und gebe einen Befehl zur Bestätigung ein.

$ getent group 1001
book:x:1001:alan

Das Gruppen-Buch mit der ID 1001 hat dazu geführt, dass die GIDs um eins ausgeschaltet sind. Dies ist ein Beispiel, bei dem ein Systemadministrator mehr Kontrolle über den Benutzererstellungsprozess übernehmen müsste. Um dieses Problem zu beheben, muss ich zuerst die nächste verfügbare Benutzer- und Gruppen-ID ermitteln, die übereinstimmen wird. Die Befehle getent group und passwd abrufen hilft bei der Bestimmung der nächsten verfügbaren Nummer. Diese Nummer kann mit dem -u übergeben werden Argument.

$ sudo useradd -u 1004 bobby

$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:

Ein weiterer guter Grund, die ID anzugeben, sind Benutzer, die über das Network File System (NFS) auf Dateien auf einem Remote-System zugreifen. NFS ist einfacher zu verwalten, wenn für alle Client- und Serversysteme dieselbe ID für einen bestimmten Benutzer konfiguriert ist. In meinem Artikel über die Verwendung von Autofs zum Mounten von NFS-Freigaben gehe ich etwas ausführlicher darauf ein.

Mehr Anpassungsmöglichkeiten

Sehr oft müssen jedoch für einen Benutzer andere Kontoparameter angegeben werden. Hier sind kurze Beispiele für die gängigsten Anpassungen, die Sie möglicherweise verwenden müssen.

Kommentar

Die Kommentaroption ist ein reines Textfeld, um eine kurze Beschreibung oder andere Informationen mit dem -c bereitzustellen Argument.

$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

Gruppen

Einem Benutzer können eine primäre Gruppe und mehrere sekundäre Gruppen zugewiesen werden. Das -g Das Argument gibt den Namen oder die GID der primären Gruppe an. Wenn es nicht angegeben ist, useradd erstellt eine primäre Gruppe mit demselben Namen des Benutzers (wie oben gezeigt). Das -G (Großbuchstaben) Argument wird verwendet, um eine durch Kommas getrennte Liste von Gruppen zu übergeben, in die der Benutzer platziert wird; diese werden als sekundäre Gruppen bezeichnet.

$ sudo useradd -G tgroup,fgroup,libvirt milly 
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

Home-Verzeichnis

Das Standardverhalten von useradd ist das Home-Verzeichnis des Benutzers in /home zu erstellen . Mit den folgenden Argumenten können jedoch verschiedene Aspekte des Home-Verzeichnisses überschrieben werden. Das -b legt ein weiteres Verzeichnis fest, in dem Benutzer-Homes platziert werden können. Beispiel:/home2 anstelle des standardmäßigen /home .

$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash

Das -d lässt Sie ein Home-Verzeichnis mit einem anderen Namen als dem des Benutzers angeben.

$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash

Das Skelettverzeichnis

Das -k weist das neue Home-Verzeichnis des neuen Benutzers an, mit allen Dateien in /etc/skel gefüllt zu werden Verzeichnis. Dies sind normalerweise Shell-Konfigurationsdateien, aber sie können alles sein, was ein Systemadministrator allen neuen Benutzern zur Verfügung stellen möchte.

Schale

Das -s Argument kann verwendet werden, um die Shell anzugeben. Wenn nichts anderes angegeben ist, wird der Standardwert verwendet. Beispiel:Im Folgenden Shell bash ist in der Standardkonfigurationsdatei definiert, aber Wally hat zsh angefordert .

$ grep SHELL /etc/default/useradd 
SHELL=/bin/bash

$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh

Sicherheit

Sicherheit ist ein wesentlicher Bestandteil der Benutzerverwaltung, daher stehen mit useradd mehrere Optionen zur Verfügung Befehl. Mit dem -e kann einem Benutzerkonto ein Ablaufdatum in der Form JJJJ-MM-TT gegeben werden Argument.

$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:

Ein Konto kann auch automatisch deaktiviert werden, wenn das Passwort abläuft. Das -f Das Argument legt die Anzahl der Tage nach Ablauf des Kennworts fest, bevor das Konto deaktiviert wird. Null ist unmittelbar.

$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::

Ein Beispiel aus der Praxis

In der Praxis können mehrere dieser Argumente beim Erstellen eines neuen Benutzerkontos verwendet werden. Wenn ich beispielsweise ein Konto für Perry erstellen muss, kann ich den folgenden Befehl verwenden:

$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry

Informationen zu den einzelnen Optionen finden Sie in den obigen Abschnitten. Überprüfen Sie die Ergebnisse mit:

$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

Einige abschließende Ratschläge

Das useradd Befehl ist ein Muss für jeden Unix-Administrator (nicht nur Linux). Es ist wichtig, alle Optionen zu verstehen, da die Benutzererstellung etwas ist, das Sie beim ersten Mal richtig machen möchten. Dies bedeutet eine gut durchdachte Namenskonvention, die einen dedizierten UID/GID-Bereich umfasst, der für Ihre Benutzer im gesamten Unternehmen reserviert ist, und nicht nur auf einem einzelnen System – insbesondere, wenn Sie in einer wachsenden Organisation arbeiten.


Linux
  1. Meistern Sie den Linux-ls-Befehl

  2. Der Befehl locate unter Linux

  3. useradd-Befehlsbeispiele in Linux

  4. groupmems-Befehlsbeispiele in Linux

  5. Machen Sie den Linux-Papierkorbbefehl rückgängig

Der Timer-Befehl in Linux

Der Linux-Curl-Befehl

Wesentliche Beispiele des ps-Befehls in Linux

Was ist der Kill-Befehl in Linux?

Verstehen des Zeitbefehls in Linux

Verwendung des grep-Befehls unter Linux