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:

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

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

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:

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:

Avec mode octal : chmod 741 testfile

Avec le mode symbolique, il faut spécifier:

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.