Droits Unix sur les fichiers
Dans un environnement Unix tous est fichiers (les
fichiers,
les repertoires, les peripheriques ...)
un fichier se presente comme ceci:
-rw------- 1
fred
fred 40K
jun
9 15:46 Plan.pdf
les droits sont representés par les 10 premiers caracteres:
-rw-------
le premier represente le type de fichiers:
- : fichier standart
d : repertoire
(
drwxr-xr-x
1 root
root
0 jan 1 1970 target0/ )
l : lien
( lr-xr-xr-x 1
root
root 11 jui
24
14:11 amidi -> sound/amidi )
b : peripherique de type bloc
( brw------- 1
root
root 3, 0 jan
1
1970 generic )
c : peripherique de type
caractere
( crw------- 1
fred
root 5, 1 jui 24 14:13
console
)
s : socket
( srwx------ 1
fred
root
0
jui 24 14:11 gpmctl= )
p : pipe
( prw------- 1
root
root
0
jui 24 2003 initctl| )
les 9 autres representent les droits repartis en
trois
groupes : l'utilisateur (le proprietaire) (u) le groupe (g) et les
autres
(o)
la 2° colone indique le nombre de fichier dans ces sous fichiers
(ici
1 car c'est un fichier satndart)
la 3° colone donne le proprietaire
la 4° colone donne le groupe
ici le propriaitaire est fred idem pour le groupe
la 5° colone donne la taille
le reste donne la date de creation (ou de derniere modification ) ainsi
que
le nom du fichier
Les droits:
sur les fichiers standarts:
r: permet de lire le contenu d'un fichier
w: permet d'ecrire dans le fichier
x: permet l'excution du fichier si ce fichier est
executable
sur les repertoires:
r: permet de lister le contenu d'un repertoire
w: permet de creer des fichiers ou de les supprimer
(dans
le repertoire)
x: permet de parcourir le repertoire , sans ce droit
un
repertoire n'est pas accessible.
Les autres droits:
les 3 autres droits sont :
le sticky bit
le bit setGid
le bit setUid
Le setGid permet l'heritage:
ce droit est materialisé par un s (ou S si le droit x
n'est
pas present)
drwxrwsr-x
2 fred
maison
4.0K jui 24 15:04 rep1/
ceci permet de creer des fichiers par tous les utilisateurs du groupe maison,
ces fichiers auront comme groupe commun maison, le proprietaire
reste
le createur:
drwxrwsr-x
2 fred
maison
4.0K jui 24 15:04 ./
drwxr-xr-x 3 fred
fred
4.0K jui 24 15:04 ../
-rw-r--r-- 1 fred
maison
0 jui 24 15:04 fic_fred
-rw-r--r-- 1 nathalie
maison
0 jui 24 15:03 fic_nath
Attention dans ce cas tous les membres de maison peuvent
detruire
tous les fichiers de rep1/ car ils ont le droits w sur ce repertoire
Le setUid permet l'execution d'un fichier en tant que proprietaire:
ce droit est materialisé par un s (ou S si le droit x
n'est
pas present)
-rwsr--r--
1 nathalie maison
0
jui 24 15:13 fic.exe*
Le sticky bit: seulement le proprietaire peut effacer ses fichiers:
ce droit est materialisé par un t (ou T si le droit
x n'est
pas present)
on a:
[nathalie@linuxfred rep1]$ lla
total 8.0K
drwxrwsr-t 2
fred
maison 4.0K jui 24 15:19 ./
drwxr-xr-x 3 fred
fred
4.0K jui 24 15:04 ../
-rw-r--r-- 1 fred
maison
0 jui 24 15:19 fic_fred
-rw-r--r-- 1 nathalie
maison
0 jui 24 15:19 fic_nath
si l'utilisateur nathalie essaye de supprimer le fichier fic_fred:
[nathalie@linuxfred rep1]$ rm
fic_fred
rm: détruire un fichier protégé en écriture
fichier
régulier vide `fic_fred'? o
rm: Ne peut enlever `fic_fred': Operation not permitted
Attention dans ce cas l'utilisateur fred peut supprimer le fichier
fic_nath
car il possede le droit w sur le repertoire courant (rep1/ )
Les commandes utiles pour modifier les droits sur les fichiers:
chmod: change les droits
chown: change le proprietaire et le groupe
chgrp: change le groupe
le changement peut se faire avec les droits du style : chmod u+x rep ou
chmod
g-x rep
ou encore
en octal, sachant que :
r =4
w =2
x =1
setUid = 4000
setGid = 2000
sticky bit = 1000
0 permet de ne rien changer
donc un fichier avec ces droits:
drwxr-xr-x 3
fred
fred 4.0K jui 24 15:31
testdroits/
en octal : 755
et :
drwsr-xr-x 3
fred
fred 4.0K jui 24 15:31
testdroits/
en octal : 4755
avec chmod:
chmod 755 testdroits ou encore chmod 4755 testdroits