tuteurs.ens.fr/www/unix/droits.html

586 lines
19 KiB
HTML
Raw Normal View History

2024-04-02 20:48:26 +02:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Droits d'accès</title>
<link rel="stylesheet" href="../tuteurs.css" type="text/css" />
</head>
<body>
<div class="navigation">
<h1>Tuteurs informatique<br /><a href="../meta/contact.html">Nous contacter</a></h1>
<hr />
<ul class="menu">
<li>
<a href="../meta/charte_graphique.html">Utiliser ce site</a>
</li>
<li>
<a href="../actualite.html">Actu et stages</a>
</li>
<li>
<a href="../docs/">Docs à imprimer</a>
</li>
<li>
<a href="../meta/plan_site.html">Plan du site</a>
</li>
<li>
<a href="../search.html">Rechercher</a>
</li>
</ul>
<hr />
<ul class="arbre">
<li>
<a href="../">Les tuteurs</a>
<ul class="arbre">
<li>
<a href="./">Unix</a>
<ul class="arbre">
<li>
<a href="accents-base.html">Accents</a>
</li>
<li>
<a href="aide.html">Aide</a>
</li>
<li>
<a href="archives.html">Archiver</a>
</li>
<li>
<a href="chercher.html">Chercher</a>
</li>
<li>
<a href="clavier.html">Clavier, souris</a>
</li>
<li>
<a href="communiquer.html">Autres utilisateurs</a>
</li>
<li>
<a href="config/">Config conscrits</a>
</li>
<li>
<a href="copyright.html">Copyrights</a>
</li>
<li>
<a href="disquettes.html">Disquettes</a>
</li>
<li>
<a href="divers.html">Divers</a>
</li>
<li>
<a href="droits.html" class="actuel">Droits d'accès</a>
</li>
<li>
<a href="editeurs/">Éditeurs</a>
</li>
<li>
<a href="exercices/">Exercices</a>
</li>
<li>
<a href="fichiers.html">Fichiers</a>
</li>
<li>
<a href="formats-memo.html">Mémo formats</a>
</li>
<li>
<a href="histoire.html">Histoire</a>
</li>
<li>
<a href="imprimer.html">Imprimer</a>
</li>
<li>
<a href="jamais.html">Jamais !</a>
</li>
<li>
<a href="jeux.html">Jeux</a>
</li>
<li>
<a href="loguer.html">Se loguer</a>
</li>
<li>
<a href="media.html">Supports de données amovibles</a>
</li>
<li>
<a href="place_disque.html">Place disque</a>
</li>
<li>
<a href="prelude.html">Unix</a>
</li>
<li>
<a href="processus.html">Processus</a>
</li>
<li>
<a href="repertoires.html">Répertoires</a>
</li>
<li>
<a href="shell/">Shell</a>
</li>
<li>
<a href="systemes_fichiers.html">Systèmes de fichiers</a>
</li>
<li>
<a href="unix-technique.html">Machines Unix</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr />
<ul class="menu">
<li>
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
</li>
<li>
<a href="http://www.ens.fr/">ENS</a>
</li>
<li>
<a href="http://www.spi.ens.fr/">SPI</a>
</li>
</ul>
</div>
<div class="corps">
<h1>Les droits d'accès sous Unix</h1>
<div class="sommaire">
<ul>
<li>
<a href="#s1">Lire les droits</a>
<ul>
<li>
<a href="#s1_1">Permissions</a>
</li>
<li>
<a href="#s1_2">Liens</a>
</li>
<li>
<a href="#s1_3">Propriétaire</a>
</li>
<li>
<a href="#group">Groupe propriétaire</a>
</li>
<li>
<a href="#s1_5">Taille</a>
</li>
</ul>
</li>
<li>
<a href="#s2">Modifier les droits d'accès</a>
<ul>
<li>
<a href="#s2_1">Notation symbolique</a>
</li>
<li>
<a href="#s2_2">Quelques exemples</a>
</li>
<li>
<a href="#s2_3">Notation numérique</a>
</li>
<li>
<a href="#s2_4">Quelques permissions habituelles</a>
</li>
</ul>
</li>
</ul>
</div>
<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>
<a name="s1" id="s1">Lire les droits</a>
</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">sas ~/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>
<a name="s1_1" id="s1_1">Permissions</a>
</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" xml: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" xml:lang="en">write</i>) dans le fichier</li>
<li><strong>x</strong> ou <code>-</code> : droit d'exécuter (x pour <i lang="en" xml: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="../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>
<a name="s1_2" id="s1_2">Liens</a>
</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>
<a name="s1_3" id="s1_3">Propriétaire</a>
</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" id="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">sas ~ $</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>
<a name="s1_5" id="s1_5">Taille</a>
</h3>
<p>
Elle est indiquée en octets.
</p>
<h2>
<a name="s2" id="s2">Modifier les droits d'accès</a>
</h2>
<p>
Il existe 4 commandes liées aux droits d'accès :
</p>
<ul>
<li><code>chmod</code> (<i lang="en" xml:lang="en">change mode</i>), la plus utile,
qui modifie les permissions</li>
<li><code>chgrp</code> (<i lang="en" xml:lang="en">change group</i>) qui modifie le
groupe d'un fichier ou répertoire</li>
<li><code>chown</code> (<i lang="en" xml: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="../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>
<a name="s2_1" id="s2_1">Notation symbolique</a>
</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>
<a name="s2_2" id="s2_2">Quelques exemples</a>
</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">sas ~ $</span> ls -l fichier.txt
-rw-r--r-- 1 toto phy03 42 Jan 5 12:08 fichier.txt
<span class="prompt">sas ~ $</span> chmod og-r fichier.txt
<span class="prompt">sas ~ $</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">sas ~ $</span> ls -l | grep repertoire
drwxr-xr-x 2 toto phy03 512 Feb 5 12:19 repertoire/
<span class="prompt">sas ~ $</span> chmod go-rx repertoire
<span class="prompt">sas ~ $</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">sas ~ $</span> chmod og+r fichier.txt
</pre>
<h4>Rétablir des droits normaux pour un répertoire</h4>
<pre><span class="prompt">sas ~ $</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">sas ~ $</span> chmod +x script
</pre>
<h3>
<a name="s2_3" id="s2_3">Notation numérique</a>
</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">sas ~ $</span> ls -l fichier.txt
-rw------- 1 toto phy03 42 Feb 5 12:08 fichier.txt
<span class="prompt">sas ~ $</span> chmod 644 fichier.txt
<span class="prompt">sas ~ $</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>
<a name="s2_4" id="s2_4">Quelques permissions habituelles</a>
</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 : 2013-10-20 par Antoine Amarilli.
</div>
</div>
</body>
</html>