Linux est un sytème multi-utilisateurs. De ce fait, tout le monde ne peut pas tout faire, excepté l’administrateur (root), qui à le droit de lire et d’écrire sur tous les fichiers et tous les répertoires, ainsi que d’executer n’importe quelle tâche inhérente au système. Il faut donc établir des règles et a fortiori donner des privilèges à certains utilisateurs et en priver à d’autres.
Droit d’accès aux fichiers
Nous avions vu lors de la courte introduction à Linux que lorsque nous répertorions les fichiers à l’aide de la commande
ls -lnous avions une multitude d’informations concernant ces fichiers. En l’occurrence, nous avions vu que la commande suivante renvoyait
- Code:
-
nadir@ipowerht:~/Desktop/CV $ ls -l
total 96
-rw-r--r-- 1 nadir nadir 8 2005-03-29 11:08 cvnadir.aux
-rw-r--r-- 1 nadir nadir 4488 2005-03-29 11:08 cvnadir.dvi
-rw-r--r-- 1 nadir nadir 4514 2005-03-29 11:08 cvnadir.log
-rw-r--r-- 1 nadir nadir 63856 2005-03-29 11:08 cvnadir.pdf
-rw-r--r-- 1 nadir nadir 6778 2005-03-29 11:08 cvnadir.tex
Ce qui nous intéresse ici ce sont la première
(-rw-r—r--), la troisième et la quatrième colonne(toute les deux contiennent
nadir). La première colonne est relative aux
droits du fichier, la troisième au nom du
propriétaire du fichier, enfin la quatrième au nom du
groupe propriétaire. L’objectif de cette page est donc d’étudier de manière détaillée les droits d’accès aux fichiers, leur appartenance ainsi que la modification de ces droits.
Description
Regardons un autre exemple que celui présenté plus haut
- Code:
-
root@port-soualem:/var/www# ls -l
total 32
drwxrwxr-- 2 www-data nadir 4096 2005-06-20 20:56 cpp
drwxrwxr-- 3 www-data nadir 4096 2005-06-20 20:54 hardware
drwxrwxr-- 2 www-data nadir 4096 2005-05-16 16:00 images
-rwxrwxr-- 1 www-data nadir 3463 2005-06-24 17:20 index.php
drwxrwxr-- 4 www-data nadir 4096 2005-06-17 22:21 latex
drwxrwxr-- 2 www-data nadir 4096 2005-06-24 19:13 linux
drwxrwxr-- 2 www-data nadir 4096 2005-06-24 17:28 math
drwxrwxr-- 2 www-data nadir 4096 2005-06-24 17:16 style
Regardons la première colonne. Celle ci fournit des informations sur les droits.
- le premier caractère de cette colonne est un
d, un - ou un
l,
d signifie qu’il s’agit la d’un répertoire(example : images est un répertoire), - signifie qu’il s’agit d’un fichier(example : index.php est un fichier) et l un lien
- ensuite il y a trois groupements de trois caractères(rwx,r—,r-x, etc ...) soit neuf caractères au total : ce sont les groupements de
permission- pour un fichier
r signifie
readable(en lecture),
w writable(en écriture) et
x executable- pour un répertoire
r signifie
readable(lire le contenu du réperoire avec ls ou dir), w writable(création, déplacement et suppression de fichiers) et
x executable(accès aux fichiers commande cd)
Par exemple, r-x signifie que le fichier est en lecture et executable mais pas en écriture. Un fichier possèdant l’attribut rw- est en lecture et en écriture mais pas executable, etc... Le premier groupement correspond au droit du propriétaire(
user), le second au droit du groupe propriétaire(
group) le troisième aux autres(
others). Le fichier index.html est
-
rwx lecture + écriture + executable pour le propriétaire(user)
-
rwx lecture + écriture + executable pour le groupe(group)
-
r— lecture pour les autres(others).
Le système de fichiers est agencée de telle manière à ce qu’un fichier ou répertoire appartienne à un utilisateur(propriétaire) et à un groupe. Tout fichier possède trois groupements :
-
u user, c’est à dire le propriétaire
-
g group le groupe
-
o others et les autres.
La réunion de ces trois groupements forment l’ensemble de tous les utilisateurs que l’on définit par a(all users). On définit également la notion de
groupe primaire de l’utilisateur(propriétaire) qui n’est rien d’autre en fait que le groupe contenant uniquement l’utilisateur. C’est le cas par exemple du répertoire suivant
- Code:
-
drwxr-xr-x 2 nadir nadir 4096 2005-05-20 13:03 TMP
TMP est un répertoire(d) dont le propriétaire est nadir et dont le groupe est primaire(le groupe est nadir).
RemarquesLe propriétaire et le groupe propriétaire peuvent être différents, en effet le groupe propriétaire n’est pas forcément le groupe primaire du propriétaire (groupe contenant que le propriétaire) et le propriétaire n’est pas forcément membre du groupe. Lorsque l’on crée un fichier ou un répertoire le propriétaire est celui qui l’a crée et le groupe est le groupe primaire de l’utilisateur.
Changement de propriétés
Changement de propriétaire
La commande
chown(change file owner) permet de changer de propriétaire. Seul le propriétaire actuel du fichier ou du répertoire peut lancer cette commande. À noter évidemment que le super-utilisateur root possède tous les droits sur tous les fichiers ! On l’utilise comme suit :
chown nouvel_utilisateur nom_de_fichierpour un fichier. Pour changer le propriétaire d’un répertoire et de ses sous-répertoires, on utilise l’option -
Rchown -R nouvel_utilisateur nom_de_repertoireRegardons l’exemple suivant. Je crée un fichier fonction.php. Je suis
root.
- Code:
-
root@port-soualem:/root# touch fonction.php
Nous vérifions le propriétaire et le groupe du fichier
- Code:
-
root@port-soualem:/root# ls -l fonction.php
-rw-r--r-- 1 root root 0 2005-06-26 15:58 fonction.php
root est bien le propriétaire et le groupe primaire. root va donner la propriété du fichier fonction.php à nadir
- Code:
-
root@port-soualem:/root# chown nadir fonction.php
vérifions les droits
- Code:
-
root@port-soualem:/root# ls -l fonction.php
-rw-r--r-- 1 nadir root 0 2005-06-26 15:58 fonction.php
le propriétaire est à présent nadir. Regardons dans le cas d’un répertoire. On crée en root un répertoire nommé PHP dans lequel on crée un fichier test.php
- Code:
-
root@port-soualem:/root# mkdir PHP
root@port-soualem:/root# cd PHP/
root@port-soualem:/root/PHP# touch test.php
root@port-soualem:/root/PHP# cd ..
On vérifie les droits du répertoire et du fichier crée
- Code:
-
root@port-soualem:/root# ls -Rl
total 16
-rw-r--r-- 1 root root 188 2005-03-21 19:48 dbootstrap_settings
drwxr-xr-x 2 root root 4096 2005-03-29 09:04 Desktop
-rw-r--r-- 1 nadir root 0 2005-06-26 15:58 fonction.php
-rw-r--r-- 1 root root 1336 2005-03-21 19:48 install-report.template
drwxr-xr-x 2 root root 4096 2005-06-26 17:30 PHP
./Desktop:
total 0
./PHP:
total 0
-rw-r--r-- 1 root root 0 2005-06-26 17:30 test.php
le propriétaire du répertoire PHP et du fichier test.php est root. Changeons de propriétaire, nadir sera désormais propriétaire.
- Code:
-
root@port-soualem:/root# chown -R nadir PHP
root@port-soualem:/root# ls -Rl
total 16
-rw-r--r-- 1 root root 188 2005-03-21 19:48 dbootstrap_settings
drwxr-xr-x 2 root root 4096 2005-03-29 09:04 Desktop
-rw-r--r-- 1 nadir root 0 2005-06-26 15:58 fonction.php
-rw-r--r-- 1 root root 1336 2005-03-21 19:48 install-report.template
drwxr-xr-x 2 nadir root 4096 2005-06-26 17:30 PHP
./Desktop:
total 0
./PHP:
total 0
-rw-r--r-- 1 nadir root 0 2005-06-26 17:30 test.php
nadir est bien devenu le propriétaire du répertoire PHP ainsi que du fichier test.php
...