permissions fichiers et répertoires

La protection d’un fichier est relative à trois groupes d’utilisateurs :

  • propriétaire du fichier : u
  • le groupe du fichier (par défaut, celui du propriétaire) : g
  • le reste du monde : o (other)

Pour chaque catégorie, le propriétaire peut donner trois types de droits : lecture, écriture et exécution (rwx)
L’utilisateur spécial ‘root’ (administrateur) passe outre ces niveaux de protection.

Permissions permet pour un fichier de permet pour un répertoire de
Read lire le contenu lister les fichiers du répertoire
Write modifier le contenu
(mais pas le détruire)
créer, renommer, supprimer le répertoire
Execute executer le fichier (un binaire ou un script) accéder au répertoire et rwx sur les fichiers qu’il contient

Lecture des droits

ls -l
donne des informations sur le propriétaires , le groupe et les droits du fichier
- : pas de droits
r : droit de lecture
w : droit d’écriture
x : droit d’exécution
et dans l’ordre : 3 caractères pour le propriétaire, le groupe, puis les autres.

$> ls -l
-rw-r–r– 1 oracle transf 341331968 Aug 19 20:07 test.dmp
-r–r–r– 1 dd dba 476 Dec 05 10:20 error.log
# test.dmp appartient à oracle, est du groupe ‘transf’, accessible en lecture/écriture pour le propriétaire et en lecture seule pour le groupe et les autres.
# error.log appartient à dd, au groupe dba
et est en lecture seule pour tous

note : le premier caractère affiché indique le type de fichier. ‘-’ est ici un fichier ordinaire (‘d’ aurait indiqué un répertoire)

Changement des droits

chmod permet de changer les droits d’accès.

$ chmod [ugoa] [+-=] [rwx] [fichier...]
le 1er parametre précise la cible u,g,o ou ‘a’ pour tous les trois.
le 2eme : ‘+’ ajoute, ‘-’ supprime, ‘=’ remplace des permissions
le 3eme : les permissions utilisées
le 4eme : le fichier ou rep sur lequel on fait le changement

exemples

$>touch toto
$> par défaut on a …
$>ls -l toto
-rwxr–r-x 1 oracle dba 0 Dec 05 14:24 toto
$>chmod g+wx toto
$>ls -l toto
-rwxrwxr-x 1 oracle dba 0 Dec 05 14:24 toto
$># on enleve le x a others
$>chmod o-x toto
$>ls -l toto
-rwxrwxr– 1 oracle dba 0 Dec 05 14:24 toto
$>#on écrase le groupe par rx
$>chmod g=rx toto
$>ls -l toto
-rwxr-xr– 1 oracle dba 0 Dec 05 14:24 toto
$>chmod a-r toto
$>ls -l toto
–wx–x— 1 oracle dba 0 Dec 05 14:24 toto
$># on rajoute r a u et g seulement
$>chmod ug+r toto
$>ls -l toto
-rwxr-x— 1 oracle dba 0 Dec 05 14:24 toto

chmod numérique

Il existe une autre notation plus compacte ou l’on note les permissions (rwx) avec un nombre binaire en octal. Chaque permission a le poids suivant :

r=4 w=2 x=1 et n octal = code r + code w + code x

n bin symbole
0 000 —
1 001 –x
2 010 -w-
3 101 r-x
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx

exemples

$> chmod 755 toto
$> ls -l
rwxr-xr-x 1 oracle dba 0 Dec 05 14:24 toto
$>chmod 770 toto
$ >ls -l toto
-rwxrwx— 1 oracle dba 0 Dec 05 14:24 toto

Droits par défaut

Le système fixe des permissions par défaut lors de la création d’un fichier et d’un répertoire :

  • - 666 ou rw- rw- rw- pour un fichier
  • - 777 ou rwx rwx rwx pour un répertoire

Cependant ces permissions par défaut, sont filtrées par un code le ‘umask’.
On peut vérifier sa valeur courante ou lui en fixer une nouvelle avec la commande :

$> umask
0022
$> umask 0044

Pour appliquer le filtre il suffit simplement de soustraire sa valeur numérique des permissions par défaut.
Le umask de la plupart des systèmes est fixé à 0022 ce qui nous donne les protections suivantes par défaut :

  • fichier : 666-022 = 644 ==> rw- r– r–
  • répertoire : 777 – 022 = 755 ==> rwx r-x r-x

Ce que l’on vérifie sur notre système :

$> umask
0022
$> touch titi # on cree un fichier
$> mkdir toto # puis une directory
$> ls -al titi
-rw-r–r– 1 root root 0 dec 9 08:43 titi
$> ls -al|grep toto
drwxr-xr-x 2 root root 4096 dec 9 08:43 toto

Droits spéciaux

Il existe en plus des droits rwx 3 droits spéciaux s’appliquant aux fichiers et répertoires.

  • Set User ID bit ou SUID bit

- un  fichier est exécuté avec l’ID et donc les droits du propriétaire (et pas de l’exécuteur)
- un répertoire fait hériter son UID aux fichiers

note importante : le suid bit ne s’applique en général qu’aux exécutables binaires et pas aux fichiers scripts…

Un exemple classique d’utilisation (implicite) du suid bit par les utilisateurs, est le changement de mot de passe. Pour ce faire on doit modifier le fichier /etc/passwd …qui appartient à root et n’est pas en écriture pour tout le monde. c’est impossible à faire en direct avec un éditeur ! mais la commande executable ‘passwd’ a justement le suid bit positionné , ce qui permet de prendre momentanément l’ID de root et de pouvoir écrire dans le fichier. CQFD.

On en a la preuve ici sur notre machine:

$> ls -l /etc/passwd
-rw-r–r– 1 root root 1593 dec  8 11:08 /etc/passwd
$> # on voit bien que le fichier est en lecture seule pour others (dont DD)
$> # voyons voir les droits de l’executable
$>  ls -l /usr/bin/passwd # il peut se trouver ailleurs suivant les versions
-rwsr-xr-x 1 root root 22984 jun  6  2007 /usr/bin/passwd

  • Set GID bit

Cette permission donne les droits suivants :
- un fichier s’exécute avec le groupe propriétaire
- un répertoire fait hériter son GID aux fichiers

  • Sticky bit

Cette permission spéciale donne les droits suivants :

- fichier exécutable ‘collé’ en mémoire après exécution
- répertoire ou tous peuvent écrire, mais seul le propriétaire peut détruire

–S—— set UID ok mais pas execute pour u
–s—— set UID ok et execute pour u
—–S— set GID bit ok mais pas execute pour le g
—–s— set GID bit ok et execute pour le g
——–T sticky bit OK mais pas x pour o
——–t sticky bit OK et x pour o

$> chmod +t nom_rep

note : le sticky bit est différemment supporté suivant les versions d’Unix. Il est ignoré pour les fichiers sur Linux.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.