DOC:UNIX:Droits : Différence entre versions

De MonPtitSite
Sauter à la navigation Sauter à la recherche
 
Ligne 339 : Ligne 339 :
 
Si vous répondez par l'affirmative (yes ou y), le système essaiera de supprimer ce fichier.
 
Si vous répondez par l'affirmative (yes ou y), le système essaiera de supprimer ce fichier.
 
Il en ressort que la capacité à supprimer un fichier ne dépend pas de l'autorisation d'accès en écriture d'un fichier mais des autorisations d'accès sur le répertoire
 
Il en ressort que la capacité à supprimer un fichier ne dépend pas de l'autorisation d'accès en écriture d'un fichier mais des autorisations d'accès sur le répertoire
 +
 +
[[Catégorie:Documentation]]
 +
[[Catégorie:Technique]]

Version actuelle datée du 20 janvier 2025 à 11:22

Accueil SysAdmin Hobbies                  


UNIX et les droits d'accès aux fichiers

LES DROITS D’ACCES SUR LES FICHIERS.

Les droits d'accès sur les fichiers et répertoires

Tout système d'exploitation doit gérer les données avec méthode et sécurité.

Ce domaine de sécurité englobe également le fait que les fichiers ne peuvent être lus et modifiés que par des personnes autorisées à le faire d'où l'existence des droits d'accès.

PRINCIPES DE BASE DES DROITS D'ACCES

Chaque fichier de l'arborescence d'UNIX est doté d'une identification spécifique. Les informations d'identification les plus importantes sont affichées par la commande ls avec l'option -l.

Exemple :

$ ls -l
Total0
drwxr--r-- 2 cfpp cfpp  2 Jul 17 10:30 Buts
-rw-rw-r-- 1 cfpp cfpp 16 Jul 17 10:31 cantona
-rw-rw-r-- 1 cfpp cfpp  0 Jul 17 10:31 carnus
-_________ _ ____  ___ __ ____________ ___________
1    2     3   4    5   6      7           8
Signification des chiffres :
1 : Type de fichier,
2 : Droits d'accès,
3 : Compteur de liens,
4 : Propriétaire du fichier,
5 : Groupe d'affectation du fichier,
6 : Taille du fichier,
7 : Date et heure de dernière modification,
8 : Nom du fichier.


Elle montre de manière évidente que pour chaque fichier ou répertoire de l'arborescence des autorisations d'accès sont mises en place.

Chaque fichier dispose d'autorisations d'accès individuelles et le système vérifie que, à chaque accès à ce fichier, les autorisations le permettent.

Mais ces autorisations de droits d'accès ne suffisent pas à protéger les fichiers des accès interdits.

Lors de sa connexion, chaque utilisateur se voit affecté d'un numéro d'utilisateur (en anglais User Identification ou UID).

L'affectation de numéros à ces noms d'utilisateurs est réalisée par le fichier /etc/passwd. Ce fichier est l'élément central de l'ensemble de la gestion des utilisateurs.

En complément, chaque utilisateur, reçoit un numéro de groupe (en anglais Groupe Identification ou GID).

En conséquence, chaque utilisateur est doté d'un numéro d'utilisateur et d'un numéro de groupe. Pour vérifier ces numéros, vous utiliserez la commande id.

En interne, UNIX distingue les utilisateurs uniquement par leur numéro et non pas d'après leur nom d'utilisateur.

Il en va de même pour les fichiers. Là aussi, leur gestion se fait sur la base d'un numéro. Par ce numéro, vous accéderez aux données d'identification :

  • le numéro de l'utilisateur propriétaire du fichier,
  • le nom du groupe auquel est affecté ce fichier.

A chaque accès d'un utilisateur sur un fichier, il y a trois cas de figure possibles :

  • le numéro d'utilisateur est identique au numéro d'utilisateur référencé dans l'en-tête du fichier. Si c'est le cas, cet utilisateur est propriétaire du fichier,
  • si ces deux numéros ne concordent pas, le système vérifie si le numéro de groupe de l'utilisateur est identique au numéro de groupe du fichier. Dans ce cas, l'utilisateur appartient au même groupe que celui auquel est affecté le fichier.
  • dans tous les autres cas (il n'y a de concordance ni entre les numéros d'utilisateurs ni numéro de groupe), on parle du reste du monde (en anglais others), c'est-à-dire la masse des utilisateurs qui ne sont ni propriétaires du fichier ni partie prenante au groupe d'affectation du fichier.

Ces trois catégories sont essentielles pour tout ce qui touche aux droits accès sur les fichiers.


SIGNIFICATION DES DROITS D'ACCES.

En principe, pour ces trois catégories, existent les mêmes autorisations d'accès. Elles peuvent être identiques ou différenciées.

Code d'autorisation Signification

r

readable (lecture)

w

writable (écriture)

x

executable (en tant que programme)

De par la combinaison des catégories d'utilisateurs et des autorisations d'accès, un fichier peut être doté d'une des possibilités suivantes :

  • Accessible en lecture, en écriture et exécutable par le propriétaire,
  • Accessible en lecture, en écriture et exécutable pour le groupe d'affectation du fichier,
  • Accessible en lecture, en écriture et exécutable pour le reste du monde.

Il existe donc 9 possibilités de droits d'accès sur les fichiers. Le tableau suivant montre le détail des autorisations d'accès posées sur un fichier.

-rw-rw-r--1cfppcfpp16Jul1710:31cantona
 P  G  O
P = propriétaire, G = Groupe, O = others

Les droits d'accès se décomposent en 3 triplets :

  • les 3 premiers caractères (rw-) définissent les droits d'accès pour le propriétaire,
  • les 3 caractères suivants (rw-) définissent les droits d'accès du groupe,
  • les 3 derniers caractères (r--) définissent les droits d'accès pour les autres.


Les droits sont interprétés de manière différente selon le type de fichier. Pour les fichiers normaux, l'interprétation est la suivante :


Droits d'accès Signification
r Le contenu du fichier peut être lu. La commande cp peut le lire pour éventuellement le stocker dans un autre fichier,
w Le contenu peut être modifié. Le fait que ce fichier puisse être supprimé ne fait pas partie de ses caractéristiques propres mais de celles du répertoire où il est placé
x Le fichier contient un programme et peut être exécuté

En matière de droits d'accès sur les répertoires, les autorisations ont une signification légèrement différente :

Droits d'accès Signification
r Les éléments du répertoire sont accessibles en lecture. Cette autorisation est nécessaire pour la commande ls.
w Les éléments du répertoire sont modifiables. L'utilisateur peut créer de nouveaux fichiers dans ce répertoire et supprimer des fichiers existants. La capacité de suppression d'un fichier est indépendante des autorisations d'accès aux fichiers proprement dits.
x Le nom du répertoire peut apparaître dans un chemin d'accès. Ceci a pour conséquence que vous n'aurez d'accès à ce répertoire par la commande cd que si vous disposez au minimum du droit d'exécution. Tous les fichiers et répertoires lui appartenant sont totalement verrouillés si cette autorisation d'accès fait défaut.

Dans tous les cas, un tiret (-) indique l'absence d'un droit d'accès.

MODIFICATION DES DROITS D'ACCES

chmod

Chaque fichier ou répertoire est créé avec des droits d'accès standards. Le système vous permet de les adapter à vos besoins personnels.

Pour le faire, vous utiliserez la commande chmod (en anglais change mode). Cet appel peut revêtir deux formes distinctes.

La première est appelée symbolique alors que la seconde passe par des chiffres en base 8 mais cela ne pose aucun problème particulier.

La commande chmod ne peut être employée que par le propriétaire du fichier pour en modifier les droits d'accès. La seule exception à cette règle est l'administrateur de votre système.

En effet, celui-ci a la possibilité de modifier les droits d'accès à l'ensemble des fichiers.

  • MODIFICATION DES DROITS D'ACCES PAR SYMBOLES.

Cette commande nécessite deux informations supplémentaires. Elle doit d'abord savoir comment les droits d'accès doivent être modifiés et avoir connaissance du nom de fichier à modifier.

La syntaxe de la commande est la suivante :

chmod [-R] Nouveaux_droits_d'accès Fichier1 [Fichier2...]

L'option -R permet de modifier les droits d'accès pour les fichiers et sous-répertoires du répertoire courant.

La modification des droits d'accès est divisée elle-même en trois parties :

  • Quels sont les droits d'accès à modifier ? S'agit-il des modifications de l'utilisateur (u), du groupe (g) ou des autres(o),
  • Comment doivent-ils être modifiés ? Voulez-vous rajouter de nouveaux droits d'accès aux anciens(+), supprimer les droits d'accès en place (-) ? Il est également possible de redéfinir ces droits sans tenir compte des paramètres antérieurs (=).
  • Quels sont les droits d'accès à modifier individuellement ?

Voici quelques exemples de la commande chmod :

ls -l
Total 0
drwxr--r-- 2 cfpp cfpp  2 Jul 17 10:30 Buts
-rw-rw-r-- 1 cfpp cfpp 16 Jul 17 10:31 cantona
-rw-rw-r-- 1 cfpp cfpp  0 Jul 17 10:31 carnus
chmod g-w cantona
ls -l cantona
-rw-r--r--1 cfpp cfpp  16 Jul 17 10:31 cantona
chmod o+x *
ls -l
Total0
drwxr--r-x 2 cfpp cfpp  2 Jul 17 10:30 Buts
-rw-r--r-x 1 cfpp cfpp 16 Jul 17 10:31 cantona
-rw-rw-r-x 1 cfpp cfpp  0 Jul 17 10:31 carnus
chmod og-r carnus
ls -l carnus
-rw--w---x 1 cfpp cfpp  0 Jul 17 10:31 carnus
chmod u+x,og-r cantona
ls -l cantona
-rwx-----x 1 cfpp cfpp  16 Jul 17 10:31 cantona


  • MODIFICATION DES DROITS D'ACCES EN BASE 8.

La deuxième forme de la commande chmod est à première vue plus complexe quoiqu'elle soit aussi simple que sous la forme symbolique.

Chmod [-R] Nombre_en_base_8 Fichier [Fichier2...]

Avec ce chiffre en base 8, les autorisations d'accès sont redéfinies sans que la commande ne prête attention aux anciens paramètres.

Pour former ces chiffres en base 8, il faut affecter des numéros aux droits d'accès individuels :

Propriétaire Groupe Reste du monde
r     w    x

400 200 100

r w x

40 20 10

r w x

4 2 1

Les nouveaux droits d'accès pour un fichier est la résultante de la somme de ces chiffres.

Ainsi, pour affecter les droits de lecture/écriture au seul propriétaire, de lecture seule pour le groupe et les autres au fichier carnus, vous taperez la commande

chmod 644 carnus

L'autorisation en lecture/écriture du propriétaire donne la somme de 600, l'accès en lecture seule pour le groupe 40 et de 4 pour le reste du monde.

Exemples :

ls -l
Total0
drwxr--r-- 2 cfpp cfpp  2 Jul 17 10:30 Buts
-rw-rw-r-- 1 cfpp cfpp 16 Jul 17 10:31 cantona
-rw-rw-r-- 1 cfpp cfpp  0 Jul 17 10:31 carnus
chmod 400 cantona
ls -l cantona
-r-------- 1 cfpp cfpp 16 Jul 17 10:31 cantona
chmod 644 carnus
ls -l carnus
-rw-r--r-- 1 cfpp cfpp 16 Jul 17 10:31 carnus


VALEURS PAR DEFAUT DES DROITS D'ACCES.

la commande umask

Chaque fichier ou répertoire nouvellement créé est équipé dès le départ de certaines autorisations d'accès.

Elles sont fonction des désirs des utilisateurs. Ils se serviront de la commande umask suivie, comme pour la commande chmod, d'un nombre en base 8 pour fixer les autorisations d'accès à un nouveau fichier ou répertoire.

La logique négative de la commande umask rend sa compréhension moins évidente.

UNIX part du principe que tous les fichiers normaux et répertoires nouveaux sont affectés des droits d'accès maximum. Ceci signifie que pour :

un répertoire rwxrwxrwx (777)
un fichier rw-rw-rw- (666)

Entre parenthèses, le chiffre représente les droits d'accès en base 8.

Dans le masque des droits d'accès, tous les chiffres entre parenthèses et en base 8 sont soustraits des droits d'accès maximum.

Si vous souhaitez un droit d'accès en lecture/écriture pour le propriétaire et un accès en lecture seule pour le groupe et les autres, vous utiliserez :

masque maximum rw-rw-rw- (666)
masque désiré rw-r--r-- (644)
masque à retirer  ----w--w-(022)

L'appel de la commande umask se présentera sous la forme :

umask 022

Sans paramètre la commande umask donne la valeur actuelle de protection des fichiers et répertoires.

Ainsi, tous les nouveaux fichiers créés seront dotés des autorisations d'accès 644 en base 8.

Pour les nouveaux répertoires, le chiffre à employer sera de 755.

masque maximum rwxrwxrwx (777)
masque désiré rwxr-xr-x (755)
masque à retirer  ----w--w-(022)

L'important est de se souvenir que ces nouveaux paramètres ne sont valables que pour les fichiers nouvellement créés. Pour les fichiers existants, seule le commande chmod pourra le faire.

CHANGEMENT DE PROPRIETAIRE ET DE GROUPE.

chown et chgrp

Ces droits d'accès ne forment qu'une petite partie du système de protection d'UNIX. Sans les numéros d'utilisateur et numéros de groupe, ces autorisations d'accès n'auraient pas de sens.

Bien que certains systèmes UNIX empêchent de modifier les numéros d'utilisateur par la commande chown ou les numéros de groupe par la commande chgrp, ces commandes font partie du domaine des droits d'accès.

Ces commandes sont utilisées de manière intensive par l'administrateur de votre système.

La syntaxe des commandes chown et chgrp est la suivante :

chown [-R] Nouvel_Utilisateur Fichier [Fichier2...]
chgrp [-R] Nouveau_Groupe Fichier [Fichier2...]

L'option -R permet de modifier le propriétaire ou le groupe de manière récursive.

Comme premier paramètre, les deux commandes demandent le nom du nouveau propriétaire ou du nouveau groupe auquel le fichier doit être affecté.

Dans ces deux commandes, le système vérifie ensuite l'existence de cet utilisateur ou du groupe.

Il faut noter que les nouveaux systèmes UNIX permettent l'utilisation de la commande chown pour modifier à la fois le propriétaire et le groupe simultanément.

La syntaxe de cette commande chown est la suivante :

chown [-R] Nouvel_Utilisateur:Nouveau_Groupe Fichier [Fichier2...]

Affectation de fichier.

Seul le propriétaire du fichier peut décider de confier ce fichier à un nouvel utilisateur en qualité de nouveau propriétaire. Les exemples suivants vous montrent les possibilités des commandes chown et chgrp :

ls -l
Total 0
drwxr--r-- 2 cfpp cfpp 2 Jul 17 10:30 Buts
-rw------- 1 cfpp cfpp 16 Jul 17 10:31 cantona
-rw-r--r-- 1 cfpp cfpp 16 Jul 17 10:31 carnus
chown root cantona
ls -l cantona
-rw------- 1 root cfpp 16 Jul 17 10:31 cantona
chgrp sys cantona
cantona : not owner
rm cantona
cantona : 600 mode ? n
chgrp sys carnus
ls -l carnus
-rw-r--r-- 1 cfpp sys 16 Jul 17 10:31 carnus

Un fichier affecté à un nouveau propriétaire ne change pas de place dans l'arborescence du fait de ce transfert.

Avec la commande ls, le fichier apparaît avec le nom de son nouveau propriétaire. Les autorisations d'accès n'en sont pas modifiées non plus.

Si le fichier avait des autorisations d'accès de 600 auparavant, celles-ci restent en place à l'identique.

En cas de suppression de ce fichier, la commande rm a un nouveau comportement car elle demande dans ce cas :

cantona : mode 600 ?

Cette question contient en fait deux informations :

  • elle montre d'abord que le fichier n'appartient pas à l'utilisateur qui cherche à le supprimer bien que ne rien ne s'oppose à sa destruction,
  • en second lieu, la question affiche les autorisations d'accès en base 8.

Si vous répondez par l'affirmative (yes ou y), le système essaiera de supprimer ce fichier. Il en ressort que la capacité à supprimer un fichier ne dépend pas de l'autorisation d'accès en écriture d'un fichier mais des autorisations d'accès sur le répertoire