Ein Befehl, um alle Benutzer aufzulisten? Und wie können Benutzer hinzugefügt, gelöscht oder geändert werden?

855

Ich benötige einen Befehl, um alle Benutzer im Terminal aufzulisten. Und wie man Benutzer aus dem Terminal hinzufügt, löscht, ändert.

Dies kann bei der einfachen Verwaltung Ihrer Konten über das Terminal hilfreich sein.

Nux
quelle
3
sed answersed 's/:.*//' /etc/passwd
Avinash Raj
2
list users:awk -F: '{ print $1 }' /etc/passwd
saviour123

Antworten:

1142

Auflisten

So listen Sie alle lokalen Benutzer auf, die Sie verwenden können:

cut -d: -f1 /etc/passwd

In dieser Antwort finden Sie eine Liste aller Benutzer, die sich (auf irgendeine Weise) authentifizieren können, einschließlich nicht lokaler Benutzer .

Einige nützlichere Benutzerverwaltungsbefehle (auch auf lokale Benutzer beschränkt):

Hinzufügen

Um einen neuen Benutzer hinzuzufügen, können Sie Folgendes verwenden:

sudo adduser new_username

oder:

sudo useradd new_username

Siehe auch: Was ist der Unterschied zwischen adduser und useradd?

Entfernen / Löschen

Zum Entfernen / Löschen eines Benutzers können Sie zunächst Folgendes verwenden:

sudo userdel username

Dann möchten Sie möglicherweise das Basisverzeichnis für das gelöschte Benutzerkonto löschen:

sudo rm -r / home / benutzername

Bitte verwenden Sie mit Vorsicht den obigen Befehl!

Ändern

So ändern Sie den Benutzernamen eines Benutzers:

usermod -l new_username old_username

So ändern Sie das Kennwort für einen Benutzer:

sudo passwd username

So ändern Sie die Shell für einen Benutzer:

sudo chsh username

So ändern Sie die Details für einen Benutzer (zum Beispiel den richtigen Namen):

sudo chfn username

So fügen Sie der sudoGruppe einen Benutzer hinzu :

adduser username sudo

oder

usermod -aG sudo username

Und natürlich, siehe auch: man adduser, man useradd, man userdel... und so weiter.

Radu Rădeanu
quelle
12
Radu vergaß zu erwähnen, sudo chfn <username>welche Änderungen Benutzerdetails (zum Beispiel richtiger Name). Ich habe versucht, dies als Kommentar hinzuzufügen, habe jedoch die Fehlermeldung erhalten, dass ich dafür einen Ruf von +50 haben muss.
Mikaela
2
Ich denke, es sollte unterstrichen werden, dass die richtige Antwort auf die verknüpfte Frage askubuntu.com/a/381646/16395 lautet - ansonsten müssen Sie die GID / UID-Ubuntu-Richtlinien von Hand berücksichtigen. Die akzeptierte Antwort ist nicht so klar.
Rmano
sudo userdel DOMAIN \\ johndoe gibt mir den Fehler: "userdel: Eintrag 'DOMAIN \ johndoe' kann nicht aus / etc / passwd entfernt werden - ich habe in / etc / passwd nachgesehen und sie sind nicht einmal dort, wahrscheinlich weil es ein" domain "account?
00fruX
1
@ 00fruX Ja ... Wenn Sie eine zentralisierte Benutzerdatenbank verwenden, müssen Sie sich direkt damit befassen.
Oli
87

Drücken Sie einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:

cat /etc/passwd

ODER

less /etc/passwd
more /etc/passwd

Sie können auch awk: awk verwenden

awk -F':' '{ print $1}' /etc/passwd
Mitch
quelle
wie man Benutzer durch Befehl hinzufügt?
Nux
Sie können den Befehl useradd verwenden .
Mitch
Ein bisschen spät , um die Partei @nux, sondern aus der Benutzung Befehlszeile adduserstattdessen useraddsollte Skripte beschränkt werden , in denen der Autor wirklich wirklich weiß , was er tut.
Flindeberg
64

Der einfachste Weg, um diese Art von Informationen zu erhalten, ist getent- siehe Manpage für den getentBefehlManpage-Symbol . Während dieser Befehl dieselbe Ausgabe liefert cat /etc/passwd, ist es nützlich, sich daran zu erinnern, dass er Ihnen Listen mit mehreren Elementen im Betriebssystem liefert .

So rufen Sie eine Liste aller von Ihnen eingegebenen Benutzer ab (wie in aufgeführt /etc/passwd)

getent passwd

Um dem System einen Benutzer newuser hinzuzufügen , geben Sie Folgendes ein

sudo adduser newuser

um einen Benutzer zu erstellen, auf den alle Standardeinstellungen angewendet wurden.

Bonus: für jeden Benutzer hinzufügen (zum Beispiel anyuser ) zu einer Gruppe (zB CD - ROM ) -Typ

sudo adduser anyuser cdrom

Mit löschen Sie einen Benutzer (zB obsolet )

sudo deluser obsolete

Wenn Sie auch sein Heimatverzeichnis / seine E-Mails löschen möchten, geben Sie Folgendes ein

sudo deluser --remove-home obsolete

Und

sudo deluser --remove-all-files obsolete

entfernt den Benutzer und alle Dateien, die diesem Benutzer gehören, auf dem gesamten System.

guntbert
quelle
8
Es ist nützlich, sich daran zu erinnern, dass getent nicht nur die Ausgabe von Benutzern in / etc / passwd druckt, sondern alle Benutzer in allen konfigurierten Userdb-Backends auf einem bestimmten System, ob es sich um / etc / passwd oder LDAP usw. handelt.
Marcin Kaminski
@MarcinKaminski ist richtig, es druckt auch Benutzer, die in SSO-Systemen eingerichtet wurden und Zugriff auf den Server haben. diese getent passwd
antwort
@MarcinKaminski aus allen enumerable userdb Backends
jrw32982
43

Sie können auch die integrierte compgen GNU-Bash-Funktion verwenden :

compgen -u

Listet alle Benutzer auf.

Ravexina
quelle
2
Kürzeste und arbeiten! Sollte aus meiner Sicht die akzeptierte sein.
Nam G VU
27

Dies sollte unter den meisten normalen Umständen alle normalen Benutzer (keine Systembenutzer, keine seltsamen Benutzer usw.) erreichen:

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

Dies funktioniert durch:

  • Einlesen von /etc/passwd
  • Verwendung :als Begrenzer
  • Wenn das dritte Feld (die Benutzer-ID-Nummer) größer als 1000 und nicht 65534 ist, wird das erste Feld (der Benutzername des Benutzers) gedruckt.

Dies liegt daran, dass auf vielen Linux-Systemen Benutzernamen über 1000 für nichtprivilegierte (man könnte sagen, normale) Benutzer reserviert sind. Einige Infos dazu hier :

Eine Benutzer-ID (UID) ist eine eindeutige positive Ganzzahl, die jedem Benutzer von einem Unix-ähnlichen Betriebssystem zugewiesen wird. Jeder Benutzer wird durch seine UID gegenüber dem System identifiziert, und Benutzernamen werden im Allgemeinen nur als Schnittstelle für Menschen verwendet.

UIDs werden zusammen mit ihren entsprechenden Benutzernamen und anderen benutzerspezifischen Informationen in der Datei / etc / passwd gespeichert.

Das dritte Feld enthält die UID und das vierte Feld enthält die Gruppen-ID (GID), die standardmäßig für alle normalen Benutzer der UID entspricht.

In den Linux-Kerneln 2.4 und höher sind UIDs vorzeichenlose 32-Bit-Ganzzahlen, die Werte von Null bis 4.294.967.296 darstellen können. Es wird jedoch empfohlen, nur Werte bis 65.534 zu verwenden, um die Kompatibilität mit Systemen zu gewährleisten, die ältere Kernel oder Dateisysteme verwenden, die nur 16-Bit-UIDs unterstützen.

Die UID von 0 hat eine besondere Rolle: Sie ist immer das Root-Konto (dh der allmächtige administrative Benutzer). Obwohl der Benutzername für dieses Konto geändert und zusätzliche Konten mit derselben UID erstellt werden können, ist aus Sicherheitsgründen keine Aktion sinnvoll.

Die UID 65534 ist normalerweise für niemanden reserviert, einen Benutzer ohne Systemberechtigungen, im Gegensatz zu einem normalen (dh nicht privilegierten) Benutzer. Diese UID wird häufig für Personen verwendet, die remote über FTP (File Transfer Protocol) oder HTTP (Hypertext Transfer Protocol) auf das System zugreifen.

Die UIDs 1 bis 99 sind traditionell für spezielle Systembenutzer reserviert (manchmal auch als Pseudobenutzer bezeichnet), z. B. Wheel, Daemon, LP, Operator, Nachrichten, E-Mail usw. Diese Benutzer sind Administratoren, die keine vollständigen Root-Berechtigungen benötigen, aber Leistung erbringen einige administrative Aufgaben und benötigen daher mehr Berechtigungen als normale Benutzer.

Einige Linux-Distributionen (dh Versionen) beginnen UIDs für nicht privilegierte Benutzer mit 100. Andere, wie Red Hat, beginnen sie mit 500, und wieder andere, wie Debian, beginnen sie mit 1000. Aufgrund der Unterschiede zwischen den Distributionen, manuell Ein Eingreifen kann erforderlich sein, wenn in einem Netzwerk in einer Organisation mehrere Verteilungen verwendet werden.

Es kann auch praktisch sein, einen UID-Block für lokale Benutzer wie 1000 bis 9999 und einen anderen Block für Remotebenutzer (dh Benutzer an anderer Stelle im Netzwerk) wie 10000 bis 65534 zu reservieren. Wichtig ist, dass Sie sich entscheiden auf ein Schema und halten Sie sich daran.

Zu den Vorteilen dieser Methode, Nummernblöcke für bestimmte Benutzertypen zu reservieren, gehört, dass die Suche in Systemprotokollen nach verdächtigen Benutzeraktivitäten vereinfacht wird.

Entgegen der landläufigen Meinung ist es nicht erforderlich, dass jeder Eintrag im UID-Feld eindeutig ist. Nicht eindeutige UIDs können jedoch Sicherheitsprobleme verursachen. Daher sollten UIDs im gesamten Unternehmen eindeutig bleiben. Ebenso sollte das Recycling von UIDs ehemaliger Benutzer so lange wie möglich vermieden werden.

Wilf
quelle
1
Fast eine perfekte Antwort, aber IMO ist es sauberer zu verwenden, getentanstatt direkt zu lesen /etc/passwdund nachzuschlagen UID_MIN/ UID_MAXanstatt die Werte hart zu codieren:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa
17

Liste aller Benutzer, die sich anmelden können (keine Systembenutzer wie bin, deamon, mail, sys usw.)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

Neuen Benutzer hinzufügen

sudo adduser new_username

oder

sudo useradd new_username

Benutzername löschen / entfernen

sudo userdel username

Wenn Sie das Home-Verzeichnis löschen möchten (standardmäßig das Verzeichnis / home / Benutzername)

sudo deluser --remove-home username

oder

sudo rm -r /path/to/user_home_dir

Wenn Sie alle Dateien von diesem Benutzer aus dem System löschen möchten (nicht nur das Basisverzeichnis)

sudo deluser --remove-all-files
Donovan Vesters
quelle
1
Vielleicht solltest du den Unterschied zwischen adduserund erklären useradd. sudoFügen Sie dem ersten Befehl auch das -prefix hinzu. Die Passwort-Shadow-Datei kann nur als root gelesen werden.
S3LPH
1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowzeigte mir alle Benutzer einschließlich ist, daemon usw. und diese Warnung warf: Escape - Sequenz \$' treated as plain $‘fand ich diesen Beitrag stackoverflow.com/a/25867768/847954 und hinzugefügt mehr Backslash ein und es funktionierte gut:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff Moschus
8

Ok, hier ist ein Trick, der dir dabei hilft, das zu sortieren. Das Terminal hat eine automatische Vervollständigung, wenn Sie Benutzer eingeben und zweimal die Tabulatortaste drücken. Es listet alle Befehle auf, die mit Benutzer als die ersten 4 Zeichen vorhanden sind.

user (tab tab)

gibt mir als mögliche optionen useradd userdel usermod users users-admin
wenn du mehr über einen befehl wissen willst google es oder tippe man man useradd gibt useradd - erstelle einen neuen benutzer oder aktualisiere standard neue benutzerinformationen ... ...

Um Benutzer aufzulisten, sollten Sie sich an das halten, was Mitch gesagt hat.

Ich hoffe, das hilft mir, die Tab-Vervollständigung in der Bash zu lieben, und erspart mir, mich an Dinge zu erinnern.

user239243
quelle
6

Führen Sie die folgenden Befehle aus, um die Benutzer mit den Basisverzeichnissen im Ordner / home auf dem Computer zu ermitteln

cd /home
ls 

Sie können dann die Benutzer sehen, die berechtigt sind, sich am Server anzumelden. Wenn wir die Dateien eines Benutzers untersuchen möchten, müssen Sie der Root-Benutzer sein.

anvesh
quelle
8
Dies zeigt nur den Inhalt von /home. Während Ubuntu Benutzerverzeichnisse standardmäßig dort ablegt, ist dies in keiner Weise obligatorisch.
David Foerster
ls /homekann auch Benutzerverzeichnisse gelöschter Benutzer enthalten.
Suraj