- Gestion des utilisateurs et des groupes - Partie Linux

I Préparation d'un point de montage pour la sauvegarde des fichiers systèmes.

Pour faire une sauvegarde des fichiers systèmes dans un répertoire monté Home/sauve il faut d'abord créer un répertoire où l'on fera une sauvegarde ponctuelle des fichiers (car on aurait pû faire un lien des fichiers que l'ont veut sauvegarder directement vers le répertoire mais si l'on modifie un fichier et que l'on se trompe à un endroit alors l'erreure se répercutera sur le dossier de sauvegarde) et l'on montera ce dossier sur le répertoire sauve.

II Etudes des fichiers de groupes et d'utilisateurs.

a)Le fichier des groupes.

1)Présentation

Le fichier où se trouvent les groupes est situé à l'adresse /etc/group.
Ce fichier contient la liste des utilisateurs appartenant aux différents groupes. En effet, lorsque de nombreux utilisateurs peuvent avoir accès au système, ceux-ci sont fréquemment rassemblés en différents groupes ayant chacun des droits d'accès diiférents aux fichiers et aux répertoires.
A chaque fois qu'un utilisateur est créé son propre groupe portant son nom est alors créé dans ce fichier.

2)Sa structure

Il se compose de différents champs séparés par ":" :

nom_de_groupe : champ_special : numero_de_groupe : membres

Le champ spécial est fréquemment vide.
Le numéro de groupe est le numéro qui fait le lien entre les fichiers /etc/group et /etc/passwd (qui est le fichier spécifique aux utilisateurs.).

3)Exemple

Voici un exemple de fichier /etc/group :

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:
tty:x:5:
disk:x:6:
lp:x:7:
wwwadmin:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:cyrus
news:x:13:news

Dans cette exemple on voit qu'il y a le groupe root qui est le similaire du groupe administrateur de windows.Il permet d'avoir certains droits(mais pas tous) de l'utilisateur root.

4)Ce qu'il faut savoir sur ce fichier

- Lorsqu'on utilise la commande ls avec l'option -l, le numéro de groupe est affiché avec le numéro de l'utilisateur à qui appartient le fichier (ou le répertoire). Ce numéro unique correspond à un nom de groupe unique (souvent 8 caratères max.).
- Un même utilisateur peut apparaître dans plusieurs groupes. Lorsqu'il se connecte au système, il appartient au groupe spécifié dans le fichier /etc/passwd (le champ GID). Il peut en changer à l'aide de la commande newgrp. Des droits d'accès aux fichiers sont alors définis.
- Les protections du fichier doivent empêcher sa modification par les utilisateurs non privilégiés

5)Manipulation des groupes

- Pour ajouter un groupe, l'administrateur peut modifier le fichier /etc/group à l'aide d'un éditeur de texte. Il peut également utiliser la commande addgroup ou groupadd (pas toujours présentes). Dans le premier cas, il aura uniquement la ou les lignes correspondant aux groupes, à ajouter. Par exemple, la ligne :

PROFS : : 56 : Nimbus

- Pour ajouter un utilisateur à un groupe, il suffit d'éditer le fichier /etc/group et de rajouter ce nom au bout de la ligne en séparant le nom des membres par une virgule.
- Pour supprimer un groupe, il suffit d'éditer le fichier /etc/group et d'effacer la ligne correspondante. Mais attention, n'oubliez pas de changer dans le fichier /etc/passwd, les numéros (GID) du groupe supprimé, si des utilisateurs y appartenaient. Vous devez également chercher les fichiers et répertoires de ce groupe pour le changer (sinon, vos fichiers et répertoires riquent d'être inaccessibles).

b)Le fichier des utilisateurs

1)Présentation

Le fichier où se trouvent les utilisateurs est situé à l'adresse /etc/passwd (si l'on ne code pas les mots de passes avec gshadow).
C'est lui qui contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...). Seul le superutilisateur doit pouvoir le modifier.

2)Sa structure

Si on regarde de plus près la composition de ce fichier, on s'apercoit qu'il respecte le format suivant :

nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe : commentaire : répertoire : programme_de_demarrage

Sept champs sont explicités séparés par le caractère ":" :
- le nom du compte de l'utilisateur
- le mot de passe de l'utilisateur (codé bien sûr)
- l'entier qui identifie l'utilisateur pour le système d'exploitation (UID=User ID, identifiant utilisateur)
- l'entier qui identifie le groupe de l'utilisateur (GID=Group ID, identifiant de groupe)
- le commentaire dans lequel on peut retrouver des informations sur l'utilisateur ou simplement son nom réel
- le répertoire de connexion qui est celui dans lequel il se trouve après s'être connecté au système
- la commande est celle exécutée après connexion au système (c'est fréquemment un interpréteur de commandes)

3)Exemple

Voici un exemple de fichier passwd :

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14::/var/lib/uucp/taylor_config:/bin/bash

Dans cet exemple l'on voit des utilisateurs dont l'utilisateur root qui permet la gestion et surtout l'administration du système linux, c'est le "Superutilisateur",il a par défaut tout les droits.

4)Manipulation de ce fichier

- Il faut savoir que les mots de passe situés dans ce fichier sont chiffrés. Ca sert donc à rien de l'éditer et de remplacer le champ mot_de_passe en tapant directement son mot de passe. Vous n'obtiendriez uniquement que le blocage du compte.
- Lorsqu'un utilisateur se connecte, le programme login compare le mot de passe tapé par l'utilisateur (après l'avoir chiffré) à celui qui est dans le fichier passwd. Si ils sont différents, la connexion ne peut se faire.
- Pour interdire l'utilisation, il suffit de remplacer le mot de passe chiffré par une étoile : "*".
- On peut également ouvrir les accès à un compte en laissant le champ mot_de_passe vide. Toute personne voulant se connecter avec ce compte pourra le faire.
- Pour pouvoir modifier le mot de passe d'un compte grâce à la commande passwd, il faut être soit administrateur systême, soit propriétaire du compte.
- UID : identifiant (unique) de chaque compte utilisateur. Les nombres de 0 à 99 sont fréquemment réservés à des comptes propres à la machine. Les valeurs supérieures à 100 sont elles réservées aux comptes utilisateurs.
- GID : identifiant de groupe. Le groupe par défaut (nommé group) porte le numéro 50. Cet identifiant est utilisé en relation avec les droits d'accès aux fichiers. Cette question ne vous préoccupera que si votre système comporte plus d'un seul groupe d'utilisateurs. (Il faudra alors se préoccuper du fichier /etc/group)
- On peut à partir du Shell, modifier l'interpréteur de commandes. Pour ceci, on utilise la commande chsh ou alors passwd -s. Linux cherche alors dans le fichier /etc/shells le programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne s'appliquent pas au compte du superutilisateur.
- Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier /etc/passwd
- Le superutilisateur ne se nomme pas obligatoirement root. Pour le changer, il suffit de remplacer le nom du compte root par celui désiré.
- Un compte privilégié est un compte dont l'identifiant (UID, User ID) vaut zéro.

III Droit et manipulation d'un nouveau groupe.

1)Création du groupe

Pour créer le groupe gpdiiage1 il faut (comme on l'a vu précédemment) éxécuter la commande :

groupadd gpdiiage1

Ce groupe ne possède aucun droit à sa création, car il permettera juste aux utilisateurs de ce groupe de pouvoir accéder ou nom à des ressources du groupe.
Seul le fait de créer un répertoire et de dire qu'il appartient au groupe gpdiiage1 permetterait de lui donner certains droits. Pour celà il faut taper la commande:

chgroup gpdiiage1 /home/toto

Seul le superutilisateur "root" peut éxécuter cette commande par défaut.Celà permet au groupe gpdiiage1 de s'approprier le répertoire toto,puis après on peut lui changer les droits avec la commande chmod.

2)Création de l'administrateur du groupe

Pour permettre à un utilisateur de devenir administrateur du groupe pour pouvoir le gérer. Pour celà il faut créer un utilisateur du groupe avec des droits spéciaux avec la commande:

gpasswd -A AdminDiiage gpdiiage1

Par cette commande l'utilisateur AdminDiiage deviendra administrateur du groupe gpdiiage1.

3)Fichiers Systèmes modifiés

Comme on l'a dit dans la deuxième partie (II) les fichiers concernant les groupes sont /etc/group et /etc/gshadow (lorsque l'on crypte les informations avec shadow) et les utilisateurs on a les fichiers /etc/passwd et /etc/gshadows (lorsque l'on crypte les informations dont le mot de passe avec shadow) .

4)Script qui permet d'extraire les GID des groupes

Pour faire ce script on va utiliser le langage shell de linux et importer ce langage au début du fichier avec la ligne #/bin/bash/ .
Ce qui donne comme fichier:

#/bin/bash/
cat /etc/group | cut -f3 -d:

Ce fichier sera enregistré avec l'extension .sh et sera lancé avec la commande ./nomdu fic.sh.

5)Groupes spécifiques à une tâche

Pour faire des groupes de gestion d'imprimante,d'utilisateurs,de sauvegarde et de montage de périphériques il faut d'abord créer quatre groupes système,pour cela on a l'option -r dans la commande groupeadd,exemple:

groupeadd -r gpGestUsers

Celà permet de créer un compte système qui nous permettera de gérer la gestion des utilisateurs.
Il reste ensuite à modifier le groupe d'appartenance des fichiers qui permettent de ajouter des utilisateurs et d'en supprimer.On a donc:

chgrp gpGestUsers /usr/sbin/useradd
chgrp gpGestUsers /usr/sbin/userdel

Puis ensuite il ne reste plus qu'à modifier les droits d'accès du groupe sur ces fichiers:

chmod 770 /usr/sbin/useradd
chmod 770 /usr/sbin/userdel

Ce qui va donner tout les droits aux membres du groupe gpGestUsers pour ajouter et supprimer des utilisateurs.

Pour les sauvegardes,le montage de périphériques et la gestion des imprimantes il faudra répéter les mêmes actions que précédemment. Par exemple on pourrait créer un groupe de montage de périphériques qui pourra éxécuter la commande mount et la commande umount en changeant le groupe et les droits d'accès de ces fichiers qui sont à l'adresse /bin/mount et /bin/umount .

IV Les valeurs par défaut des comptes.

La commande pour créer des nouveaux utilisateurs est useradd

Pour voir les valeurs par défaut pour un compte créé, il faut soit taper la comande useradd -D, ou si on désire les modifier il faut créer un fichier de base /etc/default/useradd avec les valeurs retournées par /usr/sbin/useradd -D. Voici un exemple.

GROUP=100 identifiant du groupe primaire
HOME=/home racine des répertoires personnels
INACTIVE=-1 (nombre de jours avant destruction du compte)
EXPIRE= nombre de jours avant expiration du mot de passe
SHELL= shell de connexion attribué au compte
SKEL=/etc/skel fichiers recopiés par défaut dans chaque répertoire personnel.

La seule chose qui manque a ce fichier est l'attribution d'un SHELL par défault. On peut soit le paramétrer par commande ou soit par VI. En ligne de commande il faut taper :

/usr/sbin/useradd -D -s/bin/bash

Ce qui configurera la ligne SHELL= en SHELL=/bin/bash.
Avec VI, il suffit de modifier la ligne SHELL= en SHELL=/bin/bash.

V Création des utilisateur stagiaire.

1)Création des comptes pour les stagiaires

Pour créer les comptes utilisateurs des stagiaires " stagiairex ", on utilise la commande

useradd stagiaire1 addgroup gpdiiage1

addgroup permet d'identifier le groupe de l'utilisateur créé.
Pour que le répertoire des stagiaire se situent dans /home/stagiairex, il faut aller modifier le fichier /etc/default/useradd, et changer HOME=/home par HOME=/home/stagiairex.

2) Les fichiers systèmes modifiés.

Les fichiers systèmes modifiés sont les fichiers concernant les groupes sont /etc/group et /etc/gshadow (lorsque l'on crypte les informations avec shadow) et les utilisateurs on a les fichiers /etc/passwd et /etc/gshadows (lorsque l'on crypte les informations dont le mot de passe avec shadow) .

3) Les UID des nouveaux utilisateurs.

Les UID des utilisateurs sont visibles dans le fichier /etc/passwd,ils sont supérieurs à 500, parce que ces comptes ne sont pas des utilisateurs systèmes

VI Le compte invité.

Pour créer le compte invité, il faut taper la commande suivante

useradd invite

Pour désactivé le compte invité, il faut taper la commande suivante :

passwd -l(invite)

Pour réactiver ce compte, il faut taper :

passwd -u(invite)

VII Affectation des droits pour monter un lecteur.

Pour que le stagiaire2 puisse monter son lecteur de disquette, il faut créer un groupe de montage de perifériques, il faut que ce groupe soit un groupe système. Un groupe système se créait avec la commande suivante :

groupadd -r gpPointDeMontage

Il reste ensuite à modifier le groupe d'appartenance des fichiers qui permettent de monter et de démonter des points de montages .On a donc:

chgrp gpPointDeMontage /bin/mount
chgrp gpPointDeMontage /bin/unmount

Puis ensuite il ne reste plus qu'à modifier les droits d'accès du groupe sur ces fichiers:

chmod 770 /bin/mount
chmod 770 /bin/unmount

Ce qui va donner tout les droits aux membres du groupe gpPointDeMontage pour monter et de démonter des points de montages. Ensuite il faut ajouter l'utilisateur stagiaire2 à ce groupe grâce à la commande suivante :

gpasswd stagiaire2 gpPointDeMontage

VIII Donner les droits de root à un utilisateur

Pour qu'un utilisateur ait les mêmes droits que root, il faut ajouter l'utilisateur dans le groupe wheel. Le groupe wheel permet de donner les droits de root à un utilisateur. Pour ce faire, on peut ajouter le nom de l'utilisateur dans le fichier /etc/group qui liste tous les groupes du système ,ainsi que les utilisateurs de ces groupes. Pour ajouter l'utilisateur, il faut écrire son nom dans le groupe wheel.

IX Générez des restrictions sur les mots de passe

Pour imposser une longueur de mot de passe, il faut modifier le fichier /etc/pam.d/system-auth comme indiquer ci dessous :
#
# Change the users password
#
passwd password required pam_cracklib.so minlen=7
passwd password required pam_unix.so use_authtok nullok md5

pam_cracklib : Permet d'accepter ou de rejeter un mot de passe, si celui-ci se trouve dans un dictionnaire. Il permet aussi de vérifier que l'on ne réutilisez pas le même mot de passe. On pouvez le faire suivre de retry=n (le nombre de tentatives) minlen=n (la longueur imposée) difok=n (nombre de caractères qui sont dans le vieux mot de passe et que l'on ne peut pas retrouver dans le nouveau).

Pour donner une date d'expiration d'un mot de passe, il y a plusieurs manières. Soit on peut paramétrer cette option pour les utilisateurs que l'on va créer dans le futur. Pour cela il faut modifier le fichier /etc/default/useradd. Il faut paramétrer la variable EXPIRE, dans laquelle on met le nombre de jour avant que le mot de passe expire.
Autrement on peut le paramétrer avec la commande suivante :

adduser -D -e 2002/02/10
La date d'expiration est au format AAAA/MM/JJ

On peut aussi pramétrer la date d'expiration du mot de passe de manière individuelle pour un utilisateur existant déjà grâce à la commande suivante :

usermod -e 2002/02/10 nom_utilisateur

En conclusion, on peut dire que ces restrictions sont appliquables aussi bien à un groupe ou à un utilisateur précis, qu'a tous les groupes ou tous les utilisateurs.
Il n'y a pas de différence avec Windows, car avec Active directory, on peut appliquées ces restrictions aussi bien à un utilisateurs précis qu'à tous les utilisateurs, grâce aux Unités Organissationnelles.

X Droits d'accès sur les répertoires des autres utilisateurs

Si le stagiaire2 va sur le répertoire de base du stagiaire1, il n'aura aucun droit sur les fichiers créer par le stagiaire1, car les droits de base du répertoire d'un utilisateur sont 700, ce qui signifie que l'utilisateur de ce répertoire à les droits d'écriture de lecture et d'execution, alors que son groupe et le reste des utilisateurs -sauf root- n'ont aucuns droits sur ce répertoire, donc le stagiaire2 ne pourra pas supprimer les fichiers de stagiaire1.

Pour que stagiaire2 qui se trouve dans le même groupe que stagiaire1, puisse accéder au répertoire de stagiaire1 il faut que celui-ci ou root autorise les droits d'accès à son groupe. Le paramétrage des droits d'accès via un masque est expliqué dans la suite du TP.

XI Le masque de protection umask

a)Présentation
Rappelons les règles simples de propriété qui s'appliquent à la création d'un fichier ou d'un répertoire :

-son propriétaire est l'utilisateur qui l'a créé
-son groupe est le groupe primaire de ce même utilisateur

b)Permissions par défaut
Mais quelles sont les permissions attribuées par défaut à l'utilisateur propriétaire, au groupe propriétaire et à tous les autres ?
Les permissions maximales accordées par un fichier et un répertoire sont 666 (-rw-rw-rw-) et 777 (-rwxrwxrwx).
On peut restreindre ces permissions lors de sa création. C'est le rôle de la commande umask de fixer les permissions masquées, autrement dit les droits non accordés aux fichiers et répertoires lors de leur création.
Exemple de calcul de permissions effectives, affectées lors de la création d'un répertoire, par un utilisateur dont le masque de protection est 037:

777 = 111 111 111 permissions maxi = rwx rwx rwx
- 037 = 000 011 111 masque de protection
= 740 = 111 100 000 permissions effectives = rwx r-- ---

c)La commande umask
umask affiche le masque de l'utilisateur actif.
Quelles sont les valeurs des masques par défaut de root et des autres utilisateurs ?
umask -S affiche les permissions correspondantes au masque, sous forme symbolique.
umask masque fixe les permissions ultérieures de création des fichiers de l'utilisateur actif, conformément à masque, en notation octale.
Attention ! le changement ne s'applique qu'à la présente session.

d)Manipulation pour modifier le masque par défaut des utilisateurs.
Pour la rendre permanente, on peut intervenir sur un fichier profile :
Dans le fichier profil général /etc/profile, on peut modifier la règle habituelle :
if [ $UID == 0 ] ; then umask 022 ; else umask 037 ; fi
Pour agir au niveau des utilisateurs, ajouter la ligne umask masque dans le fichier de profil personnel $HOME/.bash_profile .
Ce script permet de mettre comme masque par défaut à l'utilisateur root les droits rwx r-x r-x sur les fichiers qu'il créé alors que pour tous les autres utilisateurs il met par défaut les droits rwx r-- --- sur les fichiers.

Menu