Catégories
Devops

Linux: gestion des utilisateurs

Gestion des utilisateurs

Ajout d’un compte

sudo useradd -m toto  création d’un nouvel utilisateur toto, avec création d’un home dir (option -m)
sudo adduser est une commande (script perl qui utilise useradd) qui fourni une interface en ligne de commande avec une série de questions ce qui est plus agréable lorsque l’on cré l’utilisateur interactivement.
Utiliser par ex sudo adduser toto --disabled-password.

Création/modification du mot de passe d’un user

sudo passwd toto  permet de modifier interactivement le mot de passe de toto

Gestion des groupes d’utilisateurs

sudo addgroup joueurs  ajoute un nouveau groupe au système

sudo delgroup joueurs  supprime le groupe spécifié du système

sudo usermod -a -G joueurs $USER  ajoute l’utilisateur courant au groupe spécifié

Suppression d’un compte

sudo deluser --remove-home -f toto  : supprime l’utilisateur du système.

  • --remove-home supprime le répertoire home de ce user
  •  -f force la suppression des fichiers du home, même ceux qui n’appartiennent pas à ce user

désactivation d’un compte

sudo passwd -l toto  : désactive le login sur le système avec login/mot de passe, attention le login via clé ssh sera toujours fonctionnel avec cette commande. Intervient sur le fichier /etc/shadow

sudo usermod --expiredate 1 toto  : désactive complètement le compte sans le supprimer du système, bloque également l’accès via clés ssh. Intervient sur le fichier /etc/passwd

usermod est l’outil qui permet de changer les caractéristiques d’un compte (expiration, chemin du dossier home, groupes etc).

Sudo

La commande sudo permet à un utilisateur autorisé, d’exécuter des commandes avec des privilèges élevés d’administrateur.

visudo

Le fichier /etc/sudoers permet de gérer la liste des utilisateurs et groupes ayant droit d’effectuer des sudo, il faut donc éviter de le casser syntaxiquement.

Pour modifier ce fichier, il est vivement recommandé d’utiliser l’utilitaire visudo qui effectuera une vérification syntaxique avant la sauvegarde du fichier.
Par défaut il modifiera le fichier principal /etc/sudoers, mais il est recommandé de ne pas y toucher et de créer un fichier de permission spécifique /etc/sudoers.d/xxx par utilisateur par ex :

sudo visudo -f /etc/sudoers.d/behrouze

Cette commande lancera probablement l’éditeur de text nano pour modifier ce fichier, mais il est possible de lancer visudo en utilisant un éditeur de texte en particulier (Vim par ex) en lançant :

sudo VISUAL=command -v vi visudo 

mais il est également possible de changer l’éditeur par défaut avec la commande update-alternatives --config editor

syntaxe sudoers

La syntaxe générale est la suivante :

login_du_user ALL = (user) commande1, NOPASSWD: commande2,…

A noter (user) qui est l’utilisateur cible 🤖 (souvent root).

Pour autoriser un utilisateur toto à lancer n’importe quelle commandes :

toto ALL=(ALL) ALL

et pour autoriser l’exécution de sudo sans demander de mot de passe grâce à l’argument NOPASSWD (attention danger!):

toto ALL=(ALL) NOPASSWD:ALL

Il est également possible d’attribuer les droits à un groupe d’utilisateurs, il suffira alors de rajouter notre utilisateur à ce groupe (ex ici un groupe nommé sudo):

%sudo ALL=(ALL) NOPASSWD:ALL

Voici la signification de chaque argument (tiré de serversforhackers) et l’étendu de leur application :

  • toto ALL=(ALL:ALL) ALL -> utilisateur toto
  • toto ALL=(ALL:ALL) ALL -> tous les utilisateurs totos, loggés depuis n’importe quel machine
  • toto ALL=(ALL:ALL) ALL -> utilisateur toto peut exécuter les commandes en tant que n’importe quel utilisateur
  • toto ALL=(ALL:ALL) ALL -> utilisateur toto peut exécuter les commandes en tant que n’importe quel groupe
  • toto ALL=(ALL:ALL) ALL -> cette règle s’applique à toutes les commandes (c’est ici qu’on spécifie la liste de commandes, si on ne souhaite pas donner accès à toutes les commandes du système)
  • toto ALL=(ALL:ALL) NOPASSWD:ALL -> aucun password requis pas toto, il peut tout exécuter sur la machine sans limite

Vérification d’un password

le fichier /etc/shadow contient les mots de passe locaux hashés des utilisateurs du système.

# pour récupérer le hash
sudo getent shadow toto
sudo grep toto /etc/shadow

# donnera un résultat du type
toto:$6$oYR0FrcW$slRcCKaKfzmBmseX7WkPsuZ.I3iOVDuO0uFa3NIxe0DkDMvNwL91EqXSPVWnXjUMgdbGxGSYZwRnPxIyJjVza0:18362:0:99999:7:::

le résultat précédent se lit comme suit:
USERNAME:$TYPE_HASH$SALT$HASH:18362:0:99999:7:::
TYPE_HASH peut être sha-512, md5 ou autres
les chiffres suivants le 1er ‘:’ sont en rapport avec la date d’expiration du password

mkpasswd -m sha-512 totolerigolo oYR0FrcW  # hash en SHA-512
openssl totolerigolo -1 -salt oYR0FrcW  # hash en MD5

nous retourne le résultat suivant (identique au hash récupéré dans /etc/shadow) :
$6$oYR0FrcW$slRcCKaKfzmBmseX7WkPsuZ.I3iOVDuO0uFa3NIxe0DkDMvNwL91EqXSPVWnXjUMgdbGxGSYZwRnPxIyJjVza0

Fichiers importants

/etc/passwd
/etc/shadow
/etc/login.defs
/etc/deluser.conf
/etc/skel   # arborescence copiée lors d'un useradd -m
/etc/sudoers

Liens