Soutenez-nous

FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireFichiers et dossiersDroits 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.

Mis à jour le 5 août 2008  par Eric Berger

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
Mis à jour le 5 août 2008  par Eric Berger

La fonction fileperms() retourne les bits de permissions, au format décimal, d'un répertoire ou d'un fichier :

 
Sélectionnez
<?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 :

 
Sélectionnez
<?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.

Mis à jour le 5 août 2008  par Armatatuxa

La fonction suivante permet de traduire les bits de permissions au format symbolique. Script de vbwebprofi at gmx dot de .

 
Sélectionnez
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 :

 
Sélectionnez
drwxr-xr-x
Mis à jour le 5 août 2008  par Cyberzoide
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.