20653ddee5
Last-change: ignore this commit
388 lines
11 KiB
XML
388 lines
11 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<!DOCTYPE html
|
||
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
||
"tuteurs://DTD/tml.dtd">
|
||
<html>
|
||
<head>
|
||
<title>Droits d'accès</title>
|
||
</head>
|
||
<body>
|
||
|
||
<h1>Les droits d'accès sous Unix</h1>
|
||
|
||
<p>
|
||
Qu'est-ce que ces « droits d'accès » ? C'est un modèle qui décrit,
|
||
pour chaque fichier ou chaque répertoire, qui a le droit de lire,
|
||
exécuter (ou traverser dans le cas d'un répertoire) ou modifier. Sur
|
||
votre Mac ou PC Windows personnel, ces considérations ne sont
|
||
peut-être pas très importantes si vous êtes le seul utilisateur. Mais
|
||
c'est particulièrement important sous Unix, qui est un système conçu
|
||
pour être multi-utilisateurs.
|
||
</p>
|
||
|
||
<h2>Lire les droits</h2>
|
||
|
||
<p>
|
||
Chaque fichier a plusieurs propriétés associées : le
|
||
<em>propriétaire</em>, le <em>groupe propriétaire</em>, la date de
|
||
dernière modification, et les <em>droits d'accès</em>. On peut
|
||
examiner ces propriétés grâce à l'option <code>-l</code> de
|
||
<code>ls</code>. Dans cet exemple, nous voyons les permissions
|
||
standard d'un répertoire et de deux fichiers :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~/DEA $</span> ls -l
|
||
total 205
|
||
drwxr-xr-x 2 toto phy03 512 Jan 16 10:02 fiches/
|
||
-rw-r--r-- 1 toto phy03 72008 Oct 2 2003 article.dvi
|
||
-rw-r--r-- 1 toto phy03 145905 Oct 2 2003 article.pdf
|
||
</pre>
|
||
|
||
<p class="continue">
|
||
Les permissions sont indiquées dans la colonne de gauche, suivant un
|
||
format bien particulier :
|
||
</p>
|
||
|
||
<div class="illustration">
|
||
<img src="acces.png" width="379" height="168"
|
||
alt="[Structure des permissions d'un fichier et d'un répertoire]" />
|
||
</div>
|
||
|
||
<h3>Permissions</h3>
|
||
|
||
<p>
|
||
Comme nous le voyons sur l'image ci-dessus, le bloc de permissions se
|
||
divise en quatre éléments.
|
||
</p>
|
||
|
||
<h4>Type</h4>
|
||
|
||
<p>
|
||
Le premier caractère du bloc de permissions indique le type du
|
||
fichier : <code>-</code> pour un fichier normal, <code>d</code> pour
|
||
un répertoire. On trouve également parfois <code>l</code> pour les
|
||
liens symboliques, et d'autres choses plus exotiques.
|
||
</p>
|
||
|
||
<h4>Droits du propriétaire</h4>
|
||
|
||
<ul>
|
||
|
||
<li><strong>r</strong> ou <code>-</code> : droit de lire (r pour <i
|
||
lang="en">read</i>) le fichier (<code>r</code> pour oui,
|
||
<code>-</code> pour non)</li>
|
||
|
||
<li><strong>w</strong> ou <code>-</code> : droit d'écrire (w pour <i
|
||
lang="en">write</i>) dans le fichier</li>
|
||
|
||
<li><strong>x</strong> ou <code>-</code> : droit d'exécuter (x pour <i
|
||
lang="en">execute</i>) le fichier.</li>
|
||
|
||
</ul>
|
||
|
||
<p>
|
||
Pour un répertoire, les choses sont un peu différentes. Le couple
|
||
<code>rx</code> donne le droit d'examiner le répertoire et son
|
||
contenu. Le bit <code>w</code> donne le droit d'ajouter ou de
|
||
supprimer des fichiers dans le répertoire.
|
||
</p>
|
||
|
||
<p>
|
||
Il existe d'autres types de droits plus exotiques, comme le bit setuid
|
||
(s) ou encore le « sticky bit » (t). Si ça vous intéresse, lisez la <a
|
||
href="&url.tuteurs;unix/aide.html">page de man</a> de
|
||
<code>chmod</code>.
|
||
</p>
|
||
|
||
<h4>Droits du groupe</h4>
|
||
|
||
<p>
|
||
Comme les droits du propriétaire, mais s'applique aux gens qui sont
|
||
dans le groupe propriétaire (voir ci-dessous sur les <a
|
||
href="#group">groupes</a>).
|
||
</p>
|
||
|
||
<h4>Droits des autres</h4>
|
||
|
||
<p>
|
||
Comme les droits du propriétaire, mais s'applique aux gens qui sont ni
|
||
le propriétaire, ni dans le groupe propriétaire.
|
||
</p>
|
||
|
||
<h3>Liens</h3>
|
||
|
||
<p>
|
||
Nombre de liens du fichier; un répertoire en a au moins deux (<code>.</code> et
|
||
<code>..</code>). Un répertoire qui contient 5 sous-répertoires en a 7, etc.
|
||
</p>
|
||
|
||
<h3>Propriétaire</h3>
|
||
|
||
<p>
|
||
Le nom de login de la personne à qui appartient ce fichier. Seul le
|
||
propriétaire peut changer les droits ou le groupe d'un fichier.
|
||
</p>
|
||
|
||
<h3><a name="group">Groupe propriétaire</a></h3>
|
||
|
||
<p>
|
||
Les groupes sont des ensembles d'utilisateurs qui sont fixés par
|
||
l'administrateur du système. Ils sont un moyen pour gérer un peu
|
||
finement les droits d'accès. En l'espèce, à l'ENS, les groupes n'ont
|
||
pas une très grande importance. Votre groupe porte le nom de votre
|
||
spécialité (<code>litt</code> pour les littéraires, <code>bio</code>
|
||
pour les biologistes, etc.) assorti de votre promo. C'est la commande
|
||
<code>id</code> qui vous révèle le(s) groupe(s) auquel vous
|
||
appartenez :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> id
|
||
uid=4242(toto) gid=276(phy03) groups=276(phy03)
|
||
</pre>
|
||
|
||
<p class="continue">
|
||
La commande vous indique d'abord votre identifiant d'utilisateur (UID)
|
||
et votre login, puis votre identifiant de groupe principal (GID) et
|
||
enfin tous les groupes dans lesquels vous vous trouvez.
|
||
</p>
|
||
|
||
<h3>Taille</h3>
|
||
|
||
<p>
|
||
Elle est indiquée en octets.
|
||
</p>
|
||
|
||
<h2>Modifier les droits d'accès</h2>
|
||
|
||
<p>
|
||
Il existe 4 commandes liées aux droits d'accès :
|
||
</p>
|
||
|
||
<ul>
|
||
<li> <code>chmod</code> (<i lang="en">change mode</i>), la plus utile,
|
||
qui modifie les permissions</li>
|
||
<li> <code>chgrp</code> (<i lang="en">change group</i>) qui modifie le
|
||
groupe d'un fichier ou répertoire</li>
|
||
<li> <code>chown</code> (<i lang="en">change owner</i>) qui modifie le
|
||
propriétaire d'un fichier ou répertoire</li>
|
||
<li> <code>umask</code>, qui définit les protections par défaut</li>
|
||
</ul>
|
||
|
||
<p>
|
||
Les commandes <code>chgrp</code> et <code>chown</code> servent surtout
|
||
à l'administrateur du système, donc nous ne les examinerons pas ici
|
||
(lisez leur <a href="&url.tuteurs;unix/aide.html">page de man</a> pour
|
||
en savoir plus). En revanche, <code>chmod</code> est une commande très
|
||
pratique dans une utiisation courante.
|
||
</p>
|
||
|
||
<h3>Notation symbolique</h3>
|
||
|
||
<p>
|
||
Cette notation consiste à associer un ou plusieurs degrés de
|
||
propriété, une action et un ou plusieurs types d'accès. On l'utilise
|
||
généralement pour ajouter ou retirer des permissions par rapport à la
|
||
normale (<code>-rw-r--r--</code> pour un fichier,
|
||
<code>drwxr-xr-x</code> pour un répertoire).
|
||
</p>
|
||
|
||
<table class="tableau">
|
||
<tr>
|
||
<th>Degré de propriété</th><th>Action</th><th>Type d'accès</th>
|
||
</tr><tr>
|
||
<td>
|
||
|
||
<table>
|
||
<tr>
|
||
<td><code>u</code> (utilisateur)</td>
|
||
</tr><tr>
|
||
<td><code>g</code> (groupe)</td>
|
||
</tr><tr>
|
||
<td><code>o</code> (autres)</td>
|
||
</tr><tr>
|
||
<td><code>a</code> (tout le monde)</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
|
||
<td>
|
||
<table>
|
||
<tr>
|
||
<td>+ (ajoute le droit)</td>
|
||
</tr><tr>
|
||
<td><code>-</code> (enlève le droit)</td>
|
||
</tr><tr>
|
||
<td><code>=</code> (définit le droit)</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
|
||
<td>
|
||
<table>
|
||
<tr>
|
||
<td><code>r</code> (lecture)</td>
|
||
</tr><tr>
|
||
<td><code>w</code> (écriture)</td>
|
||
</tr><tr>
|
||
<td><code>x</code> (exécution</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<h3>Quelques exemples</h3>
|
||
|
||
<h4>Protéger un fichier</h4>
|
||
|
||
<p>
|
||
Ici, vous interdisez à tout autre que vous l'accès à votre fichier
|
||
(c'est ce qu'à l'ENS on appelle couramment le « mode parano »).
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> ls -l fichier.txt
|
||
-rw-r--r-- 1 toto phy03 42 Jan 5 12:08 fichier.txt
|
||
<span class="prompt">clipper ~ $</span> chmod og-r fichier.txt
|
||
<span class="prompt">clipper ~ $</span> ls -l fichier.txt
|
||
-rw------- 1 toto phy03 42 Feb 5 12:08 fichier.txt
|
||
</pre>
|
||
|
||
<h4>Protéger un répertoire</h4>
|
||
|
||
<p>
|
||
Même chose pour un répertoire...
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> ls -l | grep repertoire
|
||
drwxr-xr-x 2 toto phy03 512 Feb 5 12:19 repertoire/
|
||
<span class="prompt">clipper ~ $</span> chmod go-rx repertoire
|
||
<span class="prompt">clipper ~ $</span> ls -l | grep repertoire
|
||
drwx------ 2 toto phy03 512 Feb 5 12:19 repertoire/
|
||
</pre>
|
||
|
||
<h4>Rétablir des droits normaux pour un fichier</h4>
|
||
|
||
<p>
|
||
Certains fichiers sont par défaut en mode parano. C'est le cas par
|
||
exemple de votre mail : quand vous sauvegardez un fichier en
|
||
provenance de votre boîte aux lettres, il est protégé. Pour permettre
|
||
aux autres l'accès au fichier :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> chmod og+r fichier.txt
|
||
</pre>
|
||
|
||
<h4>Rétablir des droits normaux pour un répertoire</h4>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> chmod go+rx repertoire
|
||
</pre>
|
||
|
||
<h4>Rendre un script exécutable</h4>
|
||
|
||
<p>
|
||
Par défaut un fichier n'est pas un exécutable. Pour rendre exécutable
|
||
par tout le monde le joli script que vous venez d'écrire, faites
|
||
simplement :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> chmod +x script
|
||
</pre>
|
||
|
||
|
||
<h3>Notation numérique</h3>
|
||
|
||
<p>
|
||
Cette notation est un peu plus complexe. Elle se fonde sur le principe
|
||
suivant : considérons un bloc de permissions,
|
||
<code>rw-r--r--</code>. Quand une lettre est présente, ça veut dire
|
||
que l'accès est autorisé, quand elle est absente (-), il est
|
||
refusé. On peut traduire ceci de façon binaire :
|
||
</p>
|
||
|
||
<table class="tableau">
|
||
<tr>
|
||
<td>r</td><td>w</td><td>-</td><td>r</td><td>-</td><td>-</td><td>r</td><td>-</td><td>-</td>
|
||
</tr><tr>
|
||
<td>1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p class="continue">
|
||
Ce qui donne 110-100-100. 110 vaut 6 en décimal, 100 vaut 4 (voir le
|
||
teableau ci-dessous), donc la représentation numérique de
|
||
<code>rw-r--r--</code> est 644. Cette valeur peut être indiquée
|
||
exactement à <code>chmod</code> :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">clipper ~ $</span> ls -l fichier.txt
|
||
-rw------- 1 toto phy03 42 Feb 5 12:08 fichier.txt
|
||
<span class="prompt">clipper ~ $</span> chmod 644 fichier.txt
|
||
<span class="prompt">clipper ~ $</span> ls -l fichier.txt
|
||
-rw-r--r-- 1 toto phy03 42 Jan 5 12:08 fichier.txt
|
||
</pre>
|
||
|
||
<table class="tableau">
|
||
<tr>
|
||
<th>Accès</th><td>---</td><td>--x</td><td>-w-</td><td>-wx</td><td>r--</td><td>r-x</td><td>rw-</td><td>rwx</td>
|
||
</tr><tr>
|
||
<th>Binaire</th><td>000</td><td>001</td><td>010</td><td>011</td><td>100</td><td>101</td><td>110</td><td>111</td>
|
||
</tr><tr>
|
||
<th>Décimal</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<h3>Quelques permissions habituelles</h3>
|
||
|
||
<table class="tableau">
|
||
<tr>
|
||
<th>Permission</th><th>Valeur
|
||
numérique</th><th>Type de fichier</th><th>Signification</th>
|
||
</tr><tr>
|
||
<td>---------</td><td>000</td><td>N'importe quel type.</td><td>Aucun
|
||
accès à qui que ce soit</td>
|
||
</tr><tr>
|
||
<td>rw-------</td><td>600</td><td>Fichiers</td><td>Fichier parano :
|
||
lecture et écriture réservées au propriétaire.</td>
|
||
</tr><tr>
|
||
<td>rw-r--r--</td><td>644</td><td>Fichiers</td><td>Standard : tout le
|
||
monde peut lire le fichier mais vous êtes le seul à pouvoir le
|
||
modifier.</td>
|
||
</tr><tr>
|
||
<td>rw-rw-rw</td><td>666</td><td>Fichiers</td><td>Fichier public :
|
||
tout le monde peut lire et écrire.</td>
|
||
</tr><tr>
|
||
<td>rwx------</td><td>700</td><td>Répertoires</td><td>Répertoire parano :
|
||
lecture, accès et écriture réservés au propriétaire.</td>
|
||
</tr><tr>
|
||
<td rowspan="2">rwxr-xr-x</td><td rowspan="2">755</td><td>Fichiers</td><td>Fichier
|
||
lisible et exécutable par tous, vous seul pouvez le modifier.</td>
|
||
</tr><tr>
|
||
<td>Répertoires</td><td>Standard : tout le monde peut accéder au
|
||
répertoire et lire son contenu, vous seul pouvez modifier le contenu.</td>
|
||
</tr><tr>
|
||
<td rowspan="2">rwxrwxrwx</td><td
|
||
rowspan="2">777</td><td>Répertoires</td><td>Répertoire public : tout
|
||
le monde peut y accéder, lire le contenu et modifier celui-ci.</td>
|
||
</tr><tr>
|
||
<td>Fichiers</td><td>Exécutable public : tout le
|
||
monde peut le lire, l'exécuter et le modifier.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<div class="metainformation">
|
||
Auteurs : Émilia Robin, Nicolas George, Marie-Lan Nguyen. Dernière modification : <date
|
||
value="$Date: 2007-07-17 10:03:10 $" /> </div>
|
||
|
||
</body>
|
||
</html>
|
||
|
||
|
||
|