FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
Le chmod est le droit d'accès à un fichier ou à un dossier. Il s'exprime par une série de trois chiffres (précédés d'un zéro).
Il définit le genre d'accès :
- lecture
- écriture
- exécution
pour chaque genre d'utilisateurs :
- propriétaire
- membres du groupe
- tout le monde
A chaque combinaison genre d'accès / utilisateur correspond un n° chmod.
Lien : Tutoriel UNIX de Hugo Etiévant : Droits d'accès aux fichiers
Principe Le chmod se calcule de la manière suivante :
Propriétaire | Groupe | Tout le monde | chmod | |
---|---|---|---|---|
Lecture | 4 | 4 | 4 | 444 |
Écriture | 2 | 2 | 2 | 222 |
Exécution | 1 | 1 | 1 | 111 |
chmod | 7 | 7 | 7 | 777 |
Exemple Si on souhaite donner tous les droits au propriétaire et seulement l'accès en lecture au groupe et à tous les utilisateurs, le chmod se construira de la façon suivante :
Propriétaire | Groupe | Tout le monde | chmod | |
---|---|---|---|---|
Lecture | 4 | 4 | 4 | 444 |
Écriture | 2 | 0 | 0 | 200 |
Exécution | 1 | 0 | 0 | 100 |
chmod | 7 | 4 | 4 | 744 |
La fonction fileperms() retourne les bits de permissions, au format décimal, d'un répertoire ou d'un fichier :
<?php
$fichier
=
"mon_fichier.txt"
;
$dec_perms
=
fileperms($fichier
);
// donne 33206
?>
L'argument %o de la fonction sprintf() convertit ces mêmes bits en base octale :
<?php
$octal_perms
=
sprintf("%o"
,
$dec_perms
);
// donne 10066
$unix_perms
=
(substr($octal_perms
,
3
));
// retourne la chaîne à partir du quatrième caractère
echo $unix_perms
;
?>
retourne : 666.
La fonction suivante permet de traduire les bits de permissions au format symbolique. Script de vbwebprofi at gmx dot de .
function mfunGetPerms($in_Perms
) {
$sP
;
if($in_Perms
&
0x1000
) // FIFO pipe
$sP
=
'
p
'
;
elseif($in_Perms
&
0x2000
) // Special character
$sP
=
'
c
'
;
elseif($in_Perms
&
0x4000
) // Directory
$sP
=
'
d
'
;
elseif($in_Perms
&
0x6000
) // Block special
$sP
=
'
b
'
;
elseif($in_Perms
&
0x8000
) // Regular
$sP
=
'
&
'
;
elseif($in_Perms
&
0xA000
) // Symbolic Link
$sP
=
'
l
'
;
elseif($in_Perms
&
0xC000
) // Socket
$sP
=
'
s
'
;
else // UNKNOWN
$sP
=
'
u
'
;
// owner
$sP
.=
(($in_Perms
&
0x0100
) ?
'
r
'
:
'
&
'
) .
(($in_Perms
&
0x0080
) ?
'
w
'
:
'
&
'
);
$sP
.=
(($in_Perms
&
0x0040
) ?
(($in_Perms
&
0x0800
) ?
'
s
'
:
'
x
'
) :
(($in_Perms
&
0x0800
) ?
'
S
'
:
'
&
'
));
// group
$sP
.=
(($in_Perms
&
0x0020
) ?
'
r
'
:
'
&
'
) .
(($in_Perms
&
0x0010
) ?
'
w
'
:
'
&
'
);
$sP
.=
(($in_Perms
&
0x0008
) ?
(($in_Perms
&
0x0400
) ?
'
s
'
:
'
x
'
) :
($in_Perms
&
0x0400
) ?
'
S
'
:
'
&
'
));
// world
$sP
.=
(($in_Perms
&
0x0004
) ?
'
r
'
:
'
&
'
) .
(($in_Perms
&
0x0002
) ?
'
w
'
:
'
&
'
);
$sP
.=
(($in_Perms
&
0x0001
) ?
(($in_Perms
&
0x0200
) ?
'
t
'
:
'
x
'
) :
(($in_Perms
&
0x0200
) ?
'
T
'
:
'
&
'
));
return $sP
;
}
echo mfunGetPerms(fileperms('
monfichier.jpg
'
));
Exemple :
drwxr-xr-x