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: your root password
[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 13-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.
 | Votre groupe par défaut |
|---|
| | N'oubliez pas que, par défaut, votre groupe
était le nom de connexion choisi.
|
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 :
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 :
r -- il est possible de lire le fichier
w -- il est possible d'écrire dans le fichier
x -- il est possible d'exécuter le fichier (s'il s'agit d'un programme)
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 13-17).
[newuser@localhost newuser]$ ls -l tennis.txt
-rw-rw-r-- 1 newuser newuser 150 Mar 19 08:08 tennis.txt
[newuser@localhost newuser]$
|
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 peut,
par exemple, que lire le fichier
(r--).
 | Des 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 :
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 :
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 13-18).
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 toutes les autorisations
d'accès à tennis.txt (bien
qu'il ne s'agisse que d'une liste de courses sommaire), nous
pouvons utiliser la commande chmod pour
retirer les autorisations de lecture et d'écriture de la
manière suivante :
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.
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. Cependant,
comme le fichier nous appartient, nous pouvons toujours changer
l'autorisation pour nous permettre l'accès en lecture et
en écriture voir la Figure 13-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]$
|
Voici quelques exemples courants de paramètres pouvant
être utilisés avec chmod :
g+w -- ajoute un accès en
écriture pour le groupe
o-rw -- retire toutes les autorisations
pour les autres
u+x -- autorise le propriétaire du
fichier à exécuter ce dernier
a+rw -- autorise tout le monde à
lire et à écrire dans le fichier
ug+r -- autorise le propriétaire
et le groupe à lire le fichier
g=rx -- autorise le groupe à lire
et à exécuter seulement (et pas à
écrire)
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 :
Mais… si nous n'autorisons pas les "autres"
à exécuter tigger, peu importe qui possède
un accès en lecture ou en écriture car personne ne
pourra entrer dans le répertoire, à moins de
connaître exactement le nom du fichier recherché.
Entrons par exemple :
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.
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".