Was ist / sind die Standard-CLI-Programme zum Verwalten von Benutzern und Gruppen?

8

Grundsätzlich frage ich über die Befehlszeile nach der Benutzerverwaltung (z. B. auf einem System, auf dem keine grafischen Tools verfügbar sind). In der Vergangenheit habe ich mehrere verschiedene Programme verwendet , um hinzuzufügen oder zu löschen Benutzer und Gruppen oder deren Attribute zu ändern: adduser, useradd, usermod, gpasswd, und vielleicht andere , die ich vergessen habe. Ich habe auch ein paar Mal gehört, dass einige dieser Programme auf niedrigem Niveau sind und für den allgemeinen Gebrauch vermieden werden sollten, aber ich kann mich nie erinnern, welche. Daher möchte ich eine endgültige Antwort erhalten, für welche Programme zumindest für die folgenden Aufgaben empfohlen werden:

  • Erstellen Sie einen neuen Benutzer
  • Fügen Sie einer Gruppe einen Benutzer hinzu
  • Entfernen Sie einen Benutzer aus einer Gruppe
  • Ändern Sie die primäre Gruppe eines Benutzers
  • Ändern Sie die Login-Shell oder das Home-Verzeichnis eines Benutzers
  • Löschen Sie einen Benutzer

Ich suche nach Standardtools, von denen ich erwarten kann, dass sie auf so ziemlich jedem Linux-System (jeder Distribution) verfügbar sind.

David Z.
quelle
1
auch groupmod. Ich werde dies nicht zu einer Antwort machen ... aber die Standardmethode ist wahrscheinlich die Verwendung Ihres Texteditors ... Denken Sie daran, dass es sich bei den betroffenen Dateien nur um abgegrenzten Text handelt.
Xenoterracide
Interessanterweise hatte ich vor dem Stellen dieser Frage noch nie eine Erwähnung der direkten Bearbeitung der Dateien gesehen. (Irgendwie hatte ich den Eindruck, dass dies /etc/passwdnur ein Teil eines komplexen Systems war)
David Z

Antworten:

9

Leider wurde keine dieser Operationen jemals standardisiert.

Einige Betriebssysteme bieten diese Funktionalität als Teil des Betriebssystems an, wie z. B. Linux. Selbst wenn Ihr Linux-System sie enthält, haben sich die Tools und ihre Namen im Laufe der Zeit und über Linux-Distributionen hinweg geändert, sodass Sie sich nicht wirklich auf einen Standardsatz von Tools verlassen können diese Aufgaben.

Sie benötigen einen Satz von Tools pro Betriebssystem.

miguel.de.icaza
quelle
Ich habe nie die Namen ändern lassen ... aber ich habe die Schalter ändern lassen. Ich erinnere mich, dass ich einmal herausgefunden habe, dass ein Linux kein gpasswd -a hatte.
Xenoterracide
1
Wenn Speicher dient - RedHat hat einmal 'adduser' anstelle von 'useradd' verwendet und es hat sich anders verhalten (ich denke, useradd war mehr debianisch). Sie machten 'adduser' später zu einem Symlink zu 'useradd'. Siehe einige alte Referenzen unter redhat.com/docs/manuals/linux/RHL-5.2-Manual/install-guide/…
Stefan Lasiewski
7

Auf Debian-Systemen (und abgeleiteten Systemen) adduserund deluserübergeordneten Wrappern useraddund verwandten Funktionen. Das Erstellen von Deckungsbenutzern, das Hinzufügen und Entfernen von Gruppenmitgliedschaften sowie das Löschen von Benutzern. Die entsprechenden Befehle zum Erstellen / Löschen von Gruppen sind vernünftigerweise addgroupund delgroup. usermodscheint den verbleibenden Anwendungsfall abzudecken, den Sie benennen.

Phil Miller
quelle
6

Sie erwähnen Linux im letzten Teil Ihrer Frage, aber da der Titel generisch ist, werde ich für FreeBSD antworten.

FreeBSD hat ähnliche Befehle wie Linux, aber es handelt sich um Befehle, die an das pwDienstprogramm übergeben werden:

pw useradd [user|uid] ...
pw usermod [user|uid] ...

und so weiter. Man kann den Befehl jedoch in zwei Teile zerlegen: userund mod; ein Substantiv und ein Verb. Darüber hinaus kann man auch verwenden groupund del:

pw groupdel [group|gid] ...

um beispielsweise eine Gruppe zu löschen. Also hier ist, was ich wirklich cool finde: Die Reihenfolge spielt keine Rolle, noch spielt der Abstand eine Rolle! Dies bedeutet, dass Sie sich daran erinnern können, wie Sie anrufen sollen, indem Sie überlegen, was Sie tun möchten (ohnehin auf Englisch):

pw del user [user|uid] ...
pw mod group [group|gid] ...
pw show user [user|uid] ...
pw next user [user|uid] ...

und mehr! Mit dem pwDienstprogramm können Sie außerdem Konten sperren und entsperren:

pw lock [user|uid] ...
pw unlock [user|uid] ...

Die Optionen und alle Parameter, die Sie übergeben, sind alle standardisiert (obwohl dies nicht immer für Aufrufbefehle gilt), sodass das Speichern minimiert wird. Alles in allem eine schöne Art, Dinge zu tun.

Hinweis: Die Ellipsen in den obigen Beispielen stellen Optionen und Parameter dar, die an pwkeine zusätzlichen Benutzer oder Gruppen übergeben werden.

gvkv
quelle
Es war eine Linux-Frage, aber die Informationen werden trotzdem geschätzt. Es wäre großartig, wenn Linux so etwas hätte.
David Z
Nomen und Verb, meinst du?
Warren Young
D'oh! Repariert.
Gvkv
2

Der Vollständigkeit halber würde ich am unteren Ende des Spektrums vipw (8) und vigr (8) erwähnen, direkt über "vi / etc / passwd" und "cat> / etc / passwd", aber direkt unter "useradd" ". Oh, und sie existieren in den meisten Unix-Varianten.

Codekopf
quelle
2

Alle diese Tools wurden letztendlich entwickelt, um Textdateien für Sie zu bearbeiten. Wenn Sie wissen möchten, wie Benutzer und Gruppen über Systeme verwaltet werden, sollten Sie sich mit diesen zugrunde liegenden Textdateien vertraut machen. Zum Glück gibt es nur zwei davon /etc/passwdund /etc/group. Es gibt auch komplementäre /etc/shadowund /etc/gshadowDateien zum Abschatten von Passwd bzw. Group.

Eli Frey
quelle
4
... und / etc / shadow, da die meisten Systeme krächzen, wenn ich nicht mit / etc / passwd
Codehead
1

In vielen Situationen ist es immer noch nützlich zu wissen, wie man "/ etc / passwd" bearbeitet.

Kevin Cantu
quelle
1
Es ist nützlich zu wissen, wie man / etc / passwd liest , aber es ist eine schlechte Praxis, es direkt zu ändern. Auf einigen von mir verwendeten * ixes (modernes SysV, OS X ...) sind diese Dateien nicht der primäre Ort, an dem Benutzer- und Gruppendaten gespeichert werden. Aus Kompatibilitätsgründen handelt es sich entweder um Schattenkopien oder um Primärquellen. Es gibt jedoch eine Datenbank oder einen Index, die bei jeder Änderung aktualisiert werden müssen. Wenn Sie auf diesen Systemen die Dateien nicht über die offiziellen Tools aktualisieren, werden die Änderungen nicht sofort wirksam, wenn überhaupt.
Warren Young
Nur nicht munge / etc / passwd
Stefan Lasiewski
1

Wenn Sie ein anderes Backend als das Standard-Backend des lokalen Computers verwenden - OpenLDAP ist das am häufigsten verwendete -, ist cpu (Dienstprogramm zum Ändern des Kennworts) möglicherweise der gesuchte Befehl. Bei korrekter Konfiguration kann es auf anderen Computern als dem LDAP-Master ausgeführt werden. Die Syntax entspricht meist der von useraddetc mit dem Präfix cpu. Also, um mich hinzuzufügen, könnte ich tun

$ sudo cpu useradd hamish

Weitere Informationen finden Sie auf der CPU-Manpage .

Hamish Downer
quelle
Interessant, aber eine Antwort, die nur auf einem Computer gilt, dessen Benutzerinformationen von LDAP abgerufen werden, ist für mich von sehr begrenztem Nutzen.
David Z
0

Wenn Ihre Frage auf beschränkt war

jedes Linux-System (jeder Distribution)

Alle Systeme haben jedoch Netzwerkzugriff auf einen einzelnen Server. Sie könnten so etwas wie NIS oder YP verwenden. Daher ist diese Antwort auf Administratoren innerhalb einer einzelnen Organisation beschränkt.

Sie haben immer noch das Problem, dass fast jede Distribution leicht unterschiedliche Möglichkeiten zum Konfigurieren von YP hat, die Konfiguration jedoch nur einmal erfolgt. Auch diese Art von Netzwerk ist nicht trivial.

Innerhalb eines einzelnen Standorts / Netzwerks gewinnen Sie dabei viel. In Kombination mit automount ist es mein Favorit, SSH auf jedem * nix-Computer ausführen zu können und alle meine Home-Dateien und Tools zur Verfügung zu haben.

Die Verteilung, die Sie für den Master auswählen, ist das System, das Sie zum Verwalten von Benutzern verwenden. Sie haben dann einen einzigen Satz von Tools / Dokumentationen zum Verwalten von Benutzern und Gruppen.

Es ist sogar möglich, so etwas wie LDAP- und Samba-Tools auf dem Master zu verwenden. Mit Samba kann ich meine Home-Dateien auch auf Windows-Computern zur Verfügung stellen.

Stephen Jazdzewski
quelle
Vielen Dank, aber ich suche nach einer Antwort, die auch für nicht vernetzte Systeme gilt.
David Z
0

Die nächste Sache, ein Standard ist , dass Sie bekommen vi /etc/passwd, vi /etc/shadowund vi /etc/groups. (Ketzer können ersetzen emacs.) Alles, was ich seitdem gefunden habe, funktioniert nur auf einigen Systemen.

Im Ernst, finden Sie heraus, über welche Tools Ihr Betriebssystem verfügt, und verwenden Sie sie. Erwarten Sie nur nicht, dass sie auf allen Systemen gleich funktionieren. Es wäre schön, wenn sie standardisiert wären, aber sie sind es nicht.

David Thornley
quelle
Die Verwendung eines Texteditors zum Bearbeiten von Konfigurationsdateien, die Tools für Sie bearbeiten können und sollten, ist kein Standard. Sie sollten niemals einen Texteditor verwenden, um eine Konfigurationsdatei zu ändern, wenn das Betriebssystem oder die Anwendung ein Dienstprogramm bereitstellt, das dies für Sie erledigt. Dies gilt insbesondere für /etc/passwd, /etc/shadow, /etc/group, und /etc/gshadow. Dafür sind die Werkzeuge da. Menschen sind fehleranfällig, während Tools getestet wurden und (hoffentlich) fehlerfrei sind.
Aaron Toponce
Rufen Sie niemals einen Redakteur /etc/passwdund Freunde direkt an. Verwenden Sie vipwund vigr, was: Sperren Sie die Datei gegen gleichzeitige Ausgabe; Führen Sie Ihren Lieblingseditor aus ( $VISUAL). Ändern Sie die Datei nicht, wenn Sie einen Syntaxfehler machen. Auf einigen Systemen (z. B. FreeBSD) werden auch andere Dateien neu generiert, die synchron gehalten werden müssen.
Gilles 'SO - hör auf böse zu sein'