Permissions d'accès aux fichiers


Tout fichier du système appartient à la fois à un utilisateur (son "propriétaire") et à un groupe.
Ainsi, pour chaque fichier le monde de ses utilisateurs potentiels est scindé en 3 catégories, nommées
:
  1. u, l'utilisateur normal, son propriétaire, bien souvent son créateur, qui n'a pas pour autant tous les droits sur lui !
  2. g, son groupe, ensemble d'utilisateurs ayant parfois des "permissions" particulières.
  3. o, tous les (others) autres.
Attention, l'utilisateur propriétaire et le groupe propriétaire du fichier peuvent être indépendants :
Mais (heureusement) une règle générale simple s'applique à la création de tout nouveau fichier (ou rép)

Droits d'accès des utilisateurs aux fichiers

Généralités

Linux permet de spécifier les droits d'action sur un fichier, que peuvent exercer les utilisateurs des 3 catégories précédentes, ou plutôt les permissions que leurs accordent les fichiers et les répertoires.
Linux a repris les 3 protections d'UNIX sur les fichiers et les répertoires. Leur notation symbolique est :
  1. r, lecture
  2. w, écriture
  3. x, exécution

De façon générale, ces permissions sont consultables complètement par la commande : ls -l
Rappel : ll est un alias plus court, pour la commande ls -l

Par exemple :
[stagex@p0x  stagex] ll *.html
-rw-r--r--  1 stagex    stagex   1200  oct 19 12 : 39     amoi.html

Description globale
On trouve de gauche à droite

Permissions des fichiers normaux

Pour chaque fichier, les utilisateurs sont ainsi séparés en 3 catégories, le propriétaire, les membres du groupe et tous les autres.
Les permissions accordées par le fichier à ces catégories sont complètement indépendantes mais leur signification est la même.
Vis à vis de chacune de ces 3 catégories, on trouve dans l'ordre : Exemples : Afficher toutes les infos sur un fichier
La commande stat permet d'obtenir une information plus poussée sur un fichier.
Exemple : stat /etc/passwd

Permissions des répertoires

Pour les fichiers de type répertoire, la signification des attributs est différente de celle d'un fichier normal.
Mais elle est toujours identique pour les 3 catégories d'utilisateurs du répertoire.
La présence d'un tiret "-" signifie toujours l'absence complète de droits

Exemples :

Attention !
on voit que le droit w est très étendu, et même dangereux quand il est accordé à un groupe, car un membre du groupe peut supprimer des fichiers dont il n'est pas propriétaire et sur lesquels il n'a même pas de droit d'écriture !
Remarque
Le droit x sur un répertoire est un préalable indispensable pour qu'un utilisateur (de la catégorie correspondante au positionnement du x), puisse exercer d'éventuels droits sur les fichiers contenus dans le répertoire.


Exercice 1


Changements des droits

De façon générale, l'utilisateur qui crée un fichier en devient le propriétaire,
et le groupe auquel l'utilisateur appartient (au moment de la création) devient le groupe du fichier.

Remarques préalables

Changer le propriétaire ou le groupe propriétaire

Changer les permissions sur les fichiers

Ajout, retrait ou fixation des permissions
Pour chaque fichier, on désigne par :

Notation relative (aux droits existants)

Notation absolue

Remarque importante

Le "super-utilisateur" root n'est pas soumis aux restrictions des permissions. Une petite expérience :
  1. Vérifier que /etc/shadow est inaccessible même en lecture aux utilisateurs
  2. Vérifier que ses permissions sont --------- ou 400 en octal, seul le propriétaire root peut lire
  3. Root supprime ce droit de lecture : chmod u-r /etc/shadow
    Vérifier /etc/shadow
  4. Root peut le lire, le copier et le modifier, ce n'est bien sûr pas recommandé, mais root peut tout se permettre (raison de plus pour ne jamais se connecter root, sans nécessité !)
  5. Mais bonne nouvelle, root peut donc retrouver de fichiers appartenant à des utilisateurs ayant perdu leurs droits d'accès !
    [stagex@p00 stagex]$ cp ./bashrc ./bashrc1
    [stagex@p00 stagex]$ chmod ugo=  ./bashrc1 aucune permission sur le fichier !
    [stagex@p00 stagex]$ cat ./bashrc1	bien sûr il est totalement protégé en lecture
    [root@p00 stagex]# cat ./bashrc1	mais pas pour root !
    
Exercice 2

Exercice 3


Compléments .. indispensables

Notation octale des permissions

Il existe une autre facon d'indiquer les permissions de chaque catégorie, plus simple en utilisant la numération octale

Voici la table de correspondance entre les 8 chiffres en numérotation octale (base 8) et les 8 valeurs de droits fichiers.
Par convention la présence d'un droit est noté 1, l'absence 0.

                             Binaire ----- Droit ----- Octal
             000 -------- (---) ------- 0
             001 -------- (--x) ------- 1
             010 -------- (-w-) ------- 2
             011 -------- (-wx) ------- 3
             100 -------- (r--) ------- 4
             101 -------- (r-x) ------- 5
             110 -------- (rw-) ------- 6
             111 -------- (rwx) ------- 7

Synthèse : notation globale pour les 3 catégories

propriétaire groupe autre
lecture écriture exécution lecture écriture exécution lecture écriture exécution
400 200 100 40 20 10 4 2 1

Pour obtenir les permissions exprimées en octal, il suffit d'ajouter en octal les nombres de la table de correspondance ci-dessus, pour lesquels les droits sont positionnés.

Exemples

chmod 700  /home/rep-a-moi droits par défaut pour un rép. personnel.
ls -l /home/rep-a-moi
 --> drwx------ 
 

Les 2 commandes suivantes sont équivalentes :

chmod 764 test
chmod u=rwx,g=rw,o=r test
ls -l test
 -rwxrw-r--

Le masque de protection umask

Les droits étendus

Le droit SUID

Le droit SGID

Le "sticky bit"