Une commande pour lister tous les utilisateurs? Et comment ajouter, supprimer, modifier des utilisateurs?

857

J'ai besoin d'une commande pour lister tous les utilisateurs du terminal. Et comment ajouter, supprimer, modifier les utilisateurs du terminal.

Cela pourrait vous aider à gérer facilement vos comptes par terminal.

nux
la source
3
réponse sedsed 's/:.*//' /etc/passwd
Avinash Raj
2
utilisateurs de la liste:awk -F: '{ print $1 }' /etc/passwd
saviour123

Réponses:

1144

Lister

Pour lister tous les utilisateurs locaux , vous pouvez utiliser:

cut -d: -f1 /etc/passwd

Pour lister tous les utilisateurs capables de s’authentifier (d’une manière ou d’une autre), y compris les non-locaux, voir cette réponse .

Quelques commandes de gestion des utilisateurs plus utiles (également limitées aux utilisateurs locaux ):

Ajouter

Pour ajouter un nouvel utilisateur, vous pouvez utiliser:

sudo adduser new_username

ou:

sudo useradd new_username

Voir aussi: Quelle est la différence entre adduser et useradd?

Pour supprimer / supprimer

Pour supprimer / supprimer un utilisateur, vous pouvez d’abord utiliser:

sudo userdel username

Ensuite, vous voudrez peut-être supprimer le répertoire de base du compte d'utilisateur supprimé:

sudo rm -r / home / nom d'utilisateur

Veuillez utiliser avec prudence la commande ci-dessus!

Modifier

Pour modifier le nom d'utilisateur d'un utilisateur:

usermod -l new_username old_username

Pour changer le mot de passe d'un utilisateur:

sudo passwd username

Pour changer le shell pour un utilisateur:

sudo chsh username

Pour modifier les détails d'un utilisateur (par exemple, son nom réel):

sudo chfn username

Pour ajouter un utilisateur au sudogroupe:

adduser username sudo

ou

usermod -aG sudo username

Et, bien sûr voir aussi: man adduser, man useradd, man userdel... et ainsi de suite.

Radu Rădeanu
la source
12
Radu a oublié de mentionner les sudo chfn <username>modifications apportées aux détails de l'utilisateur (par exemple, son nom réel). J'ai essayé d'ajouter ceci en tant que commentaire, mais une erreur me dit que je dois avoir plus de 50 ans de réputation pour le faire.
Mikaela
2
Je pense qu'il convient de souligner que la bonne réponse à la question liée est askubuntu.com/a/381646/16395 - sinon vous devez tenir compte des politiques GID / UID Ubuntu à la main. La réponse acceptée n'est pas si claire.
Rmano
sudo userdel DOMAIN \\ johndoe me donne l’erreur suivante: "userdel: impossible de supprimer l’entrée 'DOMAIN \ johndoe' de / etc / passwd - j’ai cherché dans / etc / passwd et ils ne sont même pas là, probablement parce que c’est un" compte "domaine"?
00fruX
1
@ 00fruX Ouais ... Si vous utilisez une base de données utilisateur centralisée, vous devrez vous en occuper directement.
Oli
87

Appuyez simplement sur Ctrl+ Alt+ Tsur votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez les commandes ci-dessous:

cat /etc/passwd

OU

less /etc/passwd
more /etc/passwd

Vous pouvez également utiliser awk: awk

awk -F':' '{ print $1}' /etc/passwd
Mitch
la source
comment ajouter des utilisateurs par commande?
Nux
Vous pouvez utiliser la commande useradd .
Mitch
@nux Un peu en retard pour le parti, mais l'utilisation de la ligne de commande à la adduserplace, useradddevrait être limitée aux scripts où l'auteur sait vraiment ce qu'il fait.
Flindeberg
64

Le moyen le plus simple d’obtenir ce type d’informations est getent- voir la page de manuel pour la getentcommandeIcône de page de manuel . Bien que cette commande donne le même résultat cat /etc/passwdqu’il est utile de retenir, elle vous donnera des listes de plusieurs éléments du système d’exploitation.

Pour obtenir une liste de tous les utilisateurs que vous tapez (les utilisateurs sont répertoriés /etc/passwd)

getent passwd

Pour ajouter un nouvel utilisateur au système, vous devez taper

sudo adduser newuser

pour créer un utilisateur auquel tous les paramètres par défaut sont appliqués.

Bonus: pour ajouter n'importe quel utilisateur (par exemple anyuser ) à un groupe (par exemple cdrom )

sudo adduser anyuser cdrom

Vous supprimez un utilisateur (par exemple obsolète ) avec

sudo deluser obsolete

Si vous souhaitez également supprimer son répertoire personnel / vos mails, vous tapez

sudo deluser --remove-home obsolete

Et

sudo deluser --remove-all-files obsolete

supprime l'utilisateur et tous les fichiers appartenant à cet utilisateur sur l'ensemble du système.

Guntbert
la source
8
Il est utile de se rappeler que getent n'imprime pas seulement la sortie des utilisateurs de / etc / passwd, mais également tous les utilisateurs de tous les backends userdb configurés sur un système donné, qu'il s'agisse de / etc / passwd ou de LDAP, etc.
Marcin Kaminski
@MarcinKaminski a raison, il imprime également la configuration des utilisateurs dans les systèmes SSO ayant accès au serveur. cette réponse est la meilleure, getent passwdétant le bon commandement
ulkas
@MarcinKaminski de tous les moteurs énumérables userdb
jrw32982
43

Vous pouvez aussi utiliser compgen GNU bash intégré :

compgen -u

Will liste tous les utilisateurs.

Ravexina
la source
2
Le plus court et fonctionnel! Devrait être le accepté à mon avis.
Nam G VU
27

Cela devrait permettre, dans la plupart des situations normales , à tous les utilisateurs normaux (non-système, pas bizarre, etc.):

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

Cela fonctionne par:

  • lire dans /etc/passwd
  • en utilisant :comme délimiteur
  • si le troisième champ (le numéro d'identification de l'utilisateur) est supérieur à 1000 et non à 65534, le premier champ (le nom d'utilisateur de l'utilisateur) est imprimé.

En effet, sur de nombreux systèmes Linux, les noms d’utilisateur supérieurs à 1 000 sont réservés aux utilisateurs non privilégiés (on pourrait dire normaux). Quelques informations à ce sujet ici :

Un ID utilisateur (UID) est un entier positif unique attribué à chaque utilisateur par un système d'exploitation de type Unix. Chaque utilisateur est identifié au système par son UID et les noms d'utilisateur ne sont généralement utilisés que comme interface pour les humains.

Les UID sont stockés, avec leurs noms d'utilisateur correspondants et d'autres informations spécifiques à l'utilisateur, dans le fichier / etc / passwd ...

Le troisième champ contient l'UID et le quatrième champ contient l'ID de groupe (GID), qui par défaut est égal à l'UID de tous les utilisateurs ordinaires.

Dans les noyaux Linux 2.4 et supérieurs, les UID sont des entiers 32 bits non signés pouvant représenter des valeurs allant de zéro à 4 294 967 296. Toutefois, il est conseillé d’utiliser des valeurs allant jusqu’à 65 534 afin de maintenir la compatibilité avec les systèmes utilisant des noyaux plus anciens ou des systèmes de fichiers ne pouvant prendre en charge que des UID 16 bits.

L'UID de 0 a un rôle spécial: il s'agit toujours du compte racine (c'est-à-dire de l'utilisateur administrateur omnipotent). Bien que le nom d'utilisateur puisse être modifié sur ce compte et que des comptes supplémentaires puissent être créés avec le même UID, aucune action n'est judicieuse du point de vue de la sécurité.

L'UID 65534 est généralement réservé à personne, un utilisateur sans privilèges système, par opposition à un utilisateur ordinaire (c'est-à-dire non privilégié). Cet UID est souvent utilisé par des personnes accédant au système à distance via FTP (protocole de transfert de fichier) ou HTTP (protocole de transfert hypertexte).

Les UID 1 à 99 sont traditionnellement réservés à des utilisateurs système spéciaux (parfois appelés pseudo-utilisateurs), tels que wheel, daemon, lp, opérateur, actualités, messagerie, etc. Ces utilisateurs sont des administrateurs qui n'ont pas besoin de pouvoirs root totaux, mais certaines tâches administratives et nécessitent donc plus de privilèges que ceux accordés aux utilisateurs ordinaires.

Certaines distributions Linux (c.-à-d. Versions) commencent les UID pour les utilisateurs non privilégiés à 100. D'autres, telles que Red Hat, les commencent à 500, et d'autres, telles que Debian, les démarrent à 1000. En raison des différences entre les distributions, manuel intervention peut être nécessaire si plusieurs distributions sont utilisées dans un réseau dans une organisation.

En outre, il peut être pratique de réserver un bloc d’ID utilisateur pour les utilisateurs locaux, par exemple 1000 à 9999, et un autre pour les utilisateurs distants (utilisateurs situés ailleurs sur le réseau), tels que 10000 à 65534. L'important est de décider sur un schéma et y adhérer.

L'un des avantages de cette pratique consistant à réserver des blocs de numéros à des types d'utilisateurs particuliers est qu'il est plus pratique de rechercher dans les journaux système des activités utilisateur suspectes.

Contrairement à la croyance populaire, il n'est pas nécessaire que chaque entrée du champ UID soit unique. Cependant, des UID non uniques peuvent causer des problèmes de sécurité. Par conséquent, les UID doivent rester uniques dans toute l'organisation. De même, le recyclage des UID d'anciens utilisateurs devrait être évité le plus longtemps possible.

Wilf
la source
1
Presque une réponse parfaite, mais IMO est plus propre à utiliser getentau lieu de lire directement depuis /etc/passwdet lookup UID_MIN/ UID_MAXau lieu de coder en dur les valeurs: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 de tous les utilisateurs pouvant se connecter (aucun utilisateur système comme: bin, deamon, mail, sys, etc.)

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

ajouter un nouvel utilisateur

sudo adduser new_username

ou

sudo useradd new_username

supprimer / supprimer le nom d'utilisateur

sudo userdel username

Si vous souhaitez supprimer le répertoire personnel (par défaut, le répertoire / home / nom d'utilisateur)

sudo deluser --remove-home username

ou

sudo rm -r /path/to/user_home_dir

Si vous souhaitez supprimer tous les fichiers du système de cet utilisateur (non seulement le répertoire personnel).

sudo deluser --remove-all-files
Donovan Vesters
la source
1
Peut-être devriez-vous expliquer la différence entre adduseret useradd. Ajoutez également le sudopréfixe à la première commande. Le fichier shadow de mot de passe ne peut être lu qu'en tant que root.
s3lph
1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowm'a montré tous les utilisateurs, y compris bin, daemon, etc. et a lancé cet avertissement: séquence d'échappement \$' treated as plain $ 'J'ai trouvé cet article stackoverflow.com/a/25867768/847954 et ajouté une barre oblique inverse supplémentaire, qui a bien fonctionné:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk le
8

Ok, voici une astuce qui vous aidera à trier cela. Le terminal se termine automatiquement si vous tapez utilisateur et appuyez deux fois sur la touche de tabulation; toutes les commandes existantes avec l'utilisateur seront répertoriées comme les 4 premiers caractères.

user (tab tab)

me donne comme options possibles useradd userdel usermod utilisateurs users-admin
si vous voulez en savoir plus sur une commande google it ou tapez man man useradd donne useradd - créez un nouvel utilisateur ou mettez à jour les nouvelles informations d'utilisateur par défaut ... ...

pour lister les utilisateurs, vous devriez aller avec ce que Mitch a dit.

L’espoir que cela aide j’aime l’achèvement de la tabulation dans bash me sauve de me souvenir de choses.

utilisateur239243
la source
6

Pour trouver les utilisateurs qui ont des répertoires de départ dans le dossier / home de la machine, exécutez les commandes suivantes.

cd /home
ls 

Vous pouvez ensuite voir les utilisateurs qui ont l'autorisation de se connecter au serveur. Si nous voulons examiner les fichiers de n’importe quel utilisateur, vous devez être l’utilisateur root.

anvesh
la source
8
Cela montre seulement le contenu de /home. Bien qu'Ubuntu y place les répertoires d'utilisateurs par défaut, ce n'est en aucun cas obligatoire.
David Foerster
ls /homepeut également contenir des répertoires d’utilisateurs supprimés.
Suraj