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
- doc Ubuntu sur la configuration avancée de Sudo
- Digital Ocean
- Amazon
- comprendre /etc/shadow réf à
pwck
(password check)