[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ A ] [ next ]

La FAQ de la liste debian-user-french@lists.debian.org
Chapter 8 - Questions sur les permissions


(avec l'active participation de Christophe Martin <C.Martin@ipnl.in2p3.fr>)


8.1 Les bases

Un grand classique parmi les questions sur la liste est « comment faire pour que tout le monde puisse se connecter à Internet, et pas seulement root ? ». Une variante est « que tout le monde puisse utiliser la carte son ». Toutes ces questions ont le même genre de réponse sous Debian : on met les utilisateurs habilités à faire telle ou telle chose dans tel ou tel groupe. Mais avant d'aller plus loin, voyons un peu mieux ce que sont les permissions, et leur utilité.


8.1.1 Présentation du problème

Les permissions ne sont pas là seulement pour vous empêcher de faire ce que vous voulez (seul root peut utiliser le modem, c'est pas juste...) mais aussi pour :

Sous Unix, la plupart des périphériques sont vus sous forme de fichiers spéciaux placés dans le répertoire /dev (la souris, le disque dur, les partitions de chaque disque, le modem, etc). Qui a accès en lecture et écriture à l'un de ces fichiers contrôle le périphérique qui lui est associé sans aucune autre forme de sécurité.

Accorder un privilège est un acte qui doit être réfléchi. Il faut partir du principe que lorsque quelqu'un possède un privilège quelconque, un jour ou l'autre, ce droit sera utilisé d'au moins l'une des trois manières suivantes :

Certains périphériques sont évidemment plus sensibles que d'autres :


8.1.2 La solution Debian

La philosophie Debian consiste à créer un grand nombre de groupes, un par catégorie de matériel. Dans /dev, chaque périphérique appartient à un de ces groupes, suivant sa catégorie.

À partir de là, il est facile de contrôler qui a le droit de faire quoi. Pour qu'un utilisateur ait le droit de se servir pleinement d'un lecteur de disquettes, c'est-à-dire non seulement de monter une disquette, mais aussi de la formater, il suffit de l'ajouter dans le groupe floppy (en fait monter une disquette ne nécessite absolument pas d'avoir des droits sur le lecteur de disquette. Aussi bizarre que ça puisse paraître à première vue, il faut des privilèges logiciels et non matériels).

Les groupes ont une autre utilité. Ils permettent également de contrôler certains aspects purement logiciels du système. Qui a le droit de lire tel ou tel fichier, ou qui a le droit de faire telle ou telle action.


8.2 Utiliser les groupes pour changer les permissions


8.2.1 Les différents groupes

Voici une liste de groupes, sans doute non exhaustive, accompagnés des privilèges qu'ils donnent (auxquels j'ai pensé):


8.2.2 Ajouter un utilisateur dans un groupe

sous root, lancer la commande

     	# adduser <nom de l'utilisateur> <nom du groupe>

Cette commande ne prend effet qu'après que l'utilisateur se soit déloggé puis reloggé.


8.2.3 Vérifier à quoi un groupe donne accès

D'accord, il faut être prudent ; mais comment vérifier précisément à quoi un groupe donne accès ? La commande find vient à la rescousse dans ces moments difficiles.

sous root, exécuter une commande du genre

     	# find / /usr /var -xdev -group <nom du groupe> -ls

Par exemple chez moi, j'ai le résultat suivant :

     # find / -group dip -ls
       4167    1 drwxr-s---   2 root  dip    1024 Jan 17  1999 /etc/ppp/peers
       4168    1 -rw-r-----   1 root  dip     489 Jun 19  1998 /etc/ppp/peers/provider
         77    1 drwxr-s---   2 root  dip    1024 Jan 17  1999 /etc/chatscripts
         78    1 -rw-r-----   1 root  dip     200 Jun 19  1998 /etc/chatscripts/provider
       2108  104 -rwsr-xr--   1 root  dip  105532 Jun 19  1998 /usr/sbin/pppd

Ce qui signifie que seul root et les membres du groupe dip peuvent :


8.2.4 Exemple : accès à un CDROM

J'ai un lecteur de CD IDE qui s'appelle /dev/hdc. Après avoir installé Debian GNU/Linux, le périphérique /dev/hdc appartient au groupe disk (car il est impossible pour le programme d'installation de savoir si un périphérique IDE donné est un disque ou un lecteur de CD).

L'erreur serait d'ajouter les utilisateurs dans le groupe disk.

La bonne solution consiste à changer le périphérique /dev/hdc de groupe avec la commande :

     	# chgrp cdrom /dev/hdc

S'il y a un lien symbolique cdrom vers /dev/hdc dans /dev, il est inutile de s'en préoccuper. Les permissions des liens sont ignorées, seules comptent les permissions de ce qu'ils désignent.

Ensuite, il suffit d'ajouter les utilisateurs au groupe cdrom.


8.2.5 Autre exemple : accès à un lecteur zip

J'ai un lecteur zip. Le fichier correspondant est /dev/sda, qui fait partie du groupe disk

La mauvaise méthode consiste à mettre les utilisateurs dans le groupe disk.

La bonne méthode consiste à créer un groupe qui ne servira qu'à ça. Par exemple un groupe nommé zip :

      
     	# addgroup zip

Ensuite, changer le groupe du lecteur sda et de ses partitions :

     	# chgrp zip /dev/sda*

Enfin, ajouter les utilisateurs dans le groupe zip

Nota Bene : On peut empêcher un utilisateur de partitionner une cartouche, tout en lui laissant la possibilité de formater des partitions existantes.

La plupart des cartouches sont vendues déjà partitionnées avec une seule grande partition (en général la quatrième) qui couvre l'intégralité de la cartouche.

En ne donnant l'accès qu'à cette quatrième partition (/dev/sda4) et non à la cartouche toute entière (/dev/sda), on laisse la possibilité à un utilisateur de formater une cartouche du commerce, mais pas de la repartitionner.


8.3 Changement dynamique de permission

Une question beaucoup moins banale sur le sujet est :

"Le système de groupe est très bien pour une machine personnelle, mais pas vraiment adaptée à une machine partagée et en réseau. En effet, on peut toujours utiliser les devices à distance si on peut se logger sur la machine. Sous solaris ou Red Hat, les droits des devices comme les lecteurs de disquettes et les cartes audio sont automatiquement positionnés en lecture/écriture pour la personne physiquement loggée sur la console et l'accès au device est bloqué pour le reste du monde. Comment faire de même sous Debian ?"

Malheureusement, il n'y a pas de bonne solution pour faire cela sous Debian (pour l'instant). Deux pistes :

  1. La méthode "historique" est d'utiliser le fichier /etc/login.defs, fait pour ça. Mais cette méthode est mauvaise car il est très facile de contourner le mécanisme pour conserver le droit même après s'être déloggé. La conclusion est dans les docs de PAM (la bibliothèque de sécurité, vérification de mots de passe et assimilés) : Il faut abandonner cette méthode.
  1. La meilleur solution, qui consiste à transférer la propriété du périphérique à l'utilisateur qui est connecté sur le poste local, est celle choisie par Red Hat ou Solaris, mais elle n'est pas implémentée dans Debian. Certains membres de la liste (Sébastien Chaumat schaumat@ens-lyon.fr, pour ne pas le nommer :) ont dit continuer l'investigation pour adapter cette solution à Debian. Une piste : il faut utiliser PAM. Le meilleur moyen d'en savoir plus est peut-être de lui demander directement...

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ A ] [ next ]

La FAQ de la liste debian-user-french@lists.debian.org

15 avril 2002
La liste des utilisateurs francophones de Debian (Matière première) debian-user-french@lists.debian.org
Martin Quinson (« Rédacteur en chef ») mquinson@ens-lyon.fr
Thierry Laronde (Partie pour éteindre l'ordinateur) thierry.laronde@polynum.com
Christophe Martin (Partie sur les permissions statiques) C.Martin@ipnl.in2p3.fr
Frédéric Petit (Partie sur la compilation d'un paquet) Frederic.Petit@univ-mlv.fr