13.14. Propriété et autorisations

Précédemment dans ce chapitre, lorsque vous avez essayé de changer de répertoire pour accéder au répertoire de connexion root, vous avez reçu le message ci-dessous signifiant 'Permission refusée':

cd /root
bash: /root: Permission denied

Il s'agissait d'un exemple des fonctions de sécurité de Linux. Tout comme UNIX, Linux est un système multi-utilisateurs et les autorisations d'accès aux fichiers constituent pour le système l'un des moyens de se protéger contre les altérations malveillantes.

L'une des manières d'accéder aux fichiers lorsque l'autorisation vous est refusée consiste à utiliser la commande su pour vous connecter en tant que root, comme nous l'avons vu précédemment. En effet, toute personne connaissant le mot de passe root dispose d'un accès total aux fichiers.

Toutefois, il n'est pas toujours pratique, ni recommandé, de travailler en tant que super-utilisateur car il est facile d'endommager par erreur des fichiers de configuration importants.

Tous les fichiers et les répertoires sont la 'propriété' de la personne qui les a créés. Si vous avez par exemple créé le fichier sneakers.txt (reportez-vous à la Section 13.9.1) dans votre répertoire de connexion, ce fichier vous appartient.

De ce fait, vous pouvez décider qui est autorisé à le lire, le modifier ou (s'il ne s'agit pas d'un fichier texte mais d'une application) à l'exécuter.

La lecture, l'écriture et l'exécution sont les trois paramètres principaux pouvant être définis dans les autorisations d'accès. Comme les utilisateurs sont placés dans un groupe au moment de la création de leur compte, vous pouvez aussi spécifier quels groupes sont autorisés à lire, modifier ou exécuter un fichier.

Examinons sneakers.txt de plus près avec la commande ls et l'option -l (pour long) (reportez-vous à la Figure 13-11).

De nombreuses informations vous sont données dans cet exemple. Vous pouvez voir qui peut lire (r), modifier (w) et exécuter (x) le fichier, ainsi que la personne qui l'a créé (sam) et le groupe auquel cette personne appartient. Rappelez-vous que, par défaut, le nom de votre groupe est identique à votre nom de connexion.

Figure 13-11. Autorisations d'accès au fichier sneakers.txt

Les autres informations situées à droite du groupe indiquent la taille du fichier, la date et l'heure de sa création ainsi que son nom.

La première colonne affiche les autorisations actuelles; elle est composée de 10 emplacements. Le premier correspond au type de fichier. Les neuf autres constituent en fait trois ensembles d'autorisations pour trois catégories différentes d'utilisateurs.

Par exemple:

-rw-rw-r--

Ces trois ensembles représentent respectivement le propriétaire du fichier ('owner'), le groupe auquel il appartient ('group') et les "autres" ('others'), à savoir les autres utilisateurs du systèmes.

-    (rw-)   (rw-)   (r--) 1 sam sam 
|      |       |       | 
type  owner  group   others
      

Le premier élément précisant le type de fichier, peut correspondre à l'une des catégories suivantes:

Dans les trois ensembles qui suivent le premier élément, vous verrez l'un des éléments suivants:

Lorsque vous voyez un tiret dans la colonne propriétaire, groupe ou autres, cela signifie qu'une autorisation spécifique n'a pas été accordée. Examinez à nouveau la première colonne du fichier sneakers.txt et identifiez ses autorisations.

ls -l sneakers.txt
-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Le propriétaire du fichier (sam) a l'autorisation de le lire et de le modifier. Le groupe, sam, est également autorisé à lire et modifier (écrire) sneakers.txt. Il ne s'agit pas d'un programme, le propriétaire et le groupe n'ont donc pas l'autorisation de l'exécuter.

13.14.1. La commande chmod

Utilisez la commande chmod pour changer les autorisations. Cet exemple montre comment changer les autorisations de sneakers.txt à l'aide de la commande chmod.

Le fichier original avec ses paramètres initiaux d'autorisation se présentent comme suit:

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Si vous êtes le propriétaire de ce fichier ou si vous êtes connecté au compte root, vous pouvez changer les autorisations d'accès au fichier du propriétaire, du groupe et des autres.

Pour l'instant, le propriétaire et le groupe peuvent lire et modifier le fichier. Toute personne extérieure au groupe ne peut que lire le fichier (r--).

AttentionAttention
 

N'oubliez pas que les autorisations d'accès aux fichiers sont des mesures de sécurité. Chaque fois que vous accordez à quelqu'un des droits de lecture, d'écriture ou d'exécution, vous augmentez les risques de manipulation, d'altération ou de suppression des fichiers. En règle générale, vous ne devriez accorder l'autorisation de lecture et d'écriture qu'aux personnes qui en ont vraiment besoin.

Dans l'exemple suivant, nous voulons accorder à tous l'autorisation de modifier le fichier, afin qu'ils puissent le lire, le modifier et l'enregistrer. Cela signifie qu'il est nécessaire d'apporter des changements à la section 'autres' des autorisations d'accès au fichier.

Examinez tout d'abord le fichier. À l'invite du shell, tapez:

ls -l sneakers.txt

La commande précédente affiche les informations suivantes:

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Tapez maintenant les éléments suivants:

chmod o+w sneakers.txt

La commande o+w indique au système que vous souhaitez accorder aux autres l'autorisation de modifier le fichier sneakers.txt. Pour vérifier le résultat de vos modifications, affichez à nouveau les informations du fichier. Le fichier ressemble maintenant à l'extrait suivant:

-rw-rw-rw-    1 sam sam     150 Mar 19 08:08 sneakers.txt

Tout le monde peut désormais lire et modifier le fichier.

Pour supprimer les autorisations de lecture et d'écriture du fichier sneakers.txt utilisez la commande chmod et les autorisations de lecture et d'écriture seront retirées.

chmod go-rw sneakers.txt

En entrant go-rw, vous demandez au système d'enlever les autorisations de lecture et d'écriture du fichier sneakers.txt pour le groupe ainsi que pour les autres utilisateurs.

Le résultat de cette commande ressemblera à l'extrait ci-dessous:

-rw-------    1 sam sam    150 Mar 19 08:08 sneakers.txt

Considérez ces paramètres comme une forme de sténographie que vous pouvez utiliser pour modifier les autorisations d'accès aux fichiers à l'aide de la commande chmod; il vous suffit en effet de vous souvenir de quelques symboles et lettres à ajouter à la commande chmod.

Ci-dessous figure une liste des options abrégées et leur signification:

Identités

u — l'utilisateur qui possède le fichier (c'est-à-dire le propriétaire)

g — le groupe auquel appartient l'utilisateur

o — autres, de l'anglais 'others' (ni le propriétaire, ni le groupe du propriétaire)

a — chacun ou tous, de l'anglais 'all' (u, g, et o)

Autorisations

r — autorisation de lecture (de l'anglais 'read')

w — autorisation d'écriture (de l'anglais 'write')

x — autorisation d'exécution (de l'anglais 'execute')

Actions

+ — ajoute l'autorisation

- — supprime l'autorisation

= — fait en sorte qu'il s'agisse de l'unique autorisation

Voulez-vous tester vos connaissances en matière d'autorisations? Essayez de supprimer toutes les autorisations du fichier sneakers.txt — et ce, pour tout le monde.

chmod a-rwx sneakers.txt

Maintenant, vérifiez s'il vous est possible de lire le fichier en utilisant la commande cat sneakers.txt; cette dernière devrait renvoyer la sortie suivante:

cat: sneakers.txt: Permission denied

En supprimant toutes les autorisations, y compris la vôtre, vous êtes parvenu à verrouiller le fichier. Mais puisque le fichier vous appartient, il vous est toujours possible de restaurer les autorisations initiales à l'aide de la commande suivante:

chmod u+rw sneakers.txt

À l'aide de la commande cat sneakers.txt vérifiez que le propriétaire du fichier est bien en mesure de lire à nouveau son fichier.

Ci-dessous figurent quelques exemples courants de paramètres qui peuvent être utilisés avec chmod:

En ajoutant l'option -R, vous pouvez modifier les autorisations pour des arborescences entières de répertoires.

Toutefois, étant donné qu'il n'est pas vraiment possible "d'exécuter" un répertoire comme on exécute une application, lorsque vous ajoutez ou supprimez une autorisation d'exécution pour un répertoire, vous accordez ou refusez en réalité la permission d'exécuter une recherche dans ce répertoire.

Si vous n'accordez pas l'autorisation d'exécution aux autres utilisateurs pour le fichier tigger, l'attribution ou le refus de l'autorisation de lecture ou d'écriture n'a pas vraiment d'importance. En effet, ils ne pourront de toute façon pas entrer dans le répertoire, sauf s'ils connaissent le nom exact du fichier recherché.

Tapez par exemple:

chmod a-x tigger

pour retirer l'autorisation d'exécution à tout le monde.

Voici maintenant ce qui se passe lorsque vous essayez d'utiliser la commande cd pour accéder à tigger:

bash: tigger: Permission denied

Restaurez ensuite l'accès pour vous et votre groupe:

chmod ug+x tigger

Si vous vérifiez maintenant le résultat au moyen de ls -l, vous vous apercevrez que seuls les "autres" utilisateurs se voient refuser l'accès au répertoire tigger.

13.14.2. Modification des autorisations par des paramètres numériques

Vous vous souvenez certainement de notre analogie à la méthode de sténographie de chmod. Cette partie traite d'une autre manière de modifier les autorisations facilement, bien qu'à première vue, la procédure semble peut-être un peu complexe.

Revenez aux autorisations initiales du fichier sneakers.txt:

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Chaque paramètre d'autorisation peut être représenté par une valeur numérique:

Lorsque ces valeurs sont additionnées, le total est utilisé pour définir des autorisations précises. Par exemple, si vous voulez des autorisations en lecture et écriture, vous aurez une valeur de 6; 4 (r: lecture) + 2 (w: écriture) = 6.

Tels sont les paramètres des autorisations numériques du fichier sneakers.txt:

 -  (rw-)   (rw-)  (r--)
      |       |      |
    4+2+0   4+2+0  4+0+0

Le total pour l'utilisateur est six, celui pour le groupe est six et le total pour les autres est quatre. Le paramètre des autorisations donc lu comme 664.

Si vous souhaitez apporter des modifications aux autorisation du fichier sneakers.txt afin que les utilisateurs de votre groupe n'aient pas un accès en écriture, mais puissent tout de même le lire, il suffit de supprimer cet accès en soustrayant deux (2) à cet ensemble de chiffres.

Les valeurs numériques deviendraient alors six, quatre et quatre (644).

Pour appliquer ces nouveaux paramètres, tapez:

chmod 644 sneakers.txt

Vérifiez maintenant ces changements en listant le fichier. Pour ce faire, tapez:

ls -l sneakers.txt

La sortie suivante devrait s'afficher:

-rw-r--r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Maintenant, ni le groupe, ni les autres utilisateurs ne bénéficient d'une autorisation en écriture pour le fichier sneakers.txt. Pour restaurer l'autorisation en écriture du groupe pour ce fichier, ajoutez la valeur w (2) au deuxième ensemble d'autorisations.

chmod 664 sneakers.txt

AvertissementAvertissement
 

En donnant aux autorisations la valeur 666, vous autoriserez tout le monde à lire ainsi qu'à modifier un fichier ou un répertoire. Avec la valeur 777, tout le monde pourra lire, modifier et exécuter un fichier ou un répertoire. Ces autorisations peuvent provoquer la manipulation volontaire ou involontaire de fichiers importants; il est donc généralement déconseillé de les utiliser.

Ci-après figure une liste de certains paramètres courants, de valeurs numériques et de leur signification:

Ci-dessous figurent quelques paramètres courants pour les répertoires: