Propriété et autorisations

Plus haut dans ce chapitre, lorsque nous avons essayé d'utiliser cd pour passer dans le répertoire de connexion root, nous avons reçu le message suivant :

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

Il s'agissait d'un exemple des fonctions de sécurité de Linux. Linux, comme UNIX, est un système multi-utilisateur et les autorisations d'accès aux fichiers permettent au système de garantir une protection contre toute mauvaise manipulation, malveillante ou accidentelle.

Si l'autorisation d'accès nous est refusée, nous pouvons exécuter la commande su pour acquérir le statut root, comme nous l'avons vu précédemment. Car toute personne connaissant le mot de passe root bénéficie d'un accès total.

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

Le passage au statut de superutilisateur n'est cependant pas toujours pratique ou judicieux car il est si facile d'endommager par erreur des fichiers de configuration importants.

Tous les fichiers et répertoires sont la "propriété" de la personne qui les a créés. Nous avons créé le fichier tennis.txt (dans notre répertoire de connexion), par conséquent, tennis.txt nous "appartient".

Cela signifie que nous pouvons spécifier qui est autorisé à lire le fichier, à écrire dans le fichier ou, s'il s'agit plutôt d'une application que d'un fichier texte, à exécuter le fichier.

La lecture, l'écriture et l'exécution constituent les trois paramètres principaux des autorisations.

Tous les utilisateurs du système étant placé à leur création dans un groupe, nous pouvons également spécifier si certains groupes disposent de droits de lecture, d'écriture ou d'exécution.

Examinons de plus près le fichier tennis.txt avec la commande ls et l'option (long) -l (voir la Figure 15-16).

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

Un certain nombre de détails sont présents ici. Nous pouvons voir qui peut lire (r) et écrire sur le fichier (w), de même que la personne qui l'a créé (newuser) et le groupe auquel son propriétaire (newuser) appartient.

TuyauVotre groupe par défaut
 

N'oubliez pas que, par défaut, votre groupe était le nom de connexion choisi.

Figure 15-16. Autorisations pour tennis.txt

Les autres informations figurant à droite du groupe incluent le nom du fichier, la date et l'heure de sa création ainsi que sa taille.

Comment tous ces tirets et caractères sont-ils organisés ? Ce n'est pas aussi compliqué qu'il n'y paraît. Passons à une analyse plus détaillée :

-rw-rw-r--
	  

Cette colonne comporte dix emplacements. Le premier représente le type de fichier. Les neuf autres sont 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 le fichier appartient et "autres", c'est-à-dire les utilisateurs et les groupes autres que le propriétaire du fichier (newuser) et les membres de son groupe (également appelé newuser).

Développons un peu les paramètres de ce fichier :

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

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

Au-delà du premier élément, nous verrons l'un des caractères ci-dessous dans les trois ensembles suivants :

Si la section propriétaire, groupe ou autres contient un tiret, cela signifie qu'une autorisation particulière n'a pas été accordée.

Examinons à nouveau la première colonne de tennis.txt et identifions les autorisations correspondantes (voir la Figure 15-17).

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

Figure 15-17. Présentation détaillée des autorisations

Le propriétaire du fichier, newuser, a l'autorisation de lire et de modifier le fichier ; il ne s'agit pas d'un programme, de sorte que newuser n'a pas l'autorisation de l'exécuter. Le groupe, newuser, a également l'autorisation de lire et de modifier tennis.txt. Tout comme la notation de programme pour l'utilisateur newuser, il n'y a pas d'autorisation d'exécution pour le groupe newuser.

Dans la dernière série, nous pouvons voir que ceux qui ne sont pas l'utilisateur newuser ou ne font pas partie du groupe newuser peuvent lire le fichier, mais ne peuvent ni le modifier ni l'exécuter.

Nous pouvons utiliser la commande chmod pour changer les autorisations d'un fichier.

Travaillons un peu plus sur tennis.txt afin de changer les autorisations à l'aide de la commande chmod.

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

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

Tant que nous sommes les propriétaires du fichier -- ou que nous sommes connectés au compte root -- nous pouvons changer les autorisations en combinant librement les paramètres utilisateur, groupe et autres.

Désormais, le propriétaire (à savoir nous) et notre groupe (newuser) peuvent lire et modifier le fichier.

Toute personne extérieure à notre groupe ne pourra lire que le fichier (r--).

AttentionDes autorisations sont nécessaires
 

N'oubliez pas que les autorisations d'accès au fichier constituent une fonction de sécurité. Chaque fois que vous accordez des droits de lecture, d'écriture et d'exécution, vous augmentez le risque de mauvaise manipulation. En règle générale, il vaut mieux éviter d'autoriser le reste du monde à lire ou à écrire dans vos fichiers.

Dans ce cas toutefois, disons que nous voulons autoriser tout utilisateur à écrire dans le fichier pour qu'il puisse le lire, l'annoter et le sauvegarder. Cela signifie que nous devrons changer la section "autres" des autorisations d'accès au fichier.

Comme nous sommes les propriétaires du fichier, nous n'avons pas besoin pour cela d'exécuter la commande su pour acquérir le statut root. Commençons par regarder le fichier. A l'invite du shell, entrez :

ls -l tennis.txt
	  

ce qui nous donne les informations suivantes sur le fichier :

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

Entrez maintenant :

chmod o+w tennis.txt
	  

Pour vérifier les résultats, nous pouvons de nouveau afficher la liste détaillée du fichier. Ce dernier se présente désormais comme suit :

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

Voici le résultat : tout le monde peut désormais lire et écrire dans le fichier (Figure 15-18).

Figure 15-18. Changement d'autorisations pour tennis.txt

En entrant o+w, nous avons déclaré "pour la section autres, ajouter l'autorisation d'écriture au fichier tennis.txt."

Si nous voulons supprimer les autorisations d'accès en lecture et écriture au fichier tennis.txt (bien qu'il ne s'agisse que d'une liste de courses sommaire), nous pouvons utiliser la commande chmod pour supprimer les autorisations de lecture et d'écriture de la manière suivante :

chmod go-rw tennis.txt
	  

et le résultat sera :

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

En entrant go-rw, nous avons déclaré "pour le groupe et pour les autres, retirer les autorisations de lecture et d'écriture pour le fichier tennis.txt."

Vous pouvez considérer ces paramètres comme une sorte de sténographie que vous pouvez utiliser pour changer des autorisations avec chmod ; en effet, tout ce que vous avez à faire, c'est de vous souvenir de quelques symboles et lettres avec la commande chmod.

Voici une liste de ce que cette sténographie représente :

Identités

u -- l'utilisateur qui possède le fichier (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 en lecture

w -- accès en écriture

x -- accès en exécution

Actions

+ -- ajoute l'autorisation

- -- retire l'autorisation

= -- en fait l'autorisation unique

Voulez-vous faire un essai ? Retirons à tout le monde toutes les autorisations pour le fichier tennis.txt.

chmod a-rw tennis.txt
	  

Maintenant, vérifions si nous pouvons lire le fichier :

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

Nous pouvions nous douter que ça marcherait ; nous ne pouvons même pas accéder au fichier. Mais puisque le fichier nous appartient, nous pouvons toujours modifier ses autorisations pour nous octroyer l'accès en lecture et écriture (voir la Figure 15-19).

[newuser@localhost newuser]$ chmod u+rw tennis.txt
[newuser@localhost newuser]$ cat tennis.txt
acheter des tennis
puis aller à la boutique de café
puis acheter du café
puis ramener le café à la maison
enlever les chaussures
mettre les tennis
faire du café
souffler !
[newuser@localhost newuser]$
	  

Figure 15-19. Retrait et restauration d'autorisations

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

En ajoutant l'option R, nous pouvons changer les autorisations pour les arborescences complètes de répertoires.

Il y a un léger hic quand même car ne nous pouvons pas vraiment "exécuter" un répertoire comme une application. A la place, lorsque nous ajoutons ou retirons une autorisation d'exécution pour un répertoire, nous accordons ou refusons l'autorisation de rechercher dans ce répertoire.

Pour permettre à tout le monde de lire et d'écrire dans le répertoire tigger dans notre répertoire de connexion, il suffit d'entrer :

chmod -R a+rw tigger
	  

En revanche…, si nous n'autorisons pas d'autres utilisateurs à exécuter la commande tigger, peu importe qui dispose d'un accès en lecture ou en écriture car personne ne pourra accéder au répertoire, à moins de connaître exactement le nom du fichier recherché.

Entrons par exemple :

chmod a-x tigger
	  

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

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

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

Restaurons nos autorisations et celles de notre groupe.

chmod ug+x tigger
	  

Si nous vérifions le résultat à l'aide de ls -dl, nous verrons que l'accès à tigger ne sera refusé qu'aux "autres".