Permissions de fichiers et répertoires

Permissions de fichiers et répertoires

Toutes les permissions associées à un fichier ou à un répertoire sont définies par trois types:

  • Permissions de propriétaire (Elle identifient le opérations que le propriétaire peux réaliser sur le fichier ou répertoire)
  • Permissions du groupe (Elle identifient les opérations qui peuvent être réalisées par tout utilisateur appartenant au même groupe que le groupe propriétaire du fichier ou du répertoire)
  • Permissions de tout le monde (les autres) (Elle identifient les opérations que n'importe qui d'autre peut réaliser)

Pour chacun de ces types de permission, il y a trois bits de permission associé. Les permissions associées aux fichiers sont suivantes:

  • Read (r) : le fichier peut être lu.
  • Write (w) : le fichier peut être modifié, supprimé et renommé.
  • Execute (x) : le fichier peut être exécuté.

Les permissions associées aux répertoires sont les suivantes:

  • Read (r) : le répertoire peut être lu.
  • Write (w) : le répertoire peut être mise à jour, supprimé et renommé.
  • Execute (x) : On peut effectuer des opérations sur le fichiers du répertoire. Ce bit s'appelle aussi bit de recherche (search bit), parce que la permission de l’exécution dans un répertoire n'indique pas si un répertoire peut être exécuté ou non, mais s'il est autorisé d'y rechercher des fichiers. 

Si un utilisateur à la permission d'écrire dans un répertoire contenant un fichier, les permissions sur le répertoire prévalent sur celle des fichiers dans le répertoire. L'utilisateur est prévenu que le fichier a l'option lecture seul (readonly) mais qu'il peut ajouter <!> pour passer autre. Il devient également le propriétaire du fichier.

Les permissions (de propriétaire, de groupe et de tout le monde) sont stockées sous forme de nombre octal. Un nombre octal est représenté par trois bits. Un nombre octal est stocké de la façon suivante:

  • bit 1, valeur 0 ou 1 (définit la permission read)
  • bit 2, valeur 0 ou 1 (définit la permission write)
  • bit 3, valeur 0 ou 1 (définit la permission execute)

Le bit1 (r) a un poids de 4, le bit 2 (w) a un poids de 2 et le bit 3 (x) a un poids de 1. Par exemple, la représentation 101 aura pour valeur 5:

(4 * 1) + (2 * 0) + (1 * 1)

Convention pour définir les permissions de répertoire et de fichiers.
Pour les informations privées, il faut définir les permissions à 700. Vous seul aurez les permissions de lire, écrire et d’exécuter sur le répertoire et le fichier.
Pour rendre les information public, mais être le seul à pouvoir la publier, définissez la permission à 755. Personne d'autre ne pourra écrire, ni mettre à jour le fichier ou le répertoire.
Si vous voulez que l'information ne soit accessible à personne d'autre que vous ou votre groupe, définissez les permissions de tout le monde à 0; cela donnera 770 ou 750.

Permissions par défaut : umask

Lorsqu'un utilisateur se logue à un UNIX, il reçoit une permission par défaut. Tous les fichiers et répertoires seront crées avec les permission définies dans umask.
Umask est stocké et affiché en tant que nombre à soustraire de 777.
Commande pour voir les permission dont on dispose:
umask
qui donne le résultat suivant:
022
ce qui signifie que les permissions par défaut sont de : 777 - 022 = 755
La valeur par défaut peut être modifié en exécutent  la commande umask avec un argument, qui est le masque souhaité.  Par exemple : proprietaire avec read, write et execute (7), groupe avec read et write (5), tout le monde avec seulement execute (1) , umask devra être défini à 777 - 751 = 026 :
umask 026

Modification des permissions : chmod

Avec chmod vous pouvez spécifier les nouvelles permissions sur le fichier ou le répertoire de deux façon:

  • par un code octal de trois chiffres
  • en mode symbolique

Avec mode octal : chmod 741 testfile

Avec le mode symbolique, il faut spécifier:

  • quelles permissions (propriétaire, groupe ou autre) vous souhaitez changer)
  • quelle opération (+ pour ajouter, - pour soustraire, = pour rendre égal) vous voulez réaliser sur les permissions
  • la permission (r, w, x)

exemple: La permission courant de fichier testfile est 740, exécuter la commande suivante pour modifier les permission de testfile afin que le groupe ait aussi la permission d’écrire:
chmode g+w testfile

Un autre exemple: faire en sort que les autres aient aussi sur le fichier testfile les même permission que le groupe:
chmod o=g testfile

Autre exemple : ajouter la permission d'écrire au groupe et supprimer celle d'écrire à tout le monde:
chmod g+w,o-w testfile

Modification du propriétaire et de groupe : chown et chgrp

Changer le propriétaire (amer) du fichier testfile au profit d'utilisateur fred:
chown fred testfile

Changer le propriétaire (amer) du dossier test ainsi que de ces sous dossier et fichier au profit d'utilisateur fred:
chown -R fred test

Changer le groupe propriétaire (tech) du fichier testfile au profit de groupe dev:
chgrp dev testfile

Setuid et setgid

Il est possible sous UNIX de positionner le bit SET USER ID (setuid) d'un exécutable de façon que, quand il s'exécute, vous preniez l'identité de son propriétaire.