Wiki Linux SMH

   

Flux RSS

Gestion Des Droits

Cet article nécessite encore des ajouts/modifications.
N'hésitez pas à apporter votre contribution en complétant cet article.

1 - Un peu de théorie

1.1 - Droits d'un fichier - droits simples

Les droits sur un fichier se font par rapport à 3 catégorie :

  • (u) le propriétaire du fichier (user)
  • (g) un groupe (group)
  • (o) le reste du monde (others)

Les 3 catégories ensemble donnent

  • (a) tout le monde (all)

Pour chaque catégorie, on a les droits suivants :

  • (r) Lecture
  • (w) Ecriture
  • (x) Exécution dans le cas d'un fichier, Accès au dossier dans le cas d'un dossier.

Ceci permet d'avoir des autorisations du style :
Jean peut lire et modifier le fichier menu_de_la_semaine.txt, le groupe Amis de Jean peut seulement lire le même fichier, et le reste du monde ne peut ni lire , ni modifier ce fichier.

Par exemple, dans le cas du fichier menu_de_la_semaine.txt, on aura les droits suivants :

  • rw- pour Jean
  • r-- pour les Amis de Jean
  • --- pour le reste du monde

Imaginons maintenant que Jean ait réalise un programme bataille_navale.pl qu'il veut être le seul à exécuter, lire et modifier. Ce programme aura les droits suivants :

  • rwx pour Jean
  • --- pour les Amis de Jean
  • --- pour le reste du monde

Une autre notation possible est la notation octale : un chiffre est attribué à chaque droit, on ajoute ces droits comme on veut et on attribu un chiffre à chaque catégorie d'utilisateur.

Les chiffres sont 4 pour la lecture, 2 pour l'écriture, 1 pour l'exécution.

En clair, ça donne :

  • 644 : lecture/écriture pour le propriétaire du fichier, lecture pour le groupe, lecture pour les autres
  • 755 : lecture/écriture/exécution pour le propriétaire, lecture/exécution pour le groupe et les autres
  • 640 : lecture/écriture pour le propriétaire, lecture pour le groupe, aucun droit pour les autres
  • 777 : tous les droits pour tout le monde

1.2 - Droits d'un fichier - droits complexes

1.2.1 - Setuid

Lorsqu'un fichier peut être exécuté par son propriétaire et les membres d'un groupe, on peut faire en sorte que lorsque les membres du groupe l'exécutent, il soit exécuté avec les droits du propriétaires : c'est ce qu'on appelle être setuid.
Un exemple classique est le binaire passwd. Ce binaire (qui permet à un utilisateur de changer son mot de passe) appartient à l'utilisateur root et est setuid. En effet, ce binaire écrit dans le fichier /etc/passwd ou /etc/shadow (suivant les distributions de Linux/Unix) qui n'est accessible en écriture qu'à l'utilisateur root.

Un binaire setuid se traduit par un remplacement de la lettre (x) par la lettre (s) pour les droits du propriétaire. Voilà un exemple pour un fichier en lecture et exécution (en setuid) pour tout le monde :

  • r-s pour le propriétaire
  • r-x pour le groupe
  • r-x pour le reste du monde

Un dossier ne peut pas être setuid.

1.2.2 - Setgid

De la même façon qu'avec le setuid on peut donner les droits du propriétaire pour exécuter un fichier : avec le setgid on peut donner les droits du groupe pour exécuter un fichier.

Un binaire setgid se traduit par un remplacement de la lettre (x) par la lettre (s) pour les droits du groupe. Voilà un exemple pour un fichier en lecture et exécution (en setgid) pour tout le monde :

  • r-x pour le propriétaire
  • r-s pour le groupe
  • r-x pour le reste du monde

Si un dossier est setgid, tous les fichiers créés dans ce dossier appartiendront au groupe auquel appartient le dossier.

1.2.3 - Sticky Bit

Positionner le sticky bit d'un programme signifie qu'il va rester en mémoire à la fin de son exécution dans le but d'être relancé plus rapidement. Un programme avec le sticky bit et accessible en lecture et exécution pour tout le monde aura les droits suivants :

  • r-t pour le propriétaire
  • r-x pour le groupe
  • r-x pour le reste du monde

Dans le cas d'un dossier, le sticky bit empêche un utilisateur de supprimer des fichiers qui ne lui appartiennent pas dans le dossier.

1.3 - Changements de droits

Seul le propriétaire d'un fichier, ainsi que l'utilisateur root peuvent changer les droits d'un fichier, c'est à dire :

  • modifier les permissions d'accès
  • modifier le propriétaire et le groupe du fichier (dans le cas ou le propriétaire d'un modifie le propriétaire, on considère alors qu'il donne le fichier)

2 - Dans la pratique

Pour changer le propriétaire d'un fichier :

chown nouveau_proprio fichier_ou_dossier_cible

Pour changer le groupe d'un fichier :

chgrp nouveau_groupe fichier_ou_dossier_cible

Pour changer le propriétaire et le groupe en une seule manipulation :

chown nouveau_proprio:nouveau_groupe fichier_ou_dossier_cible

Pour changer de façon récursive le propriétaire (utiliser de la même manière pour le groupe) :

chown -R nouveau_proprio fichier_ou_dossier_cible

Pour changer les droits d'un fichier :

chmod nouveaux_droits fichier_ou_dossier_cible

De manière récursive :

chmod -R nouveaux_droits fichier_ou_dossier_cible

La commande chmod accepte les droits avec les lettres ou les chiffres, de plus vous pouvez décrire les nouveaux droits relativement aux anciens. Par exemple, pour ajouter les droits d'écriture au groupe, ça donnera :

chmod g+w fichier_ou_dossier_cible (g = groupe, w = write, + pour ajouter)

Remplacez le plus par un moins si nécessaire, g par o,u ou a (propriétaire, reste des gens et tout le monde), et w par r ou x (lecture ou exécution) et le tour est joué.

Enfin, le X (x majuscule) peut également être utilisé : il signifie exécution seulement pour les dossiers, c'est extrêmement pratique dans le cas des commandes récursives car les dossiers nécessitent le droit d'exécution pour être traversés, tandis que les fichiers n'ont généralement pas besoin d'être exécutables.

Vous êtes : 38.107.191.89 Dernière modification : 03/12/06 20:29 Propriétaire : Fritz Modifié par : err747

Commentaires

Afficher les commentaires
Il n'y a aucun commentaire sur cette page