Droits d’accès aux fichiers et permissions

Ce sont les droits d’accès aux fichiers. Nous avions comment obtenir les droits « administrateur » en installant l’utilitaire sudo dans cette article, puis en ajoutant l’utilisateur au groupe sudo.

Ce qui nous donne les droits de manière temporaire, afin de modifier des fichiers de configuration comme le nom de la machine, car sous Gnu/Linux tout est fichier, et chaque fichiers possèdent des caractéristiques, contenu dans l’i-nodes comme les droits .

Alors quelles sont ces droits. Listons le contenu du répertoire de l’utilisateur ordinatous avec ls -l.

  • ls -l permet d’obtenir des informations détaillées sur le contenu d’un répertoire, ou un fichier.

gestionnaire31Comme vous le voyez les informations sont présentée comme ceci, intéressons nous aux 4 premières colonnes contenant les 10 caractères suivants:

Type Droits du propriètaire Droits du groupe Droits des autres
–  d ou l rwx rwx rwx

Prenons le cas du fichier exercices.

gestionnaire32

  • La première colonne sert à distinguer le  type:
  • – pour un fichier et d pour directory, et l pour un lien

Puis les lettres sont regroupé par groupes de 3, c’est lettres indiquent les droits .

  • Premier groupe: les droits du propriétaire ordinatous.
    • r pour les droits en lecture
    • w pour les droits en écriture
    • x pour les droits en exécution
      • Je n’ai pas rendu ce fichier exécutable
  • Deuxième groupe: les droits du groupe ordinatous.
    • r pour les droits en lecture des utilisateurs du groupe ordinatous
    • w pour les droits en écriture des utilisateurs du groupe ordinatous
    • x pour les droits en exécution des utilisateurs du groupe ordinatous
  • Troisième groupe: les droits des autres utilisateurs.
    • r pour les droits en lecture des autres utilisateurs (o pour other)
    • w pour les droits en écriture des autres utilisateurs
    • x pour les droits en exécution des autres utilisateurs

A chaque droits correspond une valeur, et nous pouvons exprimer l’ensemble des droits attribué en octal, puisque nous avons 8 valeurs différentes, ce que l’on appel une notation octal:

  • 0 (—) aucun droit
  • 1 (–x) droit en exécution (ou passer à travers un dossier)
  • 2 (-w-) droit en écriture
  • 3 (-wx) droit en lecture et en exécution = c’est la somme des droits
  • 4 (r–) droit en lecture
  • 5 (r-x) droit en lecture et en exécution (la somme)
  • 6 (rw-) droit en lecture et écriture (la somme)
  • 7 (rwx) tout les droits (la somme)

La notion de droits n’est pas excessivement compliquée,  la notation probablement moins évidente, et appliquer les droits peut être encore moins. Voici un convertisseur en ligne sur le site: onlineconversion.com

Pour mieux comprendre les droits, admettons que dans le cadre d’une utilisation familiale les parents ne souhaiteraient pas forcément que les enfants puissent lire l’ensemble des fichiers… Ah bon rien à cacher?

Êtes vous certains de ne pas avoir une vie intime, quelques photos de soirées ou vous auriez fait un streap-tease, voir un séjour dans un camp de naturistes….

Nous voyons que les autres utilisateurs de la machine crunchy peuvent lire le fichier, je suis connecté avec l’utilisateur toto et je vais utiliser l’utilitaire more pour lire un fichier, il existe d’autres utilitaires pour lire un fichier.

gestionnaire33On voit que toto à essayer de pourrir mon fichier….sacré toto, et on voit que le système à refusé d’enregistrer les modifications, cela vient du fait que toto n’est pas membre du groupe ordinatous.

gestionnaire34Et en mode graphique les actions supprimer et mettre à la corbeille sont désactivés, couper également, ainsi que renommer, il n’a pas les droits en ecriture.

gestionnaire35Si par exemple je ne souhaitais pas que les autres utilisateurs de la machine puissent lire le fichier, il existe une commande très simple chmod.

Attention seul le propriétaire ou l’administrateur peuvent modifier les droits sur ses fichiers

  • en tant qu’utilisateur ordinatous et propriétaire du fichier je modifie les droits de autres.
  • chmod 660 exercices
  • chmod  applique les droits en lecture/écriture pour le propriétaire, puis pour le groupe auquel appartient le propriétaire, puis donne aucun droits aux autres utilisateurs.
  • modifier x pour un fichier est différent du x appliquer aux répertoires, x sur un répertoire permet de le traverser, donc attention.

gestionnaire36Voyons ce qu’il se passe quand toto tente de lire le fichier; le système lui dit : Permission non accordé, toutefois toto peut visualiser le contenu des répertoires, ce que je ne souhaite pas forcément. Ça ne le regarde pas .

gestionnaire38

Modifier les droits pour chaque fichiers crée peut devenir fastidieux, et j’aimerais autant que personne ne puisse venir voir ce qu’il y a dans mes répertoires, ni visionner mes documents.

Pour cela je vais changer les droits sur mon répertoire personnel, attention avec cette commande car une erreur pourrait bien vous compliquer la vie.

Si modifier les droits en octal semble très pratique et facile, il est aussi un peu brut, ça manque de finesse, si nous l’appliquons de manières récursive avec l’options -R.

  • chmod -R g+rwx /home/ordinatous
    • rendrait  tous les fichiers exécutable pour les membres ordinatous: ce n’est pas une bonne idée non plus
  • chmod -R 660/home/ordinatous
    • les répertoires perdraient les droits en exécution, on ne pourrait plus les traverser: c’est la zone
  • chmod -R 770 /home/ordinatous
    • rendrait exécutable tous les fichiers: ce n’est pas une bonne idée
  • chmod -R g+rwX /home/ordinatous
    • ici X permet de marcher à travers les répertoires, et conserve les droits en x aux fichiers qui sont déjà exécutable. C’est pas mal mais ça ne résout pas mon problème avec les gamins fouineurs.
  • chmod -R u-x,g-x,u+X,g+X /home/ordinatous
    • cette fois nous enlevons les droits en exécutions sur tous les fichiers du propriétaire ainsi qu’à son groupe, puis nous rendons les droits en exécutions sur les répertoires ainsi que les fichiers qui étaient déjà exécutables ainsi qu’à son groupe.

Mais, mais ….ça n’a pas échappé aux enfants:

Ils peuvent toujours se déplacer dans mon répertoire .

Voilà tata.

gestionnaire45Et voilà toto, qui fait son malin, il a basculé en mode console…

gestionnaire44J’ai donc oublié un argument. Nous allons y remédier, en entrant la même commande mais cette fois en précisant les droits pour les autres : other.

  • chmod -R u-x,g-x,u+X,g+X,o-x

Et voici le résultat pour tata: permission non accordée .

gestionnaire42Et pour toto (0+0=la tête à toto)

gestionnaire41Les enfants ne peuvent plus venir fouiner dans mon répertoire personnel.

Il y a toutefois plus simple, pour cela il faut utiliser le umask. Le umask sert lors de la création des repertoires et des fichiers, nous partons du principe que le système donne tous les droits à tout le monde puis soustrait des droits.

Communément le umask est 022, nous pouvons changer la valeur dans /root/.bashrc ce qui éviterez bien des manipulations.

 

 

 

 

 

 

Comments

So empty here ... leave a comment!

Laisser un commentaire

Sidebar