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

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