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édentes Révision précédente
Prochaine révision
Révision précédente
permissions [Le 06/08/2011, 22:36]
draco31.fr syntaxe lien interne
permissions [Le 29/02/2024, 12:03] (Version actuelle)
Amiralgaby ancienne révision (Le 04/08/2023, 15:33) restaurée
Ligne 3: Ligne 3:
 ---- ----
  
-====== ​Permissions (ou droits d'​accès) ====== +====== ​Gérer les droits d'​accès ​(propriétés et permissionsdes fichiers et répertoires ​====== 
-Voir aussi [[droits]].+//Voir aussi [[droits]].//
  
-Ubuntu vous permet, pour chaque fichier ou dossier((sous GNU/Linux, un dossier est simplement un fichier qui en contient d'​autres)), d'​autoriser ou restreindre l'​accès ​à ce fichier en **lecture**,​ **écriture** et **exécution**,​ et ce, pour **son propriétaire**,​ **son groupe** et **les autres** (le reste du monde).+Les systèmes d'​exploitation inspirés d'​Unix ​(dont Linux fait partiepossèdent la capacité de définir de façon poussée la gestion de droits ​d'​accès ​aux divers fichiers de votre OS.
  
-<note tip>On parle « d'un droit » en particulier mais « des permissions » en général. On retrouvera donc au cours de cette page les 2 termes.</​note>​+Les **droits ​d'accès** paramétrés sur les fichiers et répertoires ne sont pas immuables : ils peuvent être changés, afin d'​accommoder ​des nouveaux besoins apparaissant ​au fil du temps d'​utilisation ​de votre système Ubuntu. Le présent article explique ​les différentes manipulations pouvant être appliquées sur des fichiers et répertoires afin d'en changer les propriétaires et les permissions.
  
-===== Les 3 types de permissions ​===== +===== Les droits d'​accès : qu'​est-ce que c'est ? =====
-Un ensemble de droits (ou permissions) est associé à tout fichier ou dossier, y compris les fichiers spéciaux, et détermine qui peut lire (Read), écrire (Write) ou exécuter (Execute) un fichier. Seul le propriétaire du fichier ou le super-utilisateur (administrateur) peuvent modifier ces droits.+
  
-  * lecture : **r**ead +Les droits d'​accès définissent la possession ​d'un fichier ou d'un répertoire ​à un utilisateur et à un groupe d'​utilisateursIls gèrent aussi quelles actions les utilisateurs ont le droit d'effectuer sur les fichiers (lecture, ​écriture ​et exécution),​ selon qu'ils sont propriétaire du fichier, membre du groupe propriétaire du fichier ou ni l'un ni l'​autre. La possession et la gestion des permissions associées s'​effectue individuellement avec chaque fichier
-Le droit de lecture autorise à lire le contenu ​d'un fichierou pour un dossier, ​à lister son contenu. +  * Référez-vous au document explicatif « [[:droits|Droits ​d'accès sous Linux : gérer les accès aux fichiers]] ».
-  * écriture : **w**rite +
-Le droit d'​écriture ​autorise à écrire dans le fichier ou le dossier+
-  * exécution ​e**x**ecute +
-Le droit d'exécution permet de lancer un fichier en tant que programme exécutable,​ ou dans le cas d'un dossier, permet d'​entrer dans le répertoire.+
  
-===== Qui est affecté ? ===== +<note important>​Le présent document expose les diverses manipulations pouvant être effectuées sur des fichiers et répertoires afin d'​en ​modifier les divers droits d'​accès. Il tient compte de votre connaissance des catégories de propriétaires d'un fichier (utilisateur ​propriétairegroupe ​propriétaire et "les autres"​) et des trois types de permissions (lecture, écriture et exécution) ; toutes ces informations sont regroupées dans le document d'​explications « [[:droits|Droits d'​accès sous Linux gérer les accès aux fichiers]] ». La description de ces attributs ne sera pas abordée ci-après ; aussi, prenez le temps de lire le document d'​explications avant de poursuivre la lecture du présent article.</​note>​
- +
-  * l'utilisateur qui en est propriétaire ​: **u**ser +
-  * le groupe ​auquel il appartient : **g**roup +
-  * le reste du monde **o**ther +
-  * tout le monde **a**ll+
  
 ===== Voir les permissions ===== ===== Voir les permissions =====
Ligne 31: Ligne 21:
 ==== Graphiquement ==== ==== Graphiquement ====
  
-Sous [[Nautilus]] (Ubuntu), faites un clic droit sur un fichier ou dossier ​puis choisissez **propriétés**. Rendez-vous dans l'​onglet **permissions**. +Sous [[Nautilus]] (Ubuntu), faites un clic droit sur un fichier ou répertoire ​puis choisissez **propriétés**. Rendez-vous dans l'​onglet **permissions**.
-<note warning>​Attention,​ cette fonctionnalité subit le [[http://​bugzilla.gnome.org/​show_bug.cgi?​id=371025|Bug #​371025]] ​ et ce depuis 2006 (si si), elle touche sur la modification récursive de fichiers d'un dossier (dont vous éditez les permissions) . Si vous vous y connaissez !+
  
-L'​utilisation de dolphin (KDE) permet de resoudre le problème sous ubuntu</​note>​ +^ Pour un fichier ^ Pour un répertoire ​
-^ Pour un fichier ^ Pour un dossier ​+| {{permissions_nautilus_fichier.png?​380}} | {{permissions_nautilus_dossier.png?​400}} |
-| {{permissions_nautilus_fichier.png?​380}} | {{permissions_nautilus_dossier.png?​350}} |+
  
 Pour le **Propriétaire** et le **Groupe**, vous pouvez choisir dans le menu déroulant correspondant de donner les droits en **lecture et écriture** ou **lecture seule**.\\ Pour le **Propriétaire** et le **Groupe**, vous pouvez choisir dans le menu déroulant correspondant de donner les droits en **lecture et écriture** ou **lecture seule**.\\
Ligne 43: Ligne 31:
 Vous pouvez choisir le groupe auquel appartient le fichier (par défaut, le groupe du propriétaire,​ sauf cas particulier). Vous pouvez choisir le groupe auquel appartient le fichier (par défaut, le groupe du propriétaire,​ sauf cas particulier).
  
-Lorsqu'​il s'agit d'​un ​dossier, pour le **Propriétaire** et **Groupe** vous pouvez choisir entre **Création et suppression des fichiers**, **Accès aux fichiers**, et **Lister seulement les fichiers**.\\ +Lorsqu'​il s'agit d'​un ​répertoire, pour le **Propriétaire** et **Groupe** vous pouvez choisir entre **Création et suppression des fichiers**, **Accès aux fichiers**, et **Lister seulement les fichiers**.\\ 
-Pour les **Autres**, vous pouvez choisir entre **Création et suppression des fichiers**, **Accès aux fichiers**, **Lister seulement les fichiers** et **Aucun**+Pour les **Autres**, vous pouvez choisir entre **Création et suppression des fichiers**, **Accès aux fichiers**, **Lister seulement les fichiers** et **Aucun**.
  
 <note tip>La section suivante (en ligne de commande) détaille un peu plus les différentes possibilités de permissions.</​note>​ <note tip>La section suivante (en ligne de commande) détaille un peu plus les différentes possibilités de permissions.</​note>​
Ligne 50: Ligne 38:
 ==== En ligne de commande ==== ==== En ligne de commande ====
  
-Les droits des fichiers d'​un ​dossier ​peuvent être affichés par la commande+Les droits des fichiers d'​un ​répertoire ​peuvent être affichés par la commande
  
   ls -l   ls -l
Ligne 60: Ligne 48:
 </​file>​ </​file>​
  
-Le premier symbole ​est soit « »« », soit « »nous indiquant ​la nature du fichier : +Le premier symbole ​peut être ''​-''​''​d''​, soit ''​l''​entres autres ([[wpfr>​Permissions_UNIX#​Norme_POSIX|toutes les options sur la page permissions Unix sur wikipédia]])). Il indique ​la nature du fichier : 
-  * **-** : fichier +  * **-** : fichier ​classique 
-  * **d** : dossier +  * **d** : //​directory//​ : répertoire 
-  * **l** : lien+  * **l** : //​link// ​: lien symbolique 
 +  * **c** : //​character//​ : périphérique de type caractère 
 +  * **b** : //block// : périphérique de type bloc 
 +  * **p** : //​[[wpfr>​Tube_nommé|pipe]]//​ : tube, tuyau ou file (d'​attente),​ (voir aussi [[wpfr>​File_(structure_de_données)|FIFO]]) 
 +  * **s** : //socket//
  
-Suivent ensuite 3 groupes de 3 symboles chacun, indiquant si le fichier (ou dossier) est autorisé en lecture, écriture ou exécution. Les 3 groupes correspondent,​ dans cet ordre, aux droits du propriétaire,​ du groupe puis du reste des utilisateurs. Dans le paragraphe introductif,​ vous aurez remarqué des lettres en gras dans les termes anglais. Ce sont ces lettres qui sont utilisées pour symboliser lesdites permissions. Si la permission n'est pas accordée, la lettre en question est remplacé par « - ». +Suivent ensuite 3 groupes de 3 symboles chacun, indiquant si le fichier (ou répertoire) est autorisé en lecture, écriture ou exécution. Les 3 groupes correspondent,​ dans cet ordre, aux droits du propriétaire,​ du groupe puis du reste des utilisateurs. Dans le paragraphe introductif,​ vous aurez remarqué des lettres en gras dans les termes anglais. Ce sont ces lettres qui sont utilisées pour symboliser lesdites permissions. Si la permission n'est pas accordée, la lettre en question est remplacé par « - ». 
-Si l'on reprend les lettres données pour lecture/​écriture/​exécution (**r**ead/​**w**rite/​e**x**ecute),​ nous obtenons : **rwx**\\ +Si l'on reprend les lettres données pour lecture/​écriture/​exécution (**r**ead/​**w**rite/​e**x**ecute),​ nous obtenons : **rwx**
-et pour propriétaire/groupe/autres (**u**ser/**g**roup/**o**ther), nous obtenons : **ugo**+ 
 +<note tip> 
 +Une autre commande très pratique permet de visualiser d'un coup les droits (et les propriétaires) de tous les répertoires parents (voir [[:​chemins]]) d'une ressource spécifique : 
 +<​code>​namei -mo /chemin/</code> 
 +</note>
  
 === Explication par l'​exemple === === Explication par l'​exemple ===
Ligne 77: Ligne 73:
 </​file>​ </​file>​
  
-Il se traduit de la manière suivante : +Il se traduit de la manière suivante :
  
-  * **d** : c'est un dossier.+  * **d** : c'est un répertoire.
   * **rwx** pour le 1er groupe de 3 symboles : son propriétaire peut lire, écrire et exécuter.   * **rwx** pour le 1er groupe de 3 symboles : son propriétaire peut lire, écrire et exécuter.
-  * **r-x** pour le 2nd groupe de 3 symboles : le groupe peut uniquement lire et exécuter le fichier, sans pouvoir le modifier.+  * **r-x** pour le 2e groupe de 3 symboles : le groupe peut uniquement lire et exécuter le fichier, sans pouvoir le modifier.
   * **r-x** pour le 3ème groupe de 3 symboles : le reste du monde peut uniquement lire et exécuter le fichier, sans pouvoir le modifier.   * **r-x** pour le 3ème groupe de 3 symboles : le reste du monde peut uniquement lire et exécuter le fichier, sans pouvoir le modifier.
  
- +En pratique, en exécutant la commande suivante ​:
-En pratique, en exécutant la commande suivante,+
 <​code> ​ ls -l</​code>​ <​code> ​ ls -l</​code>​
  
Ligne 107: Ligne 102:
   * Le 1er caractère est **-** => c'est un fichier.   * Le 1er caractère est **-** => c'est un fichier.
   * Le premier groupe de 3 caractères est **rw-** => le propriétaire a le droit de lecture et écriture (mais pas d'​exécution) sur le fichier.   * Le premier groupe de 3 caractères est **rw-** => le propriétaire a le droit de lecture et écriture (mais pas d'​exécution) sur le fichier.
-  * Les 2 groupes suivants sont **r%%--%%** => Les utilisateurs du groupe et les autres n'ont que le droit de lecture (pas d'​écriture,​ ni d'​exécution)+  * Les 2 groupes suivants sont **r%%--%%** => Les utilisateurs du groupe et les autres n'ont que le droit de lecture (pas d'​écriture,​ ni d'​exécution) ​.
  
 ===== Modifier les permissions ===== ===== Modifier les permissions =====
 +
 +<note tip>Les informations ci-dessous sont très importantes pour la compréhension et la maîtrise des permissions. Cependant, si vous voulez calculer rapidement la valeur d'une permission des outils le font pour nous. Ex : [[https://​www.onlineconversion.com/​html_chmod_calculator.htm| CHMOD calculator]]</​note>​
  
 ==== Graphiquement ==== ==== Graphiquement ====
  
-Dans Nautilus, il vous suffit de changer les valeurs des menus déroulants dans l'​onglet permissions (cf. ci-dessus).+Dans Nautilus, il vous suffit de changer les valeurs des menus déroulants dans l'​onglet permissions (cf. ci-dessus) ​ou pas.
  
 ==== En ligne de commande ==== ==== En ligne de commande ====
Ligne 119: Ligne 116:
 Un fichier a un **propriétaire** et un **groupe**. Nous pouvons les changer. Un fichier a un **propriétaire** et un **groupe**. Nous pouvons les changer.
  
-=== chown ===+=== chown, pour changer le propriétaire ​===
 La commande ''​chown''​ (//​**ch**ange **own**er//,​ changer le propriétaire) permet de changer le propriétaire du fichier. Seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser ''​chown''​. La commande s'​utilise de la façon suivante : La commande ''​chown''​ (//​**ch**ange **own**er//,​ changer le propriétaire) permet de changer le propriétaire du fichier. Seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser ''​chown''​. La commande s'​utilise de la façon suivante :
 <​code>​sudo chown toto fichier1</​code>​ <​code>​sudo chown toto fichier1</​code>​
 Le fichier ''​fichier1''​ appartient maintenant à l'​utilisateur ''​toto''​. Le fichier ''​fichier1''​ appartient maintenant à l'​utilisateur ''​toto''​.
  
-**chown** permet aussi de changer en une seule commande le propriétaire et le groupe du fichier : +=== chgrp, pour changer le groupe ​===
-<​code>​ sudo chown toto:​lesPotes fichier1</​code>​ +
-Le fichier ''​fichier1''​ appartient alors à l'​utilisateur ''​toto''​ et au groupe ''​lesPotes''​. +
- +
-=== chgrp ===+
   ​   ​
 La commande **chgrp** (pour **ch**ange **gr**ou**p**) permet de changer le groupe auquel appartient le fichier. Tous les membres de ce groupe seront concernés par les permissions du groupe de la 2ème série de **rwx**. Encore une fois, seuls le super-utilisateur ou __le propriétaire actuel__ d'un fichier peut utiliser ''​chgrp''​ (un membre du groupe ne peut pas changer le groupe propriétaire). La commande s'​utilise de la façon suivante : La commande **chgrp** (pour **ch**ange **gr**ou**p**) permet de changer le groupe auquel appartient le fichier. Tous les membres de ce groupe seront concernés par les permissions du groupe de la 2ème série de **rwx**. Encore une fois, seuls le super-utilisateur ou __le propriétaire actuel__ d'un fichier peut utiliser ''​chgrp''​ (un membre du groupe ne peut pas changer le groupe propriétaire). La commande s'​utilise de la façon suivante :
Ligne 135: Ligne 128:
 //Quand l'​utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par ''​[[:​sudo]]'',​ puisqu'​elle devra être effectuée avec les droits d'​administration.//​ //Quand l'​utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par ''​[[:​sudo]]'',​ puisqu'​elle devra être effectuée avec les droits d'​administration.//​
  
-=== chown, pour changer simultanément le propriétaire et le groupe ​propriétaire ​===+=== chown, pour changer simultanément le propriétaire et le groupe ===
 Pour changer à la fois le propriétaire //et// le groupe propriétaire,​ une syntaxe particulière de la commande ''​chown''​ peut être utilisée. Encore une fois, seuls le super-utilisateur ou __le propriétaire actuel__ d'un fichier peut utiliser ''​chown''​ (un membre du groupe ne peut pas effectuer de changement de propriété). La commande s'​utilise de la façon suivante : Pour changer à la fois le propriétaire //et// le groupe propriétaire,​ une syntaxe particulière de la commande ''​chown''​ peut être utilisée. Encore une fois, seuls le super-utilisateur ou __le propriétaire actuel__ d'un fichier peut utiliser ''​chown''​ (un membre du groupe ne peut pas effectuer de changement de propriété). La commande s'​utilise de la façon suivante :
 <​code>​chown nouveau_propriétaire:​nouveau_groupe_propriétaire nom_du.fichier</​code>​ <​code>​chown nouveau_propriétaire:​nouveau_groupe_propriétaire nom_du.fichier</​code>​
Ligne 142: Ligne 135:
 Imaginons le même fichier ''​foo.txt''​ possédé par //​utilisateur1//​ et appartenant au groupe propriétaire //​groupe1//​. Le propriétaire doit devenir //​utilisateur2//​ et la propriété de groupe de ce fichier doit passer au groupe //​groupe2//​. En étant connecté au compte //​utilisateur1//,​ l'​exécution de cette commande effectuera l'​opération demandée : Imaginons le même fichier ''​foo.txt''​ possédé par //​utilisateur1//​ et appartenant au groupe propriétaire //​groupe1//​. Le propriétaire doit devenir //​utilisateur2//​ et la propriété de groupe de ce fichier doit passer au groupe //​groupe2//​. En étant connecté au compte //​utilisateur1//,​ l'​exécution de cette commande effectuera l'​opération demandée :
 <​code>​chown utilisateur2:​groupe2 foo.txt</​code>​ <​code>​chown utilisateur2:​groupe2 foo.txt</​code>​
-=== chmod === 
  
 +=== chmod, pour changer les droits ===
  
-L'​outil ''​chmod''​ (//​**ch**ange **mod**e//, changer les permissions) permet de modifier les permissions sur un fichier. Il peut s'​employer de deux façons : soit en précisant les permissions de manière octale, à l'aide de chiffres((Quand on vous propose d'​effectuer un ''​chmod 777''​ sur un fichier, cette représentation des permissions est la manière octale. Chaque chiffre correspond à l'​ensemble des permissions attribuées à chacune des catégories d'​utilisateurs. Cette manière chiffrée est sans doute moins intuitive pour les néophytes. Pour plus d'​informations sur la manière octale d'​affecter des permissions,​ rapportez-vous à l'​excellent [[http://​lea-linux.org/​cached/​index/​Admin-admin_env-permissions.html#​Les_droits_:​_chmod_et_umask|Léa-Linux]].)) ; soit en ajoutant ou en retirant des permissions à une ou plusieurs catégories d'​utilisateurs à l'aide des symboles ''​r w et x'',​ que nous avons présenté ​plus haut. Nous préférerons présenter cette seconde façon ("​ajout ou retrait de permissions à l'aide des symboles"​),​ car elle est probablement plus intuitive pour les néophytes. Sachez seulement que les deux méthodes sont équivalentes,​ c'​est-à-dire qu'​elles affectent toutes deux les permissions de la même manière.+L'​outil ''​chmod''​ (//​**ch**ange **mod**e//, changer les permissions) permet de modifier les permissions sur un fichier. Il peut s'​employer de deux façons : soit en précisant les permissions de manière octale, à l'aide de chiffres((Quand on vous propose d'​effectuer un ''​chmod 777''​ sur un fichier, cette représentation des permissions est la manière octale. Chaque chiffre correspond à l'​ensemble des permissions attribuées à chacune des catégories d'​utilisateurs. Cette manière chiffrée est sans doute moins intuitive pour les néophytes.)) ; soit en ajoutant ou en retirant des permissions à une ou plusieurs catégories d'​utilisateurs à l'aide des symboles ''​r w et x'',​ que nous avons présentés ​plus haut. Nous préférerons présenter cette seconde façon ("​ajout ou retrait de permissions à l'aide des symboles"​),​ car elle est probablement plus intuitive pour les néophytes. Sachez seulement que les deux méthodes sont équivalentes,​ c'​est-à-dire qu'​elles affectent toutes deux les permissions de la même manière.
  
 == En gérant chaque droit séparément == == En gérant chaque droit séparément ==
Ligne 158: Ligne 151:
     * **+** : ajouter     * **+** : ajouter
     * **-** : supprimer     * **-** : supprimer
-    * **=** : ne rien changer+    * **=** : affectation
   - Le droit que l'on veut modifier   - Le droit que l'on veut modifier
     * **r** : **r**ead => lecture     * **r** : **r**ead => lecture
     * **w** : **w**rite => écriture     * **w** : **w**rite => écriture
     * **x** : e**x**ecute => exécution     * **x** : e**x**ecute => exécution
 +    * **X** : e**X**ecute => exécution, concerne uniquement les répertoires (qu'​ils aient déjà une autorisation d'​exécution ou pas) et les fichiers qui ont déjà une autorisation d'​exécution pour l'une des catégories d'​utilisateurs. Nous allons voir plus bas dans la partie des traitements récursifs l'​intérêt du X.
  
 Par exemple : Par exemple :
Ligne 182: Ligne 176:
  
 En [[wpfr>​Systeme_octal|octal]],​ chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur : En [[wpfr>​Systeme_octal|octal]],​ chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur :
-  * r = 4 +  * r (read) ​= 4 
-  * w = 2 +  * w (write) ​= 2 
-  * x = 1+  * x (execute) ​= 1
   * - = 0   * - = 0
 Par exemple, Par exemple,
Ligne 190: Ligne 184:
   * Pour **rw-**, on aura : 4+2+0 = 6   * Pour **rw-**, on aura : 4+2+0 = 6
   * Pour **r%%--%%**,​ on aura : 4+0+0 = 4   * Pour **r%%--%%**,​ on aura : 4+0+0 = 4
- +Ce qui permet de faire toutes les combinaisons : 
-Reprenons le dossier ​''​Documents''​. Ses permissions sont :+<​box>​ 
 +  * 0 : **''​- - -''​** (aucun droit) 
 +  * 1 : **''​- - x''​** (exécution) 
 +  * 2 : **''​- w -''​** (écriture) 
 +  * 3 : **''​- w x''​** (écriture et exécution) 
 +  * 4 : **''​r - -''​** (lecture seule) 
 +  * 5 : **''​r - x''​** (lecture et exécution) 
 +  * 6 : **''​r w -''​** (lecture et écriture) 
 +  * 7 : **''​r w x''​** (lecture, écriture et exécution) 
 +</​box>​ 
 +Reprenons le répertoire ​''​Documents''​. Ses permissions sont :
 <​file>​drwxr-x---</​file>​ <​file>​drwxr-x---</​file>​
 En octal, on aura **750** : En octal, on aura **750** :
Ligne 197: Ligne 201:
    ​7(4+2+1) ​  ​5(4+0+1) ​  ​0(0+0+0)    ​7(4+2+1) ​  ​5(4+0+1) ​  ​0(0+0+0)
  
-Pour mettre ces permissions sur le dossier ​on taperait donc la commande :+Pour mettre ces permissions sur le répertoire ​on taperait donc la commande :
 <​code>​chmod 750 Documents</​code>​ <​code>​chmod 750 Documents</​code>​
  
 === Récursivement === === Récursivement ===
  
-Pour chacune de ces commandes, on peut les lancer récursivement sur un répertoire. C'est à dire que l'​action sera effectuée sur le répertoire désigné et sur tous les fichiers ou répertoires qu'il contient. Ceci ce fait en ajoutant l'​option **-R**+Pour chacune de ces commandes, on peut les lancer récursivement sur un répertoire. C'est à dire que l'​action sera effectuée sur le répertoire désigné et sur tous les fichiers ou répertoires qu'il contient. Ceci se fait en ajoutant l'​option **-R** ​.
  
 <note warning>​Attention! Un ''​chmod -R''​ mal employé peut rendre votre système définitivement inutilisable. <note warning>​Attention! Un ''​chmod -R''​ mal employé peut rendre votre système définitivement inutilisable.
Ligne 208: Ligne 212:
  
 Par exemple : Par exemple :
-<​code> ​ chmod -R 750 monDossier/ ​</​code>​+<​code> ​ chmod -R 750 monRépertoire ​</​code>​
 donnera tous les droits au propriétaire,​ les droits de lecture et exécution au groupe et aucuns droits aux autres... donnera tous les droits au propriétaire,​ les droits de lecture et exécution au groupe et aucuns droits aux autres...
  
 +== Exemple d'​application traitant différemment les répertoires et les fichiers ==
 +
 +En effet, si les répertoires doivent obligatoirement avoir la permission x pour pouvoir être ouverts, la permission x est inutile pour les fichiers non exécutables et peut être gênante pour les fichiers textes (txt, html...) car dans ce cas lorsqu'​on les ouvre on aura à chaque fois un message demandant si on veut les ouvrir ou les lancer (comme exécutable). Bref  le droit x est à réserver aux seuls fichiers qui sont vraiment des exécutables.
 +
 +**Application 1 :**
 +
 +Soit un répertoire monrep, contenant des sous-répertoires et des fichiers. Les droits sont drwx------ (700) pour les répertoires et -rw------- (600) pour les fichiers.
 +
 +On veut ajouter récursivement les mêmes droits (resp. rwx et rw) pour le groupe. C'est à dire qu'on veut aboutir à la situation suivante : drwxrwx--- (770) pour les répertoires et -rw-rw---- (660) pour les fichiers.
 +
 +Si on lance chmod -R 770 monrep : les fichiers vont avoir les droits d'​exécution -> mauvais :-(
 +
 +Si on lance chmod -R 660 monrep : les répertoires n'​auront plus les droits d'​exécution -> catastrophique m(
 +
 +Si on lance chmod -R g+rwx monrep : les fichiers vont avoir les droits d'​exécution -> mauvais :-(
 +
 +Si on lance **chmod -R g+rwX monrep** : seuls les répertoires (et les fichiers déjà exécutables) auront les droits d'​exécution -> bon :-)
 +
 +**Application 2 :**
 +
 +Imaginons que précédemment on ait lancé la commande chmod -R 770 monrep. La situation est la suivante : les droits sont drwxrwx--- (770) pour les répertoires et -rwxrwx---- (770) pour les fichiers.
 +
 +On désire supprimer les droits d'​exécution uniquement sur les fichiers. C'est à dire qu'on veut aboutir à la situation suivante : drwxrwx--- (770) pour les répertoires et -rw-rw---- (660) pour les fichiers.
 +
 +Comme chmod s'​applique à la fois aux fichiers et répertoires,​ nous allons jongler avec x et X. Il faut enlever x puis ajouter X.
 +
 +Si on lance chmod -R u-x+X,g-x+X monrep cela n'aura aucun effet car X concerne à la fois les répertoires ET les fichiers qui ont un x quelque part. Donc si u-x enlève le premier x (ce qui donne -rw-rwx---),​ la suite +X va aussitôt remettre un x car il reste un x (celui du groupe !).
 +
 +Donc il faut d'​abord enlever tous les x : u-x,g-x avant de les remettre (sera fait uniquement pour les répertoires cette fois)
 +ce qui donne finalement :
 +  chmod -R u-x,​g-x,​u+X,​g+X monrep
  
 <note tip>Il est à noter que seuls le propriétaire du fichier ainsi que le super-utilisateur ont la possibilité de modifier les permissions sur un fichier. (Un membre du groupe propriétaire ne peut pas changer les permissions sur un fichier.) Quand l'​utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par ''​sudo'',​ puisqu'​elle devra être effectuée avec les droits d'​administration.</​note>​ <note tip>Il est à noter que seuls le propriétaire du fichier ainsi que le super-utilisateur ont la possibilité de modifier les permissions sur un fichier. (Un membre du groupe propriétaire ne peut pas changer les permissions sur un fichier.) Quand l'​utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par ''​sudo'',​ puisqu'​elle devra être effectuée avec les droits d'​administration.</​note>​
Ligne 217: Ligne 252:
  
 <​note>​Deux autres options bien pratiques : <​note>​Deux autres options bien pratiques :
-  * Pour afficher un message si et seulement si les permissions ont changé : +  * Pour afficher un message si et seulement si les permissions ont changé :
 <​code>​chmod -c <​option>​ <​fichier>​ </​code> ​ <​code>​chmod -c <​option>​ <​fichier>​ </​code> ​
-  * Pour travailler récursivement sur tous les fichiers d'un répertoire et de ses sous-répertoires : +  * Pour travailler récursivement sur tous les fichiers d'un répertoire et de ses sous-répertoires :
 <​code>​chmod -R repertoire </​code>​ <​code>​chmod -R repertoire </​code>​
- 
 </​note>​ </​note>​
 +
 +===== Droits spéciaux =====
 +
 +Les droits sont parfois spécifiés avec 4 chiffres, comme file_mode=0777. Ce premier chiffre ajouté devant peut permettre de définir :
 +tapez en ligne de commande :
 +<​code>​ls -l /​usr/​bin</​code>​
 +Vous devez voir dans la liste des noms de fichiers sur fond rouge ou jaune et des droits du type ci-dessous ou //s// (special((https://​www.gnu.org/​software/​coreutils/​manual/​html_node/​Numeric-Modes.html))) vient remplacer le //x//
 +<​code>​-rwsr-xr-x ​ 1 root   ​root ​    ​155008 févr. 10  2014 sudo*
 +-rwxr-sr-x ​ 1 root   ​ssh ​     284784 mai   ​12 ​ 2014 ssh-agent*</​code>​
 +
 +le bit Set-User-ID permet à un utilisateur d'​exécuter le programme avec les droits du propriétaire,​ c'est ainsi que sudo nous permet d'​exécuter des commandes en "//​root//"​
 +
 +le bit Set-Group-ID idem que le User-ID mais par rapport au groupe
 +
 +le bit restriction de suppression ou Sticky permet quant à lui de restreindre la suppression d'un fichier ou répertoire à son seul propriétaire. C'est le cas du répertoire /tmp :
 +<​code>​ls -ld /t*/
 +drwxrwxrwt ​  2 root root  4096 nov.  28 13:17 tmp/</​code>​
 +le //t// au lieu du //x// pour les autres utilisateurs nous informe que ce répertoire ne peut être supprimé que par l'​utilisateur root
 +Comme pour les autres permissions,​ vous pouvez cumuler les activations en additionnant le code pour chacun, ainsi pour activer le sticky bit et le GroupID sur votre script renomme_mes_photos.sh,​ vous réalisez un :
 +<​code>​chmod 3777 renomme_mes_photos.sh</​code>​
  
 ===== Liens ===== ===== Liens =====
  
-  * [[http://​fr.wikipedia.org/​wiki/​Permissions_Unix|Les permissions UNIX]]+  * [[wpfr>Permissions_Unix|Les permissions UNIX]]
   * [[http://​www.math-linux.com/​spip.php?​article23|Droit et permission d'​accès aux fichiers]]   * [[http://​www.math-linux.com/​spip.php?​article23|Droit et permission d'​accès aux fichiers]]
 +  * [[http://​www.it-connect.fr/​la-commande-chmod/​|Gestion des droits avec CHMOD]] **(fr)** 
 +  * [[https://​www.onlineconversion.com/​html_chmod_calculator.htm| Outils de calcul des permissions : chmod calculator]] 
 +  * [[http://​www.it-connect.fr/​la-gestion-des-groupes-sous-linux%ef%bb%bf/​|Gestion des groupes]] **(fr)** 
 +  * [[http://​www.it-connect.fr/​la-commande-chown/​|Gestion des propriétaires avec CHOWN]] **(fr)** 
 +  * [[https://​www.it-connect.fr/​gestion-de-lumask-sous-linux/​|Gestion de l'​UMASK sous Linux]] **(fr)**
  
 ---- ----
  
-//​Contributeurs : [[:​utilisateurs:​_Enchained]]//​+//​Contributeurs ​principaux ​: [[:​utilisateurs:​_Enchained]], [[:​utilisateurs:​mohican]]//
  • permissions.1312663001.txt.gz
  • Dernière modification: Le 15/12/2011, 15:20
  • (modification externe)