Gestion des utilisateurs et des groupes

(2849 mots dans ce texte )  -   lu : 1052 Fois     Page Spéciale pour impression

Intro

Nous rentrons dans l'action proprement dite. Dans le tutoriel précedent, nous nous sommes contentés d'observer le démarrage du système. Maintenant qu'il est lancé, il faut l'administrer et la première tâche d'un administrateur est la gestion des groupes, des utilisateurs et des permissions des fichiers.

-1-Les groupes et les utilisateurs

-1-1-Les fichiers

/etc/passwd

/etc/passwd contient les informations sur les utilisateurs, il est lisible par tout le monde et ne contient pas les mots de passe, ceux-ci étant encryptés dans le fichier /etc/shadow La syntaxe du fichier est la suivante:

[nom de l'utilisateur]:x:PID:GID:[détermine le répertoire de travail]:[répertoire personnel]:[type de shell]

Le x représente le mot de passe, il indique qu'un mot de passe encrypté existe que le système ira chercher dans /etc/shadow

Le PID est le numéro de l'utilisateur, le GID, celui de son groupe.

Par exemple, le premier utilisateur qui porte le PID 0 , est root :

root:x:0:0::/root:/bin/bash

Note : vous pouvez par l'intermédiare de ce fichier changer le nom de l'utilisateur root. Cela peut être un élément de sécurité supplémentaire. Ou juste plus fun...

Le premier utilisateur lambda créé lors de l'installation porte le pid 1000 et le gid 100 :

tux:x:1000:100::/home/tux:/bin/bash

Les groupe et utilisateurs dont le PID ou le GID est inférieur à 1000 et 100 sont les groupes et utilisateurs spéciaux que le système crée par défaut. Ne les effacez pas, ils ont tous leur utilité. Nous ne pouvons pas les détailler ici car leurs noms et leurs fonctions sont variables suivant l'environnement. Quand vous créerez de nouveaux utilisateurs manuellement, donnez-leur un PID non utilisé bien sûr et supérieur à 1000. Même remarque pour les groupes

/etc/shadow

C'est dans ce fichier que l'on retrouve les mots de passe encryptés. Ce fichier n'est accéssible qu'à root et aux processus lancés par root, bien entendu. Vous pouvez y jeter un oeil, en root utilisez less, cat, more ou most, qui ne font qu'afficher le contenu d'un fichier sans pouvoir accidentellement écrire dans celui-ci.

Vous y trouverez le nom de chaque utilisateur suivi du mot de passe encrypté ou d'une étoile s'il n'y a pas de mot de passe, puis les paramètres qui déterminent la durée de validité du compte (généralement vides)

/etc/group

Comme le fichier passwd contient les utilisateurs, le fichier group contient les informations sur les groupes, la syntaxe du fichier est tout à fait semblable :

[groupe]:[mot de passe]:[GID]:[liste d'utilisateurs]

/etc/gshadow

-1-2-Les commandes

Note : Les commande que je vais vous citer ici peuvent varier d'une distro à l'autre, adduser peut être transformé en useradd.

-1-2-0-S'informer sur les utilisateurs et les groupes

users, who

users renvoie un simple listing des utilisateurs connectés sur la machine.

who liste les utilisateurs conectés sur le système, sans argument, il renvoie une réponse comme celle-ci :

### [~] $ who paranoiak tty2 2007-09-03 20:20 zafx :0 2007-09-03 20:18 zorg :1 2007-09-03 20:44

Mais avec le paramètre -a, nous voyons des choses plus complexes apparaitre :

who -a 2007-09-03 20:17 934 id=si term=0 exit=0 system boot 2007-09-03 20:17 run-level 4 2007-09-03 20:17 last=S 2007-09-03 20:17 2288 id=rc term=0 exit=0 LOGIN tty1 2007-09-03 20:17 2763 id=c1 paranoiak + tty2 2007-09-03 20:20 16:06 2764 LOGIN tty3 2007-09-03 20:17 2765 id=c3 LOGIN tty4 2007-09-03 20:17 2766 id=4 2007-09-03 20:17 2766 id=c4 LOGIN tty5 2007-09-03 20:17 2775 id=5 2007-09-03 20:17 2775 id=c5 LOGIN tty6 2007-09-03 20:17 2778 id=6 2007-09-03 20:17 2778 id=c6 2007-09-03 20:17 2781 id=x1 zafx ? :0 2007-09-03 20:18 ? 2846 zorg ? :1 2007-09-03 20:44 ? 5004

-1-2-1-Comment ajouter un groupe

L'utilitaire groupadd

La commande est simple, c'est un petit programme binaire. Il fera ce que vous pouvez faire aussi facilement à la main.

groupadd [nom du nouveau groupe]
Manuellement

Ajoutez une ligne au fichier /etc/group avec un GID inemployé, à partir de 100. Puis editez le fichier passwd pour ajouter le groupe aux utilisateurs.

-1-2-2-Comment détruire un groupe

groupdel
Manuellement

Il suffit d'effacer la ligne correspondant dans le fichier group. Puis effacez le nom du groupe des lignes corespondant aux utilisateurs qui en faisaient partie dans le fichier passwd.

-1-2-3-Comment ajouter un utilisateur

Methode rapide : adduser ou useradd

Cette méthode est recommandée

Méthode manuelle

-1-2-4-Comment supprimer un utilisateur

userdel

Pour effacer aussi le home :

userdel -r [user]

Manuellement

Modifier les paramètres d'un utilisateur

usermod

-1-2-5-Comment changer un mot de passe

La commande est très simple:

passwd [nom de l'utilisateur]

Sans nom d'utilisateur, s'applique à l'utilisateur courant. On vous demande l'ancien mot de passe puis de rentrer le nouveau deux fois (pour prévenir les erreurs de frappe).

-1-2-6-J'ai perdu mon mot de passe root! help me!

Ouai, vous êtes vraiment négligeant. Je ne suis pas sûr que vous méritiez cette astuce, moi. Il suffit d'effacer le x de la ligne root du fichier /etc/passwd mais vous ne pourrez le faire qu'avec les droits root. L'astuce consiste à lancer un livecd ou un rescuecd, celui de cotre distribution par exemple, et de procèder à cette manipulation douteuse depuis cet autre environnement. Au redemarrage, vous devrez commencer par réattribuer un mot de passe à root car il n'en aura plus!

Pour tous ceux qui lisent cette section et qui n'ont pas perdu leur mot de passe root, que cette manip vous serve de base à une réflexion sur la sécurité d'un système : quand on a l'accès physique à la machine, toute sécurité est illusoire.

-2-Les permissions des fichiers

-2-1-S'informer sur les fichiers

La commande à utiliser est ls. ls vous donne le contenu d'un répertoire, ou les détails d'un fichier. sans argument il s'applique au répertoire courant et ne donne que le nom des fichiers mais pas les fichiers cachés (les fichiers cachés sont précédés d'un point et n'apparaissent que lorsqu'on le demande formellement):

tux@darkstar:~$ ls
Desktop/ film/ musique/
tux@darkstar:~$ ls film
mes-vacances.mkv

Pour avoir tous les détails sur les fichiers, utilisez les argument -la:

tux@darkstar:~$ls -la [nom du fichier]

Si aucun nom de fichier ou de répertoire n'est indiqué, ls liste le répertoire courant.

-a : affiche les fichiers cachés

-l affiche les détails des fichiers.

Dans le cas du listage d'un répertoire, les deux premières lignes du résultat vous indiquent les propriétés du répertoire lui-même et celles du parent. Ici le répertoire courant /home/tux et son parent /home

Voici un exemple :

tux@darkstar [~/photo] $ ls -la total 97768
drwxr-x--- 4 tux tux 144 2007-06-09 10:49 ./
drwx--x--x 42 tux tux 3896 2007-06-23 21:07 ../
-rw-r----- 1 tux tux 100009677 2007-04-12 18:35 tuxette-en-maillot-de-bain.jpg
drwxr-xr-x 2 tux tux 1328 2007-04-17 17:47 diaporama/
drwxr-xr-x 2 tux tux 504 2007-05-27 05:50 screenshots/

Remarquez la notation des deux premières lignes, [./] et [../] La première ligne indique les détails du répertoire ~/photo, la seconde, ceux du parent du répertoire photo : /home/tux/

Prenons maintenant un exemple précis :

drw-r--r-- 1 tux users 88 2007-02-06 20:58 film/

la séquence [drw-r--r-- 1 tux users] nous interesse particulièrement.

Le premier caractère donne le type de fichier global, c'est ici un [d] (directory), cela pourrait être un tiret [-] (pour un autre type de fichier) ou un L minuscule [l] (pour un lien, le fichier cible apparait alors à la fin de la ligne)

Les trois caractères suivant [rw-] représentent les permissions du propriétaire du fichier, les trois [r--] suivants pour le groupe et les trois derniers [r--] pour les autres utilisateurs :

r=read

w=write

x=execute

Le tiret indique que le droit n'existe pas.

Ce fichier par exemple est lisible par tout le monde, ne peut être modifié que par son propriétaire et n'est exécutable par personne.

Nous avons ensuite les noms du propriétaire (tux) et du groupe propriétaire (users) du fichier puis la taille du fichier (88 Ko), sa date et son heure de création (2007-02-06 20:58) et enfin son nom.

-2-2-Modifier le propriétaire et le groupe

On change le propriétaire d'un fichier par la commande chown (change owner = changer de propriétaire) :

chown [nom du nouveau propriétaire] [nom du fichier]

Par exemple :

chown tuxette film

Attention, après ça, vous ne pourrez plus manipuler ce fichier, n'ayant plus les droits en écriture!

Pour changer le groupe, la commande est chgrp (est-il besoin de traduire?)

chgrp [nom du nouveau groupe] [nom du fichier]

Exemple :

chgroup multimédia film

-2-3-Modifier les permissions

Pour changer les permissions d'un fichier, on utilise la commande chmod, comme ceci:

chmod [a, u, g, o] [+/-] [r, w, x, s, t] [fichier]

a = All : tout le monde, u + g + o

u = User : l'utilisateur propriétaire du fichier

g = Group : le groupe propriétaire du fichier

o = Other : les autres utilisateurs

+ = ajoute un droit

- = supprime un droit

r = Read

w = Write

x = eXecute pour un fichier ou accès pour un répertoire

s = Set-uid ouset-gid (droit spécial)

t = sTicky (permission spéciale)

Exemples :

chmod a+r : ajoute l'accès en écriture à tout le monde

chmod a-r : enlève l'accès en écriture à tout le monde

chmod g-w : enlève au groupe l'accès en écriture

chmod o+x : ajoute l'accès en exécution aux utilisateurs non propriétaires.

Vous pouvez aussi modifier finement les permissions à l'aide de chiffres, par exemple:

chmod 755 film : donne au propriétaire tous les droits et au groupe ainsi qu'aux autres utilisateurs le droit en lecture et en exécution. Comment ça marche? Hé bien chaque permission est représenté par un nombre en octal :

r=lecture=4

w=écriture=2

x=exécution=1

Les trois chiffres que vous passez en argument à chmod correspondent à la somme des permissions en octal pour les trois types d'utilisateur : le propriétaire, le groupe et les autres :

7=4+2+1=r+w+x : pour le propriétaire

5=4+0+1=r+x : pour le groupe

5=4+0+1=r+x : pour le reste de l'univers

Ça peut vous parraitre complexe mais en fait, comparez les deux commandes équivalantes de cet exemple :

Pour un fichier ayant les droits par defaut rwx r-x r-x, soit 755, auquel on veut appliquer les droits rw-rw---- soit 660 :

chmod a-x g+w o-r

Et :

chmod 660

Les deux commandes ont un résultat identique. L'une est quand même plus simple que l'autre, non?

-2-4-Les droits spéciaux

On a by-passé, un peu plus haut, quand nous avons étudié les options de chmod, ces droits particuliers qui correspondent aux lettres [s] et [t], ce sont des droits spéciaux applicables aux répertoires et aux fichiers :

Le set-uid vous donne l'uid du propiétaire du fichier lors de son execution. Inutile de vous dire qu'en général, on utilise ce droit pour des commande administrateur. En abuser est fortement déconseillé.

Le set-gid sur un répertoire force l'appartenance des fichiers créés à l'interieur de ce répertoire au groupe auquel il appartient.

Le sticky donne la permission à tout le monde d'écrire dans un répertoire mais pas celle d'effacer les fichiers qui ne lui appartiennent pas. Le sticky-bit sur un fichier autre qu'un répertoire est ignoré, il correspond à une ancienne fonction d'unix qui permettait d'excuter un fichier en swap.

Pour vous donner un exemple de répertoire avec le sticky-bit, le répertoire /tmp, appartient à root mais possède le bit sticky, tout le monde peut y écrire mais pas accéder aux fichiers temporaires des autres utilisateurs, par exemple (ce n'est pas ainsi que vous aurez accès au cache thunderbird de Tuxette).

Les droits set-uid, set-gid et sticky prennent la place de l'attribut [x] dans les droits d'un fichier :

rwS rwS rwT

On peut les ajouter avec chmod en faisant comme ceci:

chmod u+s [file] : ajoute le droit set-uid

chmod g+s [file] : ajoute le droit set-gid

chmod +t [file] : ajoute le droit sticky

Bien sûr, on peut établir ces droits en octal. Il faut alors ajouter un quatrième nombre avant les trois qui correspondent aux droits normaux, par exemple :

chmod 1755 [file]

Ici, on ajote le droit sticky.

Le code en octal s'exprime comme suit :

1 : sticky

2 : sgid

4 : suid

Tux a décidé de créer un répertoire partagé, sur une partition montée dans /mnt/commons/ À l'intérieur de cette partition, root crée plusieurs répertoires film/ photo/ :

root@darkstar [/mnt/commons] # mkdir film photo
root@darkstar [/mnt/commons] # groupadd commons
root@darkstar [/mnt/commons] # chown tux film photo
root@darkstar [/mnt/commons] # chgrp commons film photo

-2-5-umask

Quand vous créez un fichier, quel que soit le programme avec lequel vous le créez, il sera écrit avec des droits, par défault, cela devrait être 0755. Pourquoi cela?

À chaque création de fichier, le système applique un masque aux permissions, faute de quoi les fichiers seraient créés avec les permissions 0777

-3-Du bon usage des groupes, des utilisateurs et des permissions

-3-1-De la sécurité des comptes

On peut comparer un mot de passe à une clef qui ouvre une serrure. De même qu'une serrure peut toujours être forcée, un mot de passe peut toujours être cracké, ce n'est qu'une question de temps. Le meilleur moyen de garantir sa sécurité est de limiter l'accès à la porte. Comme le montre la petite manip que je viens de vous expliquer pour vous dépanner en cas de perte du mot de passe root, quiquonque a un accès physique à la machine peut grosso-modo faire ce qu'il veut.

Pour une utilisation personnelle à la maison, le problème de l'accès physique ne se pose pas vraiment. Cet aspect concerne plutôt les entreprises et les serveurs. Quoique... Méfiez-vous des mômes, elevés à la sauce linux, il deviennent vite dangereux.

On dit qu'un bon mot de passe est long et mélange les lettres et les chiffres, les majuscules et les minuscules. En effet, plus il est complexe, plus le mot de passe est dur à cracker.

La meilleure des protection restant quand même l'impossibilité pour quiquonque d'accéder au compte root. Ainsi, même avec le mot de passe adéquat, le risque disparait. Vous pouvez choisir le niveau de paranoïa de votre système en modifiant quelques fichiers clef.

/etc/login.devfs

Limiter le nombre d'essais de connection :

LOGIN_RETRIES 5

Limiter le nombre d'essai pour changer le mot de passe (il faut rentrer l'ancien mot de passe pour le changer) :

PASS_CHANGE_TRIES 5

Obliger l'utilisateur à rentrer su root au lieu de su :

SU_NAME su #### commentez cette ligne

N'autoriser le login en root que dans certaines consoles :

CONSOLE /etc/securetty #renvoie au fichier concerné (par defaut)

#CONSOLE console:tty1:tty2:tty3:tty4 #pour définir manuellement

Autoriser la connection sans mot de passe pour les utilisateurs dans certains terminaux :

#NO_PASSWORD_CONSOLE tty1:tty2:tty3 #pour activer cette fonction, décommentez cette ligne

Ce dernier paramètre est fortement déconseillé, est-il besoin de le dire mais la possibilité existe, il faut le souligner.

Modifier la durée de validité des mots de passe :

PASS_MAX_DAYS [nombre]

(-1 désactive la fonction)

Et le nombre de jours durant lesquel un message d'avertissement dira à l'utilisateur que son mot de passe arrive à expiration :

PASS_WARN_AGE [1]

Ces deux derniers paramètres peuvent être définis individuellement pour chaque compte utilisateur, à la création du compte avec adduser.

Pour interdire à l'usager qui ne fait pas partie du groupe wheel de se logguer en root :

SU_WHEEL_only no #passez no à yes

Sous debian, dans le fichier /etc/pam.d/su, décommentez la ligne:

#auth sufficient pam_rootk.so

Ceci interdira la commande su root, vous obligeant à passer en root dans un terminal tty et uniquement à l'invite de login.

Changer le nom du compte root

Il est possible de changer le nom du compte root, en éditant le fichier /etc/passwd et en en modifiant la ligne du compte root. C'est le PID qui détermine le superutilisateur, vous pouvez donc changer le nom du compte pour celui que vous voulez, superman, psychoid, megatux, etc. Comme la commande su ne prend que le nom d'utilisateur en argument, cela peut constituer une sécurité supplémentaire ou juste se reveler plus rigolo.




Retour à la sous-rubrique :
  • L'administration

  •  Autres publications de la sous-rubrique :

    Information


    Mailing-list

    Pingouins on the storm

    Les autres assos normandes sur le web :

    Temps : 1284074881.5241 seconde(s)