Niveau : Admin Junior Numéro de la Leçon Dernière Modification
2/4 <progrecss 1/12 style=inline /> 2020/01/30 03:28

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.

<note important> 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 su - et le mot de passe fenestros. </note>

Groupes

Pour lister les groupes existants sur le système, saisissez la commande suivante :

root@debian:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
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:trainee
tape:x:26:
sudo:x:27:
audio:x:29:trainee
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:trainee
sasl:x:45:
plugdev:x:46:trainee
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
messagebus:x:103:
Debian-exim:x:104:
mlocate:x:105:
ssh:x:106:
avahi:x:107:
netdev:x:108:trainee
bluetooth:x:109:trainee
lpadmin:x:110:
ssl-cert:x:111:
fuse:x:112:
utempter:x:113:
Debian-gdm:x:114:
scanner:x:115:saned,trainee
saned:x:116:
trainee:x:1000:
vboxsf:x:1001:

<note important> Notez que la valeur du GID ( Group ID ) de root est de 0 et que les GID des utilisateurs normaux commencent à 1000 ( voir trainee ). </note>

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@debian:~# cat /etc/gshadow
root:*::
daemon:*::
bin:*::
sys:*::
adm:*::
tty:*::
disk:*::
lp:*::
mail:*::
news:*::
uucp:*::
man:*::
proxy:*::
kmem:*::
dialout:*::
fax:*::
voice:*::
cdrom:*::trainee
floppy:*::trainee
tape:*::
sudo:*::
audio:*::trainee
dip:*::trainee
www-data:*::
backup:*::
operator:*::
list:*::
irc:*::
src:*::
gnats:*::
shadow:*::
utmp:*::
video:*::trainee
sasl:*::
plugdev:*::trainee
staff:*::
games:*::
users:*::
nogroup:*::
libuuid:!::
crontab:!::
messagebus:!::
Debian-exim:!::
mlocate:!::
ssh:!::
avahi:!::
netdev:!::trainee
bluetooth:!::trainee
lpadmin:!::
ssl-cert:!::
fuse:!::
utempter:!::
Debian-gdm:!::
scanner:!::saned,trainee
saned:!::
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@debian:~# grpck -r

Dans le cas où vos fichiers ne comportent pas d'erreurs, vous vous retrouverez retourné au prompt.

<note important> L'option -r permet la vérification des erreurs sans le modifier. </note>

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

Pour lister les comptes utilisateur existants sur le système, saisissez la commande suivante :

root@debian:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
messagebus:x:101:103::/var/run/dbus:/bin/false
Debian-exim:x:102:104::/var/spool/exim4:/bin/false
statd:x:103:65534::/var/lib/nfs:/bin/false
avahi:x:104:107:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
usbmux:x:105:46:usbmux daemon,,,:/home/usbmux:/bin/false
Debian-gdm:x:106:114:Gnome Display Manager:/var/lib/gdm3:/bin/false
saned:x:107:116::/home/saned:/bin/false
hplip:x:108:7:HPLIP system user,,,:/var/run/hplip:/bin/false
trainee:x:1000:1000:trainee,,,:/home/trainee:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false

<note important> 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. </note>

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@debian:~# cat /etc/shadow
root:$6$fPk.t6Kf$V8EJWK3gMvt/FK3096D91v1phWzqvfsNyt9RcyhqMNqKgSgi.PsFJJrb6sddCII4CeiXTzOkNHykJt.HRJjGB.:15088:0:99999:7:::
daemon:*:15088:0:99999:7:::
bin:*:15088:0:99999:7:::
sys:*:15088:0:99999:7:::
sync:*:15088:0:99999:7:::
games:*:15088:0:99999:7:::
man:*:15088:0:99999:7:::
lp:*:15088:0:99999:7:::
mail:*:15088:0:99999:7:::
news:*:15088:0:99999:7:::
uucp:*:15088:0:99999:7:::
proxy:*:15088:0:99999:7:::
www-data:*:15088:0:99999:7:::
backup:*:15088:0:99999:7:::
list:*:15088:0:99999:7:::
irc:*:15088:0:99999:7:::
gnats:*:15088:0:99999:7:::
nobody:*:15088:0:99999:7:::
libuuid:!:15088:0:99999:7:::
messagebus:*:15088:0:99999:7:::
Debian-exim:!:15088:0:99999:7:::
statd:*:15088:0:99999:7:::
avahi:*:15088:0:99999:7:::
usbmux:*:15088:0:99999:7:::
Debian-gdm:*:15088:0:99999:7:::
saned:*:15088:0:99999:7:::
hplip:*:15088:0:99999:7:::
trainee:$6$6Ie1tC6k$njVbKQWFCBrfXKB9ewRxuaE18kSE95Mkp8N3C/daikawoVERSO8UUONuGpeGS5rjTcKwcdlL6e2Y2z8YOs1Vx.:15088:0:99999:7:::
vboxadd:!:15091::::::

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@debian:~# 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 usbmux : le répertoire « /home/usbmux » n'existe pas
utilisateur saned : le répertoire « /home/saned » n'existe pas
utilisateur vboxadd : le répertoire « /var/run/vboxadd » n'existe pas
pwck : aucun changement

<note important> 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. </note>

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@debian:~# 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

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@debian:~# 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

newgrp

Cette commande est utilisée pour modifier le groupe de l'utilisateur qui l'invoque.

Options de la commande
root@debian:~# newgrp --help
Syntaxe : newgrp [-] [groupe]

gpasswd

Cette commande est utilisée pour modifier administrer le fichier /etc/group.

Options de la commande
root@debian:~# gpasswd --help
Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    afficher ce message d'aide et quitter
  -r, --remove-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

Utilisateurs

useradd

Cette commande est utilisée pour 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@debian:~# useradd --help
Usage: useradd [options] LOGIN

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
  -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

userdel

Cette commande est utilisée pour utilisée pour supprimer un utilisateur.

Options de la commande
root@debian:~# userdel --help
Syntaxe : userdel [options] IDENTIFIANT

Options :
  -f, --force                   forcer la suppression des fichiers, même
                                s'ils n'appartiennent pas à l'utilisateur
  -h, --help                    afficher cette page d'aide et quitter
  -r, --remove                  supprimer le répertoire personnel et le
                                spool du courrier

usermod

Cette commande est utilisée pour utilisée pour modifier un utilisateur existant.

Options de la commande
root@debian:~# usermod --help
Syntaxe : usermod [options] IDENTIFIANT

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
  -s, --shell INTERPRÉTEUR      définir un 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
  -Z, --selinux-user            nouvelle corespondance de l'utilisateur SELinux pour le compte d'utilisateur

passwd

Cette commande est utilsée pour créer ou modifier le mot de passe d'un utilisateur.

Options de la commande
root@debian:~# passwd --help
Syntaxe : passwd [options] [IDENTIFIANT]

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
  -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

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@debian:~# chage --help
Syntaxe : chage [options] [IDENTIFIANT]

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
  -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@debian:~# 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@debian:~# 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 :

#ls -la /etc/skel [Entrée]

Vous obtiendrez un résultat similaire à celui-ci :

root@debian:~# ls -la /etc/skel/
total 28
drwxr-xr-x   2 root root  4096 24 avril  2011 .
drwxr-xr-x 121 root root 12288 17 déc.  14:21 ..
-rw-r--r--   1 root root   220 10 avril  2010 .bash_logout
-rw-r--r--   1 root root  3184 10 avril  2010 .bashrc
-rw-r--r--   1 root root   675 10 avril  2010 .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@debian:~# id trainee
uid=1000(trainee) gid=1000(trainee) groupes=1000(trainee),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),115(scanner)

Pour seulement connaître les groupes d'un utilisateur, il convient d'utiliser la commande groups. Saisissez la commande suivante :

root@debian:~# groups trainee
trainee : trainee cdrom floppy audio dip video plugdev netdev bluetooth scanner

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
...

T.P. #1

Créez maintenant trois groupes groupe1, groupe2 et groupe3. La valeur du GID du groupe groupe3 doit être de 807 :

root@debian:~# 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@debian:~# useradd -g groupe2 fenestros2; useradd -g 807 fenestros3; useradd -g groupe1 fenestros1
root@debian:~# usermod -G groupe1,groupe3 fenestros2
root@debian:~# usermod -c "tux1" fenestros1

En consultant votre fichier /etc/passwd, vous obtiendrez un résultat similaire à celui-ci:

root@debian:~# cat /etc/passwd
...
fenestros2:x:1001:1003::/home/fenestros2:/bin/sh
fenestros3:x:1002:807::/home/fenestros3:/bin/sh
fenestros1:x:1003:1002:tux1:/home/fenestros1:/bin/sh

En regardant votre fichier /etc/group, vous obtiendrez un résultat similaire à celui-ci:

root@debian:~# cat /etc/group
...
groupe1:x:1002:fenestros2
groupe2:x:1003:
groupe3:x:807:fenestros2

Créez le mot de passe fenestros pour le groupe3 :

root@debian:~# gpasswd groupe3
Changement du mot de passe pour le groupe groupe3
Nouveau mot de passe : fenestros
Nouveau mot de passe (pour vérification) : fenestros.

<note important> Notez que les mots de passe saisis ne seront pas visibles. </note>

Consultez le fichier /etc/gshadow :

root@debian:~# cat /etc/gshadow
...
groupe1:!::fenestros2
groupe2:!::
groupe3:knbeqMpej2IxI::fenestros2

<note important> Notez la présence du mot de passe crypté pour le groupe3. </note>

Nommez maintenant fenestros1 administrateur du groupe3 :

root@debian:~# gpasswd -A fenestros1 groupe3

Consultez le fichier /etc/gshadow de nouveau :

root@debian:~# cat /etc/gshadow
...
groupe1:!::fenestros2
groupe2:!::
groupe3:knbeqMpej2IxI:fenestros1:fenestros2

<note important> 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. </note>

Essayez maintenant de supprimer le groupe groupe3 :

root@debian:~# groupdel groupe3
groupdel : impossible de supprimer le groupe primaire de l'utilisateur « fenestros3 »

<note important> En effet, vous ne pouvez pas supprimer un groupe tant qu'un utilisateur le possède comme son groupe principal. </note>

Supprimez donc l'utilisateur fenestros3 :

root@debian:~# userdel fenestros3

Ensuite essayez de supprimer le groupe groupe3 :

root@debian:~# groupdel groupe3

<note important> Notez que cette fois-ci la commande est exécutée sans erreur. </note>

Le fait de supprimer un utilisateur sans l'option -r implique que le répertoire personnel de l'utilisateur demeurre sur la machine.

Dans notre cas les répertoires personnels des utilisateurs n'ont pas été créés parce que les directives n'ont pas été activées dans le fichier /etc/default/useradd et que nous n'avons pas spécifier la création du répertoire lors de l'utilisation de la commande useradd :

root@debian:~# 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

Otez donc le caractère # devant les lignes suivantes :

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

Pour tester la configuration, créez un utilisateur test :

root@debian:~# useradd -m test

Vérifiez que l'utilisateur test a un répertoire personnel :

root@debian:~# ls -l /home
total 8
drwxr-xr-x  2 test    test    4096 18 déc.  09:52 test
drwxr-xr-x 33 trainee trainee 4096 16 déc.  15:21 trainee

Créez maintenant les répertoires personnels de fenestros1 et fenestros2 :

root@debian:~# mkdir /home/fenestros1 /home/fenestros2

Copiez le contenu du répertoire /etc/skel dans les répertoires /home/fenestros1 et /home/fenestros2 :

root@debian:~# cp -r /etc/skel/.[a-zA-Z]* /home/fenestros1
root@debian:~# cp -r /etc/skel/.[a-zA-Z]* /home/fenestros2

Modifiez le propriétaire et le groupe pour les répertoires /home/fenestros1 et /home/fenestros2 :

root@debian:~# chown -R fenestros1:groupe1 /home/fenestros1
root@debian:~# chown -R fenestros2:groupe2 /home/fenestros2

Créez maintenant les mots de passe pour fenestros1 et fenestros2. Indiquez un mot de passe identique au nom du compte :

root@debian:~# 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@debian:~# 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

<note important> Notez que les mots de passe saisis ne seront pas visibles. </note>

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@debian:~# pwd
/root

Pour devenir fenestros2 sans son environnement, saisissez la commande suivante :

root@debian:~# 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.

<note important> 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. </note>

Saisissez la commande suivante pour redevenir root :

$ exit

Saisissez la commande suivante pour redevenir fenestros2 :

root@debian:~# 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.

<note important> Notez que root peut devenir n'importe quel utilisateur sans avoir besoin de connaître son mot de passe. </note>

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@debian:~# cat /etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults	env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL

# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

<note important> 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. </note>

Vérifiez maintenant si l'utilisateur trainee est membre du groupe sudo :

root@debian:~# groups trainee
trainee : trainee cdrom floppy audio dip video plugdev netdev bluetooth scanner

En effet, l'utilisateur trainee n'étant pas membre du groupe sudo, il ne peut pas exécuter sudo.

Ajoutez donc trainee au groupe sudo :

root@debian:~# usermod -G cdrom,floppy,audio,dip,video,plugdev,netdev,bluetooth,scanner,sudo trainee

Vérifiez ensuite que trainee est membre du groupe sudo :

root@debian:~# groups trainee
trainee : trainee cdrom floppy sudo audio dip video plugdev netdev bluetooth scanner

<note important> A ce stade, trainee, étant membre du groupe sudo, peut administrer le système. </note>

~~DISCUSSION:off~~

Donner votre Avis

{(rater>id=debian_6_l106|name=cette page|type=rate|trace=user|tracedetails=1)}

Menu