[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:slackbook:filesystem_permissions [2012/10/03 01:46 (UTC)] – [Permissions] ellendhelfr:slackbook:filesystem_permissions [2013/10/13 20:32 (UTC)] (Version actuelle) ellendhel
Ligne 2: Ligne 2:
 ====== Permissions des systèmes de fichiers ====== ====== Permissions des systèmes de fichiers ======
  
-===== Apercu des Permissions =====+===== Aperçu des permissions ===== 
 + 
 +Comme nous l'avons vu, Slackware Linux est un système d'exploitation multi-utilisateurs. De ce fait, les systèmes de fichiers sont également multi-utilisateurs. Cela signifie que chaque fichier ou répertoire dispose de ses propres permissions qui permettent d'attribuer ou refuser des privilèges aux différents utilisateurs. Il y a trois permissions basiques et trois jeux de permissions pour chaque fichier. Jetons un coup d’œil sur un fichier d'exemple. 
 + 
 +<code> 
 +darkstar:~$ ls -l /bin/ls 
 +-rwxr-xr-x 1 root root 81820 2007-06-08 21:12 /bin/ls 
 +</code> 
 + 
 +Souvenez-vous, nous avons vu au chapitre 4 que **//ls//** //-l// liste les permissions pour un fichier ou un répertoire ainsi que l'utilisateur et le groupe qui //"possède"// le fichier.  Dans notre cas, les permissions sont rwxr-xr-x, l'utilisateur est root et le groupe est également root. La section pour les permissions, qui est regroupée, est en fait constituée de trois ensembles. Le premier ensemble de trois lettres sont les permissions attribuées pour l'utilisateur qui possède le fichier. Le deuxième ensemble de trois lettres sont celles pour le groupe propriétaire et les trois dernières forment l'ensemble pour les permissions pour tous les autres. 
 + 
 +**Table 10.1. Permissions de /bin/ls** 
 + 
 +^Ensemble ^Liste ^Signification| 
 +|Propriétaire |rwx |Le propriétaire "root" peut lire, écrire et exécuter| 
 +|Groupe |r-x |Le groupe "root" peut lire et exécuter| 
 +|Autres |r-x |Tous les autres peuvent lire et exécuter| 
 + 
 +Les permissions s'expliquent d'elles-même, au moins pour les fichiers. Lire, écrire et exécuter permettent de lire le fichier, y écrire ou de l'exécuter. Mais que représentent ces permissions pour les répertoires ? En simplifiant, le droit en lecture permet de lister le contenu du répertoire (avec **//ls//** par exemple). Le droit en écriture donne la possibilité d'y créer de nouveaux fichiers tout comme de supprimer tout le contenu même si vous ne seriez pas en mesure de supprimer des fichiers à l'intérieur. Le droit en exécution permet de rentrer dans le répertoire proprement dit (avec la commande cd intégrée à **//bash//** par exemple). 
 + 
 +Regardons les permissions pour un répertoire maintenant. 
 + 
 +<code> 
 +darkstar:~$ ls -ld /home/alan 
 +drwxr-x--- 60 alan users 3040 2008-06-06 17:14 /home/alan/ 
 +</code> 
 + 
 +Nous voyons ici les permissions pour mon répertoire personnel et ses propriétaires. Le répertoire est détenu par l'utilisateur alan et le groupe users. L'utilisateur dispose de tous les droits (rwx), le groupe ne dispose que des permissions pour lire et exécuter (r-x) et aucune autre personne n'est autorisée à faire quoi que ce soit.
  
 ===== chmod, chown, et chgrp ===== ===== chmod, chown, et chgrp =====
 +
 +Maintenant que nous savons à quoi correspondent les permissions, comment les modifier ? Et dans le même registre, comment assigne t-on un utilisateur et un groupe propriétaire ? Les réponses sont dans cette section.
 +
 +Le premier utilitaire que nous présenterons est la commande **//chown//**(1). En utilisant **//chown//**, nous pouvons (vous l'aurez deviné), changer le propriétaire d'un fichier ou d'un répertoire. **//chown//**  est historiquement utilisé uniquement pour le changement de propriétaire, mais peut servir également pour le groupe propriétaire.
 +
 +<code>
 +darkstar:~# ls -l /tmp/foo
 +total 0
 +-rw-r--r-- 1 alan users 0 2008-06-06 22:29 a
 +-rw-r--r-- 1 alan users 0 2008-06-06 22:29 b
 +darkstar:~# chown root /tmp/foo/a
 +darkstar:~# ls -l /tmp/foo
 +total 0
 +-rw-r--r-- 1 root users 0 2008-06-06 22:29 a
 +-rw-r--r-- 1 alan users 0 2008-06-06 22:29 b
 +</code>
 +
 +En utilisant le caractère deux points après le compte utilisateur, vous pouvez indiquer un nouveau nom de groupe.
 +
 +<code>
 +darkstar:~# chown root:root /tmp/foo/b
 +darkstar:~#  ls -l /tmp/foo
 +total 0
 +-rw-r--r-- 1 root users 0 2008-06-06 22:29 a
 +-rw-r--r-- 1 root root  0 2008-06-06 22:29 b
 +</code>
 +
 +**//chown//** peut aussi être utilisé récursivement pour changer les attributions de tous les fichiers et répertoires sous le répertoire cible. La commande suivante changera tous les fichiers dans le répertoire ''/tmp/foo'' pour définir les attributions à root:root.
 +
 +<code>
 +darkstar:~# chown -R root:root /tmp/foo/b
 +</code>
 +
 +Un caractère deux points suivi d'un nom de groupe, sans nom d'utilisateur, changera simplement le groupe pour le fichier et laissera les droits de l'utilisateur intacts.
 +
 +<code>
 +darkstar:~# chown :wheel /tmp/foo/a
 +darkstar:~# ls -l /tmp/foo
 +ls -l /tmp/foo
 +total 0
 +-rw-r--r-- 1 root wheel 0 2008-06-06 22:29 a
 +-rw-r--r-- 1 root root  0 2008-06-06 22:29 b
 +</code>
 +
 +La petite sœur de la commande **//chown//** est la moins utile **//chgrp//**(1). Cette commande se comporte exactement comme **//chown//**, excepté qu'elle ne peut modifier que les droits pour un groupe sur un fichier. Dès lors que **//chown//** peut déjà faire cela pourquoi s'embêter avec **//chgrp//** ? La réponse est simple : beaucoup d'autres systèmes d'exploitation utilisent une version différente de **//chown//** qui ne peut pas changer les droits pour les groupes. Donc si d'aventure vous en rencontrez, vous saurez quoi faire.
 +
 +Il y a une raison pour laquelle nous avons parlé des changements de propriétaire avant les changements de permissions. Ces dernières sont moins facile à appréhender. L'utilitaire pour changer les permissions d'un fichier ou d'un répertoire est **//chmod//**(1). Sa syntaxe est très proche de celle de **//chown//**, mais plutôt que d'indiquer un utilisateur ou un groupe, l'administrateur doit indiquer soit un ensemble de permissions octales ou un ensemble de permissions alphabétiques. Ni l'une, ni l'autre n'est facile à comprendre du premier coup. Nous commencerons par les permissions octales qui sont les moins compliquées.
 +
 +Le nom permissions octales provient du fait qu'elles utilisent huit chiffres, de 0 à 7. Pour chaque permission est défini un chiffre qui est une puissance de deux, et ces chiffres sont additionnés pour obtenir la valeur finale des permissions pour un ensemble. Cela peut paraître confus, peut-être que le tableau ci-dessous rend les choses plus claires.
 +
 +**Table 10.2. Permissions octales**
 +^Permission ^Signification|
 +|Lecture |4|
 +|Écriture |2|
 +|Exécution |1|
 +
 +En additionnant ces valeurs ensembles, vous pouvons obtenir n'importe quelle valeur entre 0 et 7 et définir toutes les combinaisons possibles de permissions. Par exemple, pour donner à la fois les privilèges en lecture et en écriture et interdire celui en exécution nous devons utiliser la valeur 6. Le nombre 3 donnerait les droits en lecture et en exécution mais interdirait de lire le fichier. Nous devons indiquer un nombre pour chacun des trois ensembles lorsque l'on utilise les permissions octales. Il n'est pas possible de ne donner des permissions que pour un utilisateur ou un groupe par exemple.
 +
 +<code>
 +darkstar:~# ls -l /tmp/foo/a
 +-rw-r--r-- 1 root root  0 2008-06-06 22:29 a
 +darkstar:~# chmod 750 /tmp/foo/a
 +darkstar:~# ls -l /tmp/foo/a
 +-rwxr-x--- 1 root root  0 2008-06-06 22:29 a
 +</code>
 +
 +**//chmod//** peut aussi utiliser des valeurs alphabétiques en combinaison avec <key>'+'</key> ou <key>Minus</key> pour définir ou révoquer des permissions. Bien que cela soit facile à mémoriser, il est souvent plus facile d'utiliser les permissions octales.
 +
 +**Table 10.3. Codes alphabétiques des permissions**
 +^Permission ^Lettre|
 +|Lecture |r|
 +|Écriture |w|
 +|Exécution |x|
 +
 +**Table 10.4. Codes alphabétiques des utilisateurs et groupes**
 +^Comptes concernés ^Lettre|
 +|Utilisateur / propriétaire |u|
 +|Groupe |g|
 +|Reste du monde |o|
 +
 +Pour utiliser ces lettres avec **//chmod//**, vous devez préciser quel ensemble doit être modifié. Vous devez aussi indiquer si vous ajoutez ou supprimez des permissions avec les symboles //"+"// et //"-"//. Plusieurs ensembles peuvent être changés à la fois en le séparant par des virgules.
 +
 +<code>
 +darkstar:/tmp/foo# ls -l
 +total 0
 +-rw-r--r-- 1 alan users 0 2008-06-06 23:37 a
 +-rw-r--r-- 1 alan users 0 2008-06-06 23:37 b
 +-rw-r--r-- 1 alan users 0 2008-06-06 23:37 c
 +-rw-r--r-- 1 alan users 0 2008-06-06 23:37 d
 +darkstar:/tmp/foo# chmod u+x a
 +darkstar:/tmp/foo# chmod g+w b
 +darkstar:/tmp/foo# chmod u+x,g+x,o-r c
 +darkstar:/tmp/foo# chmod u+rx-w,g+r,o-r d
 +darkstar:/tmp/foo# ls -l
 +-rwxr--r-- 1 alan users 0 2008-06-06 23:37 a*
 +-rw-rw-r-- 1 alan users 0 2008-06-06 23:37 b
 +-rwxr-x--- 1 alan users 0 2008-06-06 23:37 c*
 +-r-xr----- 1 alan users 0 2008-06-06 23:37 d*
 +</code>
 +
 +La méthode que vous devez utiliser est à votre convenance. Dans certains cas l'une est meilleure que l'autre, et un vrai Slacker saura s'adapter.
  
 ===== SUID, SGID, et le "Sticky" Bit ===== ===== SUID, SGID, et le "Sticky" Bit =====
  
 +Nous n'avons pas tout à fait terminé avec les permissions. Il reste trois permissions //"spéciales"// en plus de celles présentées précédemment. Ce sont les permissions SUID, SGID, et le sticky bit. Lorsqu'un fichier à une (ou plus) de ces permissions définies, il se comporte d'une manière particulière. Les permissions SUID et SGID modifient la façon dont une application est lancée, alors que le sticky bit limite les suppressions de fichiers. Ces permissions sont définies avec **//chmod//** comme pour lecture, écriture ou exécution, mais avec une astuce.
 +
 +SUID et SGID signifient respectivement //"Set User ID"// et //"Set Group ID"//. Lorsqu'un programme s'exécute avec un de ces droits, il s'exécute avec les permissions de l'utilisateur ou du groupe défini sans tenir compte de l'utilisateur qui l'a lancé. Regardons un des programmes SUID courant, le petit **//passwd//** et les fichiers qu'il modifie.
 +
 +<code>
 +darkstar:~# ls -l /usr/bin/passwd /etc/passwd /etc/shadow
 +-rw-r--r-- 1 root root    1106 2008-06-03 22:23 /etc/passwd
 +-rw-r----- 1 root shadow   627 2008-06-03 22:22 /etc/shadow
 +-rws--x--x 1 root root   34844 2008-03-24 16:11 /usr/bin/passwd*
 +</code>
 +
 +Remarquez les permissions sur **//passwd//**. Au lieu d'un <key>'x'</key> pour le compte utilisateur nous avons un <key>'s'</key>. Cela nous indique que **//passwd//** est un programme SUID, et que quand nous l'exécutons, le processus sera lancé en tant qu'utilisateur //"root"// et non pas comme l'utilisateur qui aura effectivement lancé la commande. La raison pour cela apparaît de manière visible lorsque l'on regarde les deux fichiers que cette commande modifie. Ni le fichier ''/etc/passwd'' ou le fichier ''/etc/shadow'' ne sont modifiables que par par root. Du fait que les utilisateurs ont besoin de modifier leurs informations personnelles, **//passwd//** doit être exécuté en tant que root pour pouvoir modifier ces fichiers.
 +
 +Et que fait dont le sticky bit ? Le sticky bit empêche la possibilité de déplacer ou supprimer un fichier et n'est défini que sur des répertoires. Les utilisateurs autres que root ne peuvent pas déplacer ou supprimer un fichier dans un répertoire avec le sticky bit actif à moins qu'il ne soit propriétaires de ce fichier. Normalement toute personne avec le droit en écriture peur faire cela, mais le sticky bit bloque cela pour tout le monde sauf le propriétaire (et root, bien sûr). Jetons un œil sur un répertoire //"sticky"// courant. 
 +
 +<code>
 +darkstar:~# ls -ld /tmp
 +drwxrwxrwt 1 root root   34844 2008-03-24 16:11 /tmp
 +</code>
 +
 +Naturellement, étant un répertoire pour les fichiers temporaires du système ''/tmp'' requiert d'être lisible, modifiable et exécutable par n'importe qui. Et comme n'importe que utilisateur peut avoir un ou deux fichiers conservés ici à n'importe quel moment cela semble logique d'éviter que d'autres utilisateurs ne puissent les supprimer, ce qui explique pourquoi le sticky bit est défini. Vous pouvez le voir par la présence d'un <key>'t'</key> à la place d'un <key>'x'</key> dans les permissions pour le reste du monde.
 +
 +**Table 10.5. Permissions SUID, SGID et "Sticky"**
 +^Permission ^Valeur octale ^Valeur alphabétique|
 +|SUID |4 |s|
 +|SGID |2 |s|
 +|Sticky |1 |t|
 +
 +Lorsque vous utiliser les permissions octales, vous devez préciser une valeur octale supplémentaire en premier. Par exemple, pour recréer les permissions de 
 +''/tmp'', nous utiliserons 1777. Pour recréer les permissions sur ''/usr/bin/passwd'', nous devrions utiliser 4711. D'une manière générale, à chaque fois que le premier des quatre octets n'est pas indiqué **//chmod//** assume que sa valeur est de zéro.
 +
 +<code>
 +darkstar:~# chmod 1777 /tmp
 +darkstar:~# chmod 4711 /usr/bin/passwd
 +</code>
 +
 +Utiliser des valeur de permissions alphabétiques est légèrement différent. En partant du principe que les deux fichiers suivants auraient des permissions de 0000 (aucune permission définie), voici comment nous les définirions :
 +
 +<code>
 +darkstar:~# chmod ug+rwx,o+rwt /tmp
 +darkstar:~# chmod u+rws,go+x /usr/bin/passwd
 +</code>
  
 ====== Navigation ====== ====== Navigation ======
  
-**Chapitre Précédent: [[fr:slackbook:users|Utilisateurs et Groupes]]**+**Chapitre précédent : [[fr:slackbook:users|Utilisateurs et groupes]]**
  
-**Chapitre Suivant: [[fr:slackbook:working_with_filesystems|Working with Filesystems]]**+**Chapitre suivant : [[fr:slackbook:working_with_filesystems|Travailler avec les systèmes de fichiers]]**
 ====== Sources ====== ====== Sources ======
 <!-- If you copy information from another source, then specify that source --> <!-- If you copy information from another source, then specify that source -->
-  * Source originale: [[http://www.slackbook.org/beta]] \\+  * Source originale : [[http://www.slackbook.org/beta]] \\
 <!-- Authors are allowed to give credit to themselves! --> <!-- Authors are allowed to give credit to themselves! -->
-  * Publié initialement par Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson\\ +  * Publication initiale d'Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson 
-  * Traduction initale de [[wiki:user:escaflown | escaflown]+  * Traduction initiale de [[wiki:user:escaflown | escaflown]] 
 +  * Traduction de [[wiki:user:ellendhel | Ellendhel]]
 <!-- * Contrbutions by [[wiki:user:yyy | User Y]] --> <!-- * Contrbutions by [[wiki:user:yyy | User Y]] -->
  
 fr:slackbook:filesystem_permissions ()