Table des matières
Dernière mise-à-jour : 2020/01/30 03:27
Gestion des Utilisateurs
La bonne gestion des utilisateurs passe par une bonne stratégie de groupes. En effet, chaque utilisateur est affecté à un groupe principal mais il peut aussi être membre d'un ou de plusieurs groupes secondaires.
Comme dans d'autres systèmes d'exploitation, sous Linux il est préférable de donner les droits d'accès aux groupes et non aux utilisateurs individuels.
A faire - Afin de mettre en pratique les exemples dans cette unité, vous devez vous connecter à votre système en tant que root grâce à la commande sudo su - et le mot de passe trainee.
Groupes
Pour lister les groupes existants sur le système, saisissez la commande suivante :
root@ubuntu:~# cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,trainee tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20: fax:x:21: voice:x:22: cdrom:x:24:trainee floppy:x:25: tape:x:26: sudo:x:27:trainee audio:x:29:pulse dip:x:30:trainee www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44: sasl:x:45: plugdev:x:46:trainee staff:x:50: games:x:60: users:x:100: nogroup:x:65534: libuuid:x:101: netdev:x:102: crontab:x:103: syslog:x:104: fuse:x:105: messagebus:x:106: ssl-cert:x:107: lpadmin:x:108:trainee scanner:x:109:saned mlocate:x:110: ssh:x:111: utempter:x:112: avahi-autoipd:x:113: rtkit:x:114: saned:x:115: whoopsie:x:116: avahi:x:117: lightdm:x:118: nopasswdlogin:x:119: bluetooth:x:120: colord:x:121: pulse:x:122: pulse-access:x:123: trainee:x:1000: sambashare:x:124:trainee vboxsf:x:999:
Notez que la valeur du GID ( Group ID ) de root est de 0 et que les GID des utilisateurs normaux commencent à 1000 ( voir trainee ).
Dans ce fichier, chaque ligne est constituée de 4 champs :
- Le nom unique du groupe,
- Le mot de passe du groupe. Une valeur de x dans ce champs indique que le système utilise le fichier /etc/gshadow pour stocker les mots de passe. Une valeur de ! indique que le groupe n'a pas de mot passe et que l'accès au groupe via la commande newgrp n'est pas possible,
- Le GID. Une valeur unique utilisée pour déterminée les droits d'accès aux fichiers et aux répertoires,
- La liste des membres ayant le groupe comme groupe secondaire.
Pour consulter le fichier /etc/gshadow, saisissez la commande suivante :
root@ubuntu:~# cat /etc/gshadow root:*:: daemon:*:: bin:*:: sys:*:: adm:*::syslog,trainee tty:*:: disk:*:: lp:*:: mail:*:: news:*:: uucp:*:: man:*:: proxy:*:: kmem:*:: dialout:*:: fax:*:: voice:*:: cdrom:*::trainee floppy:*:: tape:*:: sudo:*::trainee audio:*::pulse dip:*::trainee www-data:*:: backup:*:: operator:*:: list:*:: irc:*:: src:*:: gnats:*:: shadow:*:: utmp:*:: video:*:: sasl:*:: plugdev:*::trainee staff:*:: games:*:: users:*:: nogroup:*:: libuuid:!:: netdev:!:: crontab:!:: syslog:!:: fuse:!:: messagebus:!:: ssl-cert:!:: lpadmin:!::trainee scanner:!::saned mlocate:!:: ssh:!:: utempter:!:: avahi-autoipd:!:: rtkit:!:: saned:!:: whoopsie:!:: avahi:!:: lightdm:!:: nopasswdlogin:!:: bluetooth:!:: colord:!:: pulse:!:: pulse-access:!:: trainee:!:: sambashare:!::trainee vboxsf:!::
Chaque ligne est constituée de 4 champs :
- Le nom du groupe. Ce champs est utilisé pour faire le lien avec le fichier /etc/group,
- Le mot de passe crypté du groupe s'il en existe un. Une valeur vide dans ce champs indique que seuls les membres du groupe peuvent exécuter la commande newgrp. Une valeur de !, de x ou de * indique que personne ne peut exécuter la commande newgrp pour le groupe,
- L'administrateur du groupe s'il en existe un,
- La liste des membres ayant le groupe comme groupe secondaire.
Afin de vérifier les fichiers /etc/group et /etc/gshadow pour des erreurs éventuelles, saisissez la commande suivante :
root@ubuntu:~# grpck -r
Dans le cas où vos fichiers ne comportent pas d'erreurs, vous vous retrouverez retourné au prompt.
L'option -r permet la vérification des erreurs sans le modifier.
Dans le cas où il est nécessaire de régénérer un des deux fichiers, il convient d'utiliser un des deux comandes suivantes :
- grpconv
- permet de régénérer le fichier /etc/gshadow à partir du fichier /etc/group et éventuellement du fichier /etc/gshadow existant
- grpunconv
- permet de régénérer le fichier /etc/group à partir du fichier /etc/gshadow et éventuellement du fichier /etc/group existant puis supprime le fichier /etc/gshadow
Utilisateurs
Notez que la règle la plus libérale concernant les noms d'utilisateurs sous Linux limite la longueur à 32 caractères et permet l'utilisation de majuscules, de minuscules, de nombres (sauf au début du nom) ainsi que la plupart des caractères de ponctuation. Ceci dit, certains utilitaires, tel useradd interdisent l'utilisation de majuscules et de caractères de ponctuation mais permettent l'utilisation des caractères _, . ainsi que le caractère $ à la fin du nom (ATTENTION : dans le cas de samba, un nom d'utilisateur se terminant par $ est considéré comme un compte machine). Qui plus est, certains utilitaires limitent la longueur du nom à 8 caractères.
Pour lister les comptes utilisateur existants sur le système, saisissez la commande suivante :
root@ubuntu:~# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin libuuid:x:100:101::/var/lib/libuuid: syslog:x:101:104::/home/syslog:/bin/false messagebus:x:102:106::/var/run/dbus:/bin/false usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false kernoops:x:106:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false rtkit:x:107:114:RealtimeKit,,,:/proc:/bin/false saned:x:108:115::/home/saned:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false trainee:x:1000:1000:trainee,,,:/home/trainee:/bin/bash vboxadd:x:999:1::/var/run/vboxadd:/bin/false
Notez que la valeur de l'UID de root est de 0 et que les UID des utilisateurs normaux commencent à 1000. Les UID des comptes système sont inclus entre 1 et 999.
Chaque ligne dans ce fichier est constituée de 7 champs :
- Le nom d'utilisateur
- Le mot de passe. Une valeur de x dans ce champs indique que le système utilise le fichier /etc/shadow pour stocker les mots de passe.
- L'UID. Une valeur unique qui est utilisée pour déterminée les droits aux fichiers et aux répertoires.
- Le GID. Une valeur indiquant le groupe principal de l'utilisateur
- Le nom complet. Ce champs optionnel est aussi appelé GECOS
- Le répertoire personnel de l'utilisateur
- Le shell de l'utilisateur.
Pour consulter le fichier /etc/shadow, saisissez la commande suivante :
root@ubuntu:~# cat /etc/shadow root:!:16340:0:99999:7::: daemon:*:16273:0:99999:7::: bin:*:16273:0:99999:7::: sys:*:16273:0:99999:7::: sync:*:16273:0:99999:7::: games:*:16273:0:99999:7::: man:*:16273:0:99999:7::: lp:*:16273:0:99999:7::: mail:*:16273:0:99999:7::: news:*:16273:0:99999:7::: uucp:*:16273:0:99999:7::: proxy:*:16273:0:99999:7::: www-data:*:16273:0:99999:7::: backup:*:16273:0:99999:7::: list:*:16273:0:99999:7::: irc:*:16273:0:99999:7::: gnats:*:16273:0:99999:7::: nobody:*:16273:0:99999:7::: libuuid:!:16273:0:99999:7::: syslog:*:16273:0:99999:7::: messagebus:*:16273:0:99999:7::: usbmux:*:16273:0:99999:7::: dnsmasq:*:16273:0:99999:7::: avahi-autoipd:*:16273:0:99999:7::: kernoops:*:16273:0:99999:7::: rtkit:*:16273:0:99999:7::: saned:*:16273:0:99999:7::: whoopsie:*:16273:0:99999:7::: speech-dispatcher:!:16273:0:99999:7::: avahi:*:16273:0:99999:7::: lightdm:*:16273:0:99999:7::: colord:*:16273:0:99999:7::: hplip:*:16273:0:99999:7::: pulse:*:16273:0:99999:7::: trainee:$6$5ZUj7cng$DN4OYb8zALVs06aLBCpTzuW9xQ07apFIMJJfg9iFscw6W/7SMjKix1lbKim8aU7YC1MlzA.aqyuuSHAMfEZ/r/:16340:0:99999:7::: vboxadd:!:16341::::::
Chaque ligne dans ce fichier est constituée de 8 champs :
- Le nom de l'utilisateur. Ce champs est utilisé pour faire le lien avec le fichier /etc/passwd,
- Le mot de passe crypté de l'utilisateur. Le cryptage est à sens unique. Ce champ peut aussi contenir une des trois valeurs suivantes :
- !! - Le mot de passe n'a pas encore été défini et l'utilisateur ne peut pas se connecter,
- * - L'utilisateur ne peut pas se connecter,
- vide - aucun mot de passe sera demandé pour l'utilisateur concerné,
- Le nombre de jours entre le 01/01/1970 et le dernier changement du mot de passe,
- Le nombre de jours que le mot de passe est encore valide. Une valeur de 0 dans ce champs indique sue le mot de passe n'expire jamais,
- Le nombre de jours après lequel le mot de passe doit être changé,
- Le nombre de jours avant la date de modification forcée que l'utilisateur recevra un avertissement,
- Le nombre de jours après l'expiration du mot de passe que le compte sera désactivé,
- Le numéro du jour après le 01/01/1970 que le compte a été désactivé.
Afin de vérifier les fichiers /etc/passwd et /etc/shadow pour des erreurs éventuelles, saisissez la commande suivante :
root@ubuntu:~# pwck -r utilisateur lp : le répertoire « /var/spool/lpd » n'existe pas utilisateur news : le répertoire « /var/spool/news » n'existe pas utilisateur uucp : le répertoire « /var/spool/uucp » n'existe pas utilisateur www-data : le répertoire « /var/www » n'existe pas utilisateur list : le répertoire « /var/list » n'existe pas utilisateur irc : le répertoire « /var/run/ircd » n'existe pas utilisateur gnats : le répertoire « /var/lib/gnats » n'existe pas utilisateur nobody : le répertoire « /nonexistent » n'existe pas utilisateur syslog : le répertoire « /home/syslog » n'existe pas utilisateur usbmux : le répertoire « /home/usbmux » n'existe pas utilisateur saned : le répertoire « /home/saned » n'existe pas utilisateur whoopsie : le répertoire « /nonexistent » n'existe pas utilisateur speech-dispatcher : le répertoire « /var/run/speech-dispatcher » n'existe pas utilisateur hplip : le répertoire « /var/run/hplip » n'existe pas utilisateur pulse : le répertoire « /var/run/pulse » n'existe pas utilisateur vboxadd : le répertoire « /var/run/vboxadd » n'existe pas pwck : aucun changement
Les erreurs ci-dessus ne sont pas importantes. Elles sont dues au fait que les répertoires de connexion de certains comptes systèmes ne sont pas créés par le système lors de la création des comptes et ceci justement pour éviter la possibilité qu'un pirate ou un hacker puisse se connecter au système en utilisant le compte concerné. Encore une fois, l'option -r permet la vérification des erreurs dans sans le modifier.
Dans le cas où il est nécessaire de régénérer un des deux fichiers, il convient d'utiliser une des deux comandes suivantes :
- pwconv
- permet de régénérer le fichier /etc/shadow à partir du fichier /etc/passwd et éventuellement du fichier /etc/shadow existant
- pwunconv
- permet de régénérer le fichier /etc/passwd à partir du fichier /etc/shadow et éventuellement du fichier /etc/passwd existant puis supprime le fichier /etc/shadow
Commandes
Groupes
groupadd
Cette commande est utilisée pour créer un groupe.
Options de la commande
root@ubuntu:~# groupadd --help Syntaxe: groupadd [options] GROUPE Options: -f, --force terminer avec succès si le groupe existe déjà ou interrompre -g si le GID est déjà utilisé -g, --gid GID utiliser cet identifiant (GID) pour le nouveau groupe -h, --help afficher ce message d'aide et quitter -K, --key CLÉ=VALEUR ignorer les valeurs par défaut de /etc/login.defs -o, --non-unique autoriser la création de groupes avec des identifiants (GID) non uniques -p, --password MOT_DE_PASSE utiliser ce mot de passe chiffré pour le nouveau groupe -r, --system créer un compte système -R, --root RÉP_CHROOT répertoire dans lequel chrooter
Il est possible de créer plusieurs groupes ayant le même GID.
Notez l'option -r qui permet la création d'un groupe système.
groupdel
Cette commande est utilisée pour supprimer un groupe.
Options de la commande
Cette commande ne prend pas d'options.
groupmod
Cette commande est utilisée pour modifier un groupe existant.
Options de la commande
root@ubuntu:~# groupmod --help Syntaxe: groupmod [options] GROUPE Options: -g, --gid GID modifier l'identifiant de groupe en utilisant GID comme valeur -h, --help afficher ce message d'aide et quitter -n, --new-name NOUVEAU_GROUPE renommer en NOUVEAU_GROUPE -o, --non-unique utiliser un identifiant de groupe déjà utilisé -p, --password MOT_DE_PASSE remplacer le mot de passe par le mot de passe chiffré MOT_DE_PASSE -R, --root RÉP_CHROOT répertoire dans lequel chrooter
newgrp
Cette commande est utilisée pour modifier le groupe de l'utilisateur qui l'invoque.
Options de la commande
root@ubuntu:~# newgrp --help Syntaxe : newgrp [-] [groupe]
gpasswd
Cette commande est utilisée pour modifier administrer le fichier /etc/group.
Options de la commande
root@ubuntu:~# gpasswd --help Utilisation : gpasswd [options] GROUPE Options : -a, --ADD UTILISATEUR ajouter UTILISATEUR au groupe GROUPE -d, --delete UTILISATEUR supprimer UTILISATEUR du groupe GROUPE -h, --help afficher ce message d'aide et quitter -Q, --root REP_CHROOT répertoire dans lequel chrooter -r, --remove-password supprimer le mot de passe du groupe GROUPE -R, --restrict restreindre l'accès au groupe GROUPE à ses membres -M, --members UTILISATEUR,… définir la liste des membres du groupe GROUPE -A, --administrators ADMIN,… définir la liste des administrateurs du GROUPE À l'exception des options A et M, les options ne peuvent pas être combinées.
Utilisateurs
useradd
Cette commande est utilisée pour ajouter un utilisateur.
Les codes retour de la commande useradd sont :
Code Retour | Description |
---|---|
1 | Impossible de mettre à jour le fichier /etc/passwd |
2 | Syntaxe invalide |
3 | Option invalide |
4 | L'UID demandé est déjà utilisé |
6 | Le groupe spécifié n'existe pas |
9 | Le nom d'utilisateur indiqué existe déjà |
10 | Impossible de mettre à jour le fichier /etc/group |
12 | Impossible de créer le répertoire personnel de l'utilisateur |
13 | Impossible de créer le spool mail de l'utilisateur |
Options de la commande
root@ubuntu:~# useradd --help Utilisation : useradd [options] LOGIN useradd -D useradd -D [options] Options : -b, --base-dir REP_BASE répertoire de base pour le répertoire personnel du compte du nouvel utilisateur -c, --comment COMMENTAIRE définir le champ « GECOS » du compte du nouvel utilisateur -d, --home-dir REP_PERS répertoire personnel pour le compte du nouvel utilisateur -D, --defaults afficher ou enregistrer la configuration par défaut modifiée de « useradd » -e, --expiredate DATE_EXPIR fixer la date de fin de validité du compte à DATE_EXPIR -f, --inactive INACTIF fixer la durée d'inactivité du mot de passe -g, --gid GROUPE forcer l'utilisation de GROUPE pour le compte du nouvel utilisateur -G, --groups GROUPES liste des GROUPES supplémentaires pour le compte du nouvel utilisateur -h, --help afficher ce message d'aide et quitter -k, --skel REP_SQEL définir un autre répertoire « skel » -K, --key CLÉ=VALEUR ignorer les valeurs par défaut de /etc/login.defs -l, --no-log-init ne pas ajouter l'utilisateur aux bases de données lastlog et faillog -m, --create-home créer le répertoire personnel pour le compte du nouvel utilisateur -M, --no-create-home ne pas créer de répertoire personnel pour le compte du nouvel utilisateur -N, --no-user-group ne pas créer de groupe de même nom que l'utilisateur -o, --non-unique autoriser la création d'un utilisateur avec un identifiant d'utilisateur (UID) dupliqué (non unique) -p, --password MOT_DE_PASSE utiliser un mot de passe chiffré pour le compte du nouvel utilisateur -r, --system créer un compte système -R, --root RÉP_CHROOT répertoire dans lequel chrooter -s, --shell INTERPRÉTEUR interpréteur de commandes initial pour le compte du nouvel utilisateur -u, --uid UID forcer l'utilisation de l'identifiant « UID » pour le compte du nouvel utilisateur -U, --user-group créer un groupe ayant le même nom que l'utilisateur -Z, --selinux-user SEUSER utiliser un SEUSER particulier pour la correspondance de l'utilisateur SELinux
Il est possible de créer plusieurs utilisateurs ayant le même UID.
Notez l'option -r qui permet la création d'un compte système. Dans ce cas la commande useradd ne crée pas de répertoire personnel.
userdel
Cette commande est utilisée pour supprimer un utilisateur.
Options de la commande
root@ubuntu:~# userdel --help Utilisation : userdel [options] LOGIN Options : -f, --force forcer la suppression des fichiers, même s'ils n'appartiennent pas à l'utilisateur -h, --help afficher ce message d'aide et quitter -r, --remove supprimer le répertoire personnel et le spool du courrier -R, --root RÉP_CHROOT répertoire dans lequel chrooter -Z, --selinux-user supprimer toute correspondance d'utilisateur SELinux pour le compte d'utilisateur
Notez que lors de la suppression d'un utilisateur, l'UID associé avec ce compte peut être réutilisé. Le nombre maximum de comptes était de 65 536 avec le noyau 2.2.x. Avec les noyaux récent, cette limite passe à plus de 4,2 Milliards.
usermod
Cette commande est utilisée pour modifier un utilisateur existant.
Options de la commande
root@ubuntu:~# usermod --help Utilisation : usermod [options] LOGIN Options : -c, --comment COMMENT définir une nouvelle valeur pour le champ « GECOS » -d, --home REP_PERS définir un nouveau répertoire personnel pour le compte de l'utilisateur -e, --expiredate DATE_EXPIR fixer la date de fin de validité du compte à DATE_EXPIR -f, --inactive INACTIF fixer la durée d'inactivité du mot de passe après sa fin de validité à INACTIF -g, --gid GROUPE forcer l'utilisation de GROUPE comme nouveau groupe primaire -G, --groups GROUPES définir une nouvelle liste de groupes supplémentaires -a, --append ajouter l'utilisateur aux GROUPES supplémentaires mentionnés par l'option -G sans supprimer l 'utilisateur des autres groupes -h, --help afficher ce message d'aide et quitter -l, --login IDENTIFIANT définir un nouveau nom pour le compte -L, --lock bloquer le compte de l'utilisateur -m, --move-home déplacer le contenu du répertoire personnel vers le nouvel emplacement (à n'utiliser qu'avec -d) -o, --non-unique autoriser l'utilisation d'un identifiant d'utilisateur (UID) dupliqué (non unique) -p, --password MOT_DE_PASSE utiliser un mot de passe chiffré pour le nouveau mot de passe -R, --root RÉP_CHROOT répertoire dans lequel chrooter -s, --shell INTERPRÉTEUR nouvel interpréteur de commandes initial pour le compte de l'utilisateur -u, --uid UID définir un nouvel identifiant (UID) pour le compte de l'utilisateur -U, --unlock déverrouiller le compte de l'utilisateur -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remvoe range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remvoe range of subordinate gids -Z, --selinux-user nouvelle correspondance de l'utilisateur SELinux pour le compte d'utilisateur
Notez l'option -L qui permet de verrouiller un compte.
passwd
Cette commande est utilisée pour créer ou modifier le mot de passe d'un utilisateur.
Options de la commande
root@ubuntu:~# passwd --help Utilisation : passwd [options] [LOGIN] Options : -a, --all afficher l'état des mots de passe de tous les comptes -d, --delete supprimer le mot de passe du compte indiqué -e, --expire forcer la fin de validité du compte indiqué -h, --help afficher ce message d'aide et quitter -k, --keep-tokens ne changer le mot de passe que s'il est arrivé en fin de validité -i, --inactive INACTIF fixer la durée d'inactivation du mot de passe après sa fin de validité à INACTIF -l, --lock bloquer le compte indiqué -n, --mindays JOURS_MIN fixer le nombre minimum de jours avant le changement de mot de passe à JOURS_MIN -q, --quiet mode silencieux -r, --repository DÉPÔT changer le mot de passe dans le dépôt DÉPÔT -R, --root RÉP_CHROOT répertoire dans lequel chrooter -S, --status afficher l'état du mot de passe du compte indiqué -u, --unlock déverrouiller le compte indiqué -w, --warndays JOURS_AVERT fixer le nombre de jours d'avertissement de fin de validité à JOURS_AVERT -x, --maxdays JOURS_MAX fixer le nombre maximum de jours avant le changement de mot de passe à JOURS_MAX
Notez l'option -l qui permet de verrouiller un compte en placant le caractère ! devant le mot de passe crypté.
chage
La commande chage modifie le nombre de jours entre les changements de mot de passe et la date du dernier changement. Ces informations sont utilisées par le système pour déterminer si un utilisateur doit changer son mot de passe.
Options de la commande
root@ubuntu:~# chage --help Utilisation : chage [options] LOGIN Options : -d, --lastday DERNIER_JOUR fixer la dernière modification du mot de passe à DERNIER_JOUR -E, --expiredate FIN_VALIDITÉ fixer la date de fin de validité du compte à FIN_VALIDITÉ -h, --help afficher ce message d'aide et quitter -I, --inactive INACTIF fixer la durée d'inactivité du mot de passe après sa fin de validité à INACTIF -l, --list afficher les informations concernant la validité du compte au cours du temps -m, --mindays JOURS_MIN fixer le nombre minimum de jours avant la modification du mot de passe à JOURS_MIN -M, --maxdays JOURS_MAX fixer le nombre maximum de jours avant la modification du mot de passe à JOURS_MAX -R, --root RÉP_CHROOT répertoire dans lequel chrooter -W, --warndays JOURS_AVERT fixer le nombre de jours d'avertissement de fin de validité à JOURS_AVERT
Configuration
La commande useradd est configurée par le fichier /etc/default/useradd. Pour consulter ce fichier, saisissez la commande suivante :
root@ubuntu:~# cat /etc/default/useradd # Default values for useradd(8) # # The SHELL variable specifies the default login shell on your # system. # Similar to DHSELL in adduser. However, we use "sh" here because # useradd is a low level utility and should be as general # as possible SHELL=/bin/sh # # The default group for users # 100=users on Debian systems # Same as USERS_GID in adduser # This argument is used when the -n flag is specified. # The default behavior (when -n and -g are not specified) is to create a # primary user group with the same name as the user being added to the # system. # GROUP=100 # # The default home directory. Same as DHOME for adduser # HOME=/home # # The number of days after a password expires until the account # is permanently disabled # INACTIVE=-1 # # The default expire date # EXPIRE= # # The SKEL variable specifies the directory containing "skeletal" user # files; in other words, files such as a sample .profile that will be # copied to the new user's home directory when it is created. # SKEL=/etc/skel # # Defines whether the mail spool should be created while # creating the account # CREATE_MAIL_SPOOL=yes
Dans ce fichier, nous trouvons les directives suivantes :
- GROUP - identifie le groupe principal par défaut de l'utilisateur quand l'option -N est utilisée avec la commande useradd. Dans le cas contraire le groupe principal est soit le groupe spécifié par l'option -g de la commande, soit un nouveau groupe au même nom que l'utilisateur.
- HOME - indique que le répertoire personnel de l'utilisateur sera créé dans le répertoire home lors de la création du compte si cette option a été activée dans le fichier /etc/login.defs,
- INACTIVE - indique le nombre de jours d'inactivité après l'expiration d'un mot de passe avant que le compte soit verrouillé. La valeur de -1 désactive cette directive,
- EXPIRE - sans valeur, cette directive indique que le mot de passe de l'utilisateur n'expire jamais,
- SHELL - renseigne le shell de l'utilisateur,
- SKEL - indique le répertoire contenant les fichiers qui seront copiés vers le répertoire personnel de l'utilisateur, si ce répertoire est créé lors de la création de l'utilisateur,
- CREATE_MAIL_SPOOL - indique si oui ou non une boite mail interne au système sera créée pour l'utilisateur.
Cette même information peut être visualisée en exécutant la commande useradd :
root@ubuntu:~# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no
Pour consulter la liste des fichiers dans /etc/skel, saisissez la commande suivante :
root@ubuntu:~# ls -la /etc/skel/ total 40 drwxr-xr-x 2 root root 4096 juil. 23 00:14 . drwxr-xr-x 131 root root 12288 sept. 29 14:08 .. -rw-r--r-- 1 root root 220 avril 9 03:03 .bash_logout -rw-r--r-- 1 root root 3637 avril 9 03:03 .bashrc -rw-r--r-- 1 root root 8980 oct. 4 2013 examples.desktop -rw-r--r-- 1 root root 675 avril 9 03:03 .profile
Pour connaître l'UID, le GID et l'appartenance aux groupes d'un utilisateur, il convient d'utiliser la commande id. Saisissez la commande suivante :
root@ubuntu:~# id trainee uid=1000(trainee) gid=1000(trainee) groupes=1000(trainee),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
Pour seulement connaître les groupes d'un utilisateur, il convient d'utiliser la commande groups. Saisissez la commande suivante :
root@ubuntu:~# groups trainee trainee : trainee adm cdrom sudo dip plugdev lpadmin sambashare
Les valeurs minimales de l'UID et du GID utilisés par défaut lors de la création d'un utilisateur sont stipulées dans le fichier /etc/login.defs :
... # # Min/max values for automatic uid selection in useradd # UID_MIN 1000 UID_MAX 60000 # System accounts #SYS_UID_MIN 100 #SYS_UID_MAX 999 # # Min/max values for automatic gid selection in groupadd # GID_MIN 1000 GID_MAX 60000 # System accounts #SYS_GID_MIN 100 #SYS_GID_MAX 999 ...
LAB #1
Créez maintenant trois groupes groupe1, groupe2 et groupe3. La valeur du GID du groupe groupe3 doit être de 807 :
root@ubuntu:~# groupadd groupe1; groupadd groupe2; groupadd -g 807 groupe3
Créez maintenant trois utilisateurs fenestros1, fenestros2 et fenestros3. Les trois utilisateurs ont pour groupe principal groupe1, groupe2 et groupe3 respectivement. fenestros2 est aussi membre des groupes groupe1 et groupe3. fenestros1 à un GECOS de tux1 :
root@ubuntu:~# useradd -g groupe2 fenestros2; useradd -g 807 fenestros3; useradd -g groupe1 fenestros1 root@ubuntu:~# usermod -G groupe1,groupe3 fenestros2 root@ubuntu:~# usermod -c "tux1" fenestros1
En consultant votre fichier /etc/passwd, vous obtiendrez un résultat similaire à celui-ci:
root@ubuntu:~# cat /etc/passwd ... fenestros2:x:1001:1002::/home/fenestros2: fenestros3:x:1002:807::/home/fenestros3: fenestros1:x:1003:1001:tux1:/home/fenestros1:
Notez que utilisateur manque n'a pas de shell de défini. De même le système n'a pas créé les répertoire personnels dans /home :
root@ubuntu:~# ls -l /home total 4 drwxr-xr-x 15 trainee trainee 4096 sept. 29 14:08 trainee
Supprimez donc les trois utilisateurs précédement créés :
root@ubuntu:~# userdel fenestros1 root@ubuntu:~# userdel fenestros2 root@ubuntu:~# userdel fenestros3
Recréez maintenant les trois utilisateurs :
root@ubuntu:~# useradd -m -u 1001 -s /bin/sh -g groupe2 fenestros2; useradd -m -u 1002 -s /bin/sh -g 807 fenestros3; useradd -m -u 1003 -s /bin/sh -g groupe1 fenestros1
En consultant votre fichier /etc/passwd de nouveau, vous obtiendrez un résultat similaire à celui-ci:
root@ubuntu:~# cat /etc/passwd ... fenestros2:x:1001:1002::/home/fenestros2:/bin/sh fenestros3:x:1002:807::/home/fenestros3:/bin/sh fenestros1:x:1003:1001::/home/fenestros1:/bin/sh
Vérifiez ensuite que les répertoires ont été créés dans /home :
root@ubuntu:~# ls -l /home total 16 drwxr-xr-x 2 fenestros1 groupe1 4096 oct. 1 16:43 fenestros1 drwxr-xr-x 2 fenestros2 groupe2 4096 oct. 1 16:43 fenestros2 drwxr-xr-x 2 fenestros3 groupe3 4096 oct. 1 16:43 fenestros3 drwxr-xr-x 15 trainee trainee 4096 sept. 29 14:08 trainee
Maintenant, exécutez les deux commandes suivantes :
root@ubuntu:~# usermod -G groupe1,groupe3 fenestros2 root@ubuntu:~# usermod -c "tux1" fenestros1
En regardant votre fichier /etc/group, vous obtiendrez un résultat similaire à celui-ci:
root@ubuntu:~# cat /etc/group ... groupe1:x:1001:fenestros2 groupe2:x:1002: groupe3:x:807:fenestros2
Créez le mot de passe fenestros pour le groupe3 :
root@ubuntu:~# gpasswd groupe3 Changement du mot de passe pour le groupe groupe3 Nouveau mot de passe : fenestros Nouveau mot de passe (pour vérification) : fenestros
Notez que les mots de passe saisis ne seront pas visibles.
Consultez le fichier /etc/gshadow :
root@debian:~# cat /etc/gshadow ... groupe1:!::fenestros2 groupe2:!:: groupe3:$6$Et8poQVnMg/Dm$RliMdK.P1wZFN0bkoxYuLUcgs9FjJ.fxyxNc81rGnFBe1J.hwbm.dOYdPry2wlIecVF7OkbtwN3eHrvIi27lg/::fenestros2
Notez la présence du mot de passe crypté pour le groupe3.
Nommez maintenant fenestros1 administrateur du groupe3 :
root@ubuntu:~# gpasswd -A fenestros1 groupe3
Consultez le fichier /etc/gshadow de nouveau :
root@ubuntu:~# cat /etc/gshadow ... groupe1:!::fenestros2 groupe2:!:: groupe3:$6$Et8poQVnMg/Dm$RliMdK.P1wZFN0bkoxYuLUcgs9FjJ.fxyxNc81rGnFBe1J.hwbm.dOYdPry2wlIecVF7OkbtwN3eHrvIi27lg/:fenestros1:fenestros2
L'utilisateur fenestros1 peut maintenant administrer le groupe groupe3 en y ajoutant ou en y supprimant des utilisateurs à condition de connaître le mot de passe du groupe.
Essayez maintenant de supprimer le groupe groupe3 :
root@ubuntu:~# groupdel groupe3 groupdel : impossible de supprimer le groupe primaire de l'utilisateur « fenestros3 »
En effet, vous ne pouvez pas supprimer un groupe tant qu'un utilisateur le possède comme son groupe principal.
Supprimez donc l'utilisateur fenestros3 :
root@ubuntu:~# userdel fenestros3
Ensuite essayez de supprimer le groupe groupe3 :
root@ubuntu:~# groupdel groupe3
Notez que cette fois-ci la commande est exécutée sans erreur.
Le fait de supprimer un utilisateur sans l'option -r implique que le répertoire personnel de l'utilisateur demeure sur la machine. Saisissez la commande suivante pour vérifier :
root@ubuntu:~# ls -ld /home/fenestros3 drwxr-xr-x 2 1002 807 4096 oct. 1 16:43 /home/fenestros3
Pour supprimer les fichiers de cet utilisateur, il convient de saisir la commande suivante :
root@ubuntu:~# find /home -user 1002 -exec rm -rf {} \; find: "/home/fenestros3": Aucun fichier ou dossier de ce type root@ubuntu:~# ls -ld /home/fenestros3 ls: impossible d'accéder à /home/fenestros3: Aucun fichier ou dossier de ce type
La commande find est lancée d'une manière itérative. L'erreur est normale car quand la commande find ne trouve plus de fichiers à supprimer, elle s’arrête avec un code retour de 2.
Créez maintenant les mots de passe pour fenestros1 et fenestros2. Indiquez un mot de passe identique au nom du compte :
root@ubuntu:~# passwd fenestros1 Entrez le nouveau mot de passe UNIX : fenestros1 Retapez le nouveau mot de passe UNIX : fenestros1 passwd : le mot de passe a été mis à jour avec succès root@ubuntu:~# passwd fenestros2 Entrez le nouveau mot de passe UNIX : fenestros2 Retapez le nouveau mot de passe UNIX : fenestros2 passwd : le mot de passe a été mis à jour avec succès
Notez que les mots de passe saisis ne seront pas visibles.
su et su -
Vous allez maintenant devenir fenestros2, d'abord sans l'environnement de fenestros2 puis avec l'environnement de fenestros2.
Contrôlez votre répertoire courant de travail :
root@ubuntu:~# pwd /root
Pour devenir fenestros2 sans son environnement, saisissez la commande suivante :
root@ubuntu:~# su fenestros2
Contrôlez votre répertoire courant de travail :
$ pwd /root
Vous noterez que vous êtes toujours dans le répertoire /root. Ceci indique que vous avez gardé l'environnement de root.
L'environnement d'un utilisateur inclut donc, entre autre, le répertoire personnel de l'utilisateur ainsi que la valeur de la variable système PATH.
Saisissez la commande suivante pour redevenir root :
$ exit
Saisissez la commande suivante pour redevenir fenestros2 :
root@ubuntu:~# su - fenestros2
Contrôlez votre répertoire courant de travail :
$ pwd /home/fenestros2
Vous noterez que vous êtes maintenant dans le répertoire /home/fenestros2. Ceci indique que vous avez l'environnement de fenestros2.
Notez que root peut devenir n'importe quel utilisateur sans avoir besoin de connaître son mot de passe.
sudo
La commande sudo permet à un utilisateur autorisé d'exécuter une commande en tant que root ou en tant qu'un autre utilisateur. Lors de l'exécution de la commande, l'UID et le GID éffectifs et réels sont ceux de l'identité de l'utilisateur cible. L'utilisation de la commande sudo est une façon simple de déléguer des tâches administratives à d'autres utilisateurs sans communiquer le mot de passe de root et sans placer un SUID bit sur l'exécutable.
La commande sudo est configurée grâce au fichier /etc/sudoers ainsi que les fichiers se trouvant dans le répertoire /etc/sudoers.d. Saisissez la commande suivante :
root@ubuntu:~# cat /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
Notez la présence de la ligne en commentaire # %sudo ALL=(ALL) ALL. Cette ligne possède le format Qui Où = (En tant que qui) Quoi. La ligne implique donc que les membres du groupe sudo peuvent exécuter à partir de n'importe quel hôte et en tant que n'importe quel utilisateur, toutes les commandes du système. Dans ce fichier donc, un groupe est référencé par un %. Un nom sans ce caractère est forcément un utilisateur. Pour éditer le fichier /etc/sudoers, il est nécessaire d'utiliser la commande visudo.
Vérifiez maintenant si l'utilisateur trainee est membre du groupe sudo :
root@ubuntu:~# groups trainee trainee : trainee adm cdrom sudo dip plugdev lpadmin sambashare
L'utilisateur trainee, étant membre du groupe sudo, peut administrer le système.
<html>
Copyright © 2004-2016 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.
</html>