FAQ PHP

FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
Sommaire→Fichiers et dossiers→Droits d'accès aux fichiers et dossiers
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


