Utilisateurs, groupes et groupes propres à l'utilisateur

La gestion des utilisateurs et des groupes est généralement fastidieuse ; toutefois, Red Hat Linux comprend quelques outils et conventions qui facilitent la gestion des utilisateurs et des groupes.

Si vous pouvez utiliser useradd pour créer un nouvel utilisateur à l'invite du shell, la manière la plus simple de gérer des utilisateurs et des groupes consiste à utiliser Linuxconf (reportez-vous au Chapitre 3).

Ensuite, nous présenterons la structure de base sous-jacente à la gestion des utilisateurs et des groupes.

Utilisateurs standard

Dans Tableau 2-1, vous trouverez les utilisateurs standard configurés par le processus d'installation (il s'agit essentiellement du fichier /etc/passwd). L'id du groupe (GID) figurant dans ce tableau correspond au groupe principal de l'utilisateur. Reportez-vous à la section intitulée Groupes propres à l'utilisateur pour plus de détails sur l'utilisation des groupes.

Tableau 2-1. Utilisateurs standard

Utilisateur UID GID Répertoire personnel Shell
root 0 0 /root /bin/bash
bin 1 1 /bin
démon 2 2 /sbin
adm 3 4 /var/adm
lp 4 7 /var/spool/lpd
sync 5 0 /sbin /bin/sync
arrêt 6 0 /sbin /sbin/shutdown
halt 7 0 /sbin /sbin/halt
courrier 8 12 /var/spool/mail
news 9 13 /var/spool/news
uucp (Unix-to-Unix file CoPy, copie de fichiers Unix-Unix) 10 14 /var/spool/uucp
opérateur 11 0 /root
jeux 12 100 /usr/games
gopher 13 30 /usr/lib/gopher-data
ftp 14 50 /home/ftp
personne 99 99 /

Groupes standard

Dans la Tableau 2-2, vous trouverez les groupes standard tels que définis par le processus d'installation (il s'agit essentiellement du fichier /etc/group).

Tableau 2-2. Groupes standard

Groupe GID Membres
root 0 root
bin 1 root, bin, démon
démon 2 root, bin, démon
sys 3 root, bin, adm
adm 4 root, adm, démon
tty 5
disque 6 root
lp 7 démon, lp
mem 8
kmem 9
wheel 10 root
courrier 12 courrier
news 13 news
uucp (Unix-to-Unix file CoPy, copie de fichiers Unix-Unix) 14 uucp (Unix-to-Unix file CoPy, copie de fichiers Unix-Unix)
man 15
jeux 20
gopher 30
dip 40
ftp 50
personne 99
utilisateurs 100
disquette 19

Groupes propres à l'utilisateur

Red Hat Linux utilise un système de groupe propre à l'utilisateur (UPG) qui facilite considérablement l'utilisation de groupes UNIX. Le système UPG n'ajoute ni ne modifie rien à la manière standard dont UNIX manipule les groupes. Il propose simplement une nouvelle convention pour la manipulation des groupes. Chaque fois que vous créez un nouvel utilisateur, par défaut, il correspond à un groupe unique. Le système fonctionne comme suit :

Groupe propre à l'utilisateur

Chaque utilisateur a son propre groupe principal qui est le seul auquel il appartient.

umask = 002

Le umask UNIX traditionnel est 022, ce qui empêche d'autres utilisateurs et d'autres membres du groupe principal d'un utilisateur de modifier les fichiers d'un utilisateur. Du fait que chaque utilisateur a son propre groupe privé dans le système UPG, cette "protection de groupe" n'est pas nécessaire. Un umask égal à 002 empêche les utilisateurs de modifier les fichiers privés d'autres utilisateurs. Le umask est défini dans /etc/profile.

Bit setgid sur des répertoires

Si vous définissez le bit setgid sur un répertoire (avec chmod g+s répertoire), le groupe des fichiers créés dans ce répertoire sera celui du répertoire.

La plupart des sites informatiques aiment créer un groupe pour chaque grand projet et affecter les personnes aux groupes dont elles doivent faire partie. La gestion de fichiers a cependant toujours été difficile du fait que, lorsque quelqu'un crée un fichier, celui-ci est la propriété du groupe principal auquel la personne appartient. Lorsqu'une même personne travaille sur plusieurs projets, il devient difficile d'associer les bons fichiers au bon groupe de propriété. Dans le système UPG, les groupes sont automatiquement affectés à des fichiers, projet par projet, ce qui facilite considérablement la gestion des projets de groupe.

Supposons que vous ayez un grand projet baptisé devel, dans le cadre duquel de nombreuses personnes éditent des fichiers devel figurant dans un répertoire devel. Créez un groupe appelé devel, attribuez la propriété (chgrp) du répertoire devel au groupe devel, puis ajoutez tous les utilisateurs devel au groupe devel . Désormais, tous les utilisateurs sont en mesure d'éditer les fichiers devel et de créer de nouveaux fichiers dans le répertoire devel ; ces fichiers conserveront toujours leur groupe devel. Ils pourront donc toujours être édités par d'autres utilisateurs devel.

Si vous avez plusieurs projets tels que devel, et des utilisateurs travaillant sur plusieurs projets, ces derniers ne devront jamais changer d'umask ou de groupe pour passer d'un projet à l'autre. Le bit setgid sur le répertoire principal de chaque projet "sélectionne" le groupe approprié.

Du fait que le répertoire personnel de chaque utilisateur appartient à l'utilisateur et à son groupe privé, la définition du bit setgid sur le répertoire personnel apporte une sécurité. Toutefois, par défaut, les fichiers sont créés avec le groupe principal de l'utilisateur, de sorte que le bit setgid serait redondant.

Exposé raisonné concernant le groupe propre à l'utilisateur

Bien que l'UPG ne soit pas une nouveauté dans Red Hat Linux 6.2, bon nombre de personnes se posent des questions à son sujet, notamment quant à son utilité. Voici un exposé raisonné relatif à ce système.

  • Vous souhaitez qu'un groupe de personnes travaillent sur une série de fichiers se trouvant dans le répertoire /usr/lib/emacs/site-lisp . Vous faites confiance à quelques personnes capables, selon vous, de faire quelques manipulations, mais pas à toutes.

  • Vous entrez alors :
    chown -R root.emacs /usr/lib/emacs/site-lisp
                    
    et ajoutez les utilisateurs appropriés au groupe.

  • Pour permettre aux utilisateurs de créer réellement des fichiers dans le répertoire, vous entrez :
    chmod 775 /usr/lib/emacs/site-lisp
                    

  • Mais, lorsqu'un utilisateur crée un nouveau fichier, ce dernier est attribué au groupe par défaut de l'utilisateur (généralement users). Pour empêcher cela, entrez :
    chmod 2775 /usr/lib/emacs/site-lisp
                    
    qui entraîne la création de tout ce qui figure dans le répertoire avec le groupe "emacs".

  • Mais le nouveau fichier doit être du mode 664 pour qu'un autre utilisateur du groupe emacs puis l'éditer. A cette fin, vous créez l'umask 002 par défaut.

  • Cela fonctionne assez bien, sauf que, si le groupe par défaut est "users", tous les membres de "users" (généralement tout le monde) peuvent écrire dans chaque fichier du répertoire personnel.

  • Pour éviter cela, vous pouvez attribuer à chaque utilisateur un groupe privé par défaut.

A ce stade, en créant l'umask 002 par défaut et en attribuant à chacun un groupe privé par défaut, vous pouvez aisément constituer des groupes dont les utilisateurs puissent bénéficier dans devoir faire appel à des solutions magiques. Créez simplement le groupe, ajoutez les utilisateurs et appliquez les commandes chown et chmod ci-dessus aux répertoires du groupe.