Propriété et autorisations

Précédemment dans ce chapitre, lorsque vous avez utilisé la commande cd pour accéder au répertoire de connexion root, vous avez reçu le message suivant :

[newuser@localhost newuser]$ cd /root
bash: /root: Permission denied
[newuser@localhost newuser]$

Il s'agissait d'un exemple des mesures de sécurité de Linux. Linux, tout comme UNIX, est un système multi-utilisateurs et les autorisations d'accès aux fichiers constituent l'une de ses façons de se protéger contre les manipulations de toute sorte.

L'unique manière d'y accéder lorsque l'autorisation vous est refusée est d'utiliser la commande su pour vous connecter comme root, comme nous l'avons vu précédemment car toute personne connaissant le mot de passe root jouit d'un accès complet.

[newuser@localhost newuser]$ su
Password: votre-mot-de-passe-root
[root@localhost newuser]# cd /root
[root@localhost /root]#

Il n'est pas toujours pratique, ou judicieux, de travailler en tant que superutilisateur 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. Vous, par exemple, avez créé le fichier sneakers.txt (reportez-vous à la la section intitulée Utilisation de la redirection dans votre répertoire de connexion, alors le fichier sneakers.txt vous "appartient".

Cela signifie que vous pouvez décider qui est autorisé à le lire, le modifier ou, s'il s'agit d'une application et non d'un fichier texte, l'exécuter.

La lecture, la modification et l'exécution sont les trois paramètres principaux pouvant être définis dans les autorisations d'accès au fichier.

Comme les utilisateurs sont placés dans un groupe au moment de leur création, 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 (long) (voir la Figure 10-12).

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

De nombreuses informations vous sont données dans cet exemple. Vous pouvez voir qui peut lire (r) et modifier (w) le fichier, ainsi que la personne qui l'a créé (newuser) et le groupe auquel elle appartient (newuser).

TuyauVotre groupe par défaut
 

Rappelez-vous que, par défaut, votre groupe est le même que votre nom de connexion.

Figure 10-12. 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.

-rw-rw-r--

La première colonne (montrée plus haut) affiche les autorisations courantes ; 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.

Ces trois ensembles sont : le propriétaire du fichier, le groupe auquel il appartient et "autres", qui signifie les utilisateurs et les groupes autres que le propriétaire du fichier (newuser) et les membres de son groupe (qui s'appelle également newuser).

-    (rw-)   (rw-)  (r--)    1 newuser newuser
|      |       |      |
type  prop.  groupe  autres

Le premier élément, qui indique le type de fichier, peut correspondre à l'un des éléments suivants :

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

Lorsque vous voyez un tiret dans les ensembles propriétaire, groupe ou autres, cela signifie qu'une autorisation spécifique n'a pas été accordée.

Regardez à nouveau la première colonne du fichier sneakers.txt et identifiez ses autorisations (voir la Figure 10-13).

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt
[newuser@localhost newuser]$

Figure 10-13. Présentation détaillée des autorisations

Le propriétaire du fichier (newuser dans ce cas) a l'autorisation de le lire et de le modifier. Il ne s'agit pas d'un programme, alors newuser n'a pas l'autorisation de l'exécuter. Le groupe, newuser, est également autorisé à lire et modifier sneakers.txt. Tout comme pour le propriétaire newuser, le groupe newuser n'est pas autorisé à exécuter ce fichier.

Dans le dernier ensemble, vous pouvez voir que les utilisateurs autres que newuser ou n'étant pas membre du groupe appelé newuser peuvent lire le fichier, mais ne peuvent ni le modifier ni l'exécuter.

Nous pouvons changer les autorisations de sneakers.txt avec la commande chmod.

Le fichier original et ses autorisations initiales se présentent comme suit :

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

Si vous êtes le propriétaire de ce fichier ou ê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 autre personne ne peut que lire le fichier (r--).

AttentionLes autorisations sont nécessaires
 

N'oubliez pas que les autorisations d'accès au fichier sont des mesures de sécurité. Chaque fois que vous accordez à quelqu'un des droits de lecture, de modification ou d'exécution, vous faites augmenter les risques que les fichiers ne soient manipulés, endommagés ou éliminés. En règle générale, il est prudent de n'accorder l'autorisation de lire et modifier des fichiers qu'à ceux 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 dans la section "autres" des autorisations d'accès au fichier.

Comme vous êtes le propriétaire du fichier, vous n'avez pas à utiliser la commande su pour vous connecter en tant que root pour le faire. Jetez d'abord un coup d'oeil au fichier. A l'invite du shell, entrez :

ls -l sneakers.txt

Les informations suivantes sur le fichier s'affichent :

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

Maintenant, entrez ce qui suit :

chmod o+w sneakers.txt

Pour vérifier les résultats, faites afficher la liste des informations de nouveau. Le fichier ressemble maintenant à ceci :

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

Tout le monde peut désormais lire et modifier le fichier (voir la Figure 10-14).

Figure 10-14. Changements des autorisations d'accès du fichier sneakers.txt

La commande o+w indique au système que vous désirez donner aux autres utilisateurs la permission de modifier le fichier sneakers.txt.

Pour enlever les autorisations de lecture et de modification du fichier sneakers.txt, utilisez la commande chmod de cette façon :

chmod go-rw sneakers.txt

Voici à quoi ressemblera le résultat :

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

Lorsque vous entrez go-rw, vous indiquez au système de retirer les autorisations de lecture et de modification du fichier sneakers.txt pour le groupe et les autres utilisateurs.

Vous pourriez considérer ces paramètres comme une forme de sténographie que vous pouvez utiliser pour modifier des autorisations d'accès aux fichiers avec la commande chmod car vous n'avez qu'à vous rappeler de quelques symboles et lettres à y ajouter.

Voici une liste de la signification de cette sténo :

Identités

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

g — le groupe auquel appartient l'utilisateur

o — autres (ni le propriétaire, ni le groupe du propriétaire)

a — tous (u, g et o)

Autorisations

r — accès à la lecture

w — accès à la modification

x — accès à l'exécution

Actions

+ — ajoute l'autorisation

- — enlève l'autorisation

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

NoteAutorisation supplémentaire
 

t est un autre symbole d'autorisation, pour le bit de rappel. Pour qu'un utilisateur puisse enlever ou renommer un fichier auquel est attaché un bit de rappel, il doit être le propriétaire du répertoire, avoir la permission de modification ou être superutilisateur (voir la la section intitulée Propriétés du fichier dans Chapitre 11).

Voulez-vous tester vos habiletés en matière d'autorisations ? Enlevez toutes les autorisations du fichier sneakers.txt et ce, pour tout le monde.

chmod a-rwx sneakers.txt

Maintenant, vérifiez si vous pouvez lire le fichier :

[newuser@localhost newuser]$ cat sneakers.txt
cat: sneakers.txt: Permission denied
[newuser@localhost newuser]$

Cela a fonctionné, mais puisque le fichier vous appartient, vous pouvez toujours changer ses autorisations (voir la Figure 10-15).

[newuser@localhost newuser]$ chmod u+rw sneakers.txt
[newuser@localhost newuser]$ cat sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!
[newuser@localhost newuser]$

Figure 10-15. Retrait et restauration d'autorisations

Voici quelques exemples courants de paramètres qui peuvent être utilisés avec chmod :

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

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 enlevez une autorisation d'exécution pour un répertoire, vous accordez ou refusez en réalité la permission d'exécuter une recherche dans le répertoire.

Pour donner à tout le monde le droit de lire et de modifier tous les fichiers du répertoire tigger dans votre répertoire de connexion, entrez :

chmod -R a+rw tigger

Toutefois… si vous n'accordez pas l'autorisation d'exécution aux autres utilisateurs pour le répertoire tigger, qu'ils aient l'accès de lecture ou de modification ne change rien car ils ne peuvent entrer dans le répertoire, à moins de connaître le nom exact du fichier recherché.

Par exemple, entrez

chmod a-x tigger

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

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

[newuser@localhost newuser]$ cd tigger
bash: tigger: Permission denied
[newuser@localhost newuser]$

Restaurez l'accès pour vous et votre groupe.

chmod ug+x tigger

Si vous vérifiez votre travail au moyen de ls -dl, vous vous apercevrez que seuls les "autres" utilisateurs se voient refuser l'accès à tigger.