Dans les systèmes de type Linux et Unix, les autorisations de fichiers et de répertoires sont représentées par des nombres octaux à trois chiffres (tels que 0755 , 0644 ). Ces valeurs d'autorisation contrôlent les autorisations de lecture, d'écriture et d'exécution du propriétaire du fichier, du groupe d'utilisateurs auquel il appartient et d'autres utilisateurs. Dans PHP, la fonction chmod () nous permet de modifier par programme les autorisations de fichiers ou de répertoires. Cet article expliquera comment utiliser correctement la fonction chmod () et se concentrer sur la façon de gérer les valeurs d'autorisation octale.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">chmod</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$permissions</span></span><span> )
</span></span>
$ nom de fichier : le chemin du fichier ou du répertoire auquel les autorisations doivent être modifiées.
$ Autorisations : valeur d'autorisation exprimée en octal (comme 0755 ).
La fonction renvoie une valeur booléenne, renvoie True pour le succès et renvoie False pour l'échec.
Les valeurs d'autorisation octale sont généralement écrites comme un numéro à trois chiffres ou à quatre chiffres, et les trois premiers chiffres correspondent à:
Première place: autorisation du propriétaire du fichier
Deuxièmement: autorisation au groupe d'utilisateurs
Troisième place: autorisation d'autres utilisateurs
Les valeurs d'autorisation pour chaque bit sont les suivantes:
4 = lire (r)
2 = écrire (w)
1 = exécuter (x)
Ces valeurs peuvent être superposées. Par exemple:
7 = 4 + 2 + 1 = lire, écrire, exécuter
6 = 4 + 2 = lire, écrire
5 = 4 + 1 = lire, exécuter
0755 signifie: le propriétaire peut lire et écrire l'exécution, et les utilisateurs du groupe et les autres utilisateurs peuvent lire l'exécution.
0644 signifie: le propriétaire peut lire et écrire, et les utilisateurs de groupe et les autres utilisateurs ne peuvent lire que.
Remarque: La valeur d'autorisation en PHP doit commencer par 0 pour représenter octal , sinon elle sera interprétée comme décimale, ce qui entraîne des résultats incorrects.
<span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>); </span><span><span class="hljs-comment">// correct,0755 C'est octal</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-number">755</span></span><span>); </span><span><span class="hljs-comment">// erreur,755 Sera traité comme décimal</span></span><span>
</span></span>
Voici quelques exemples de paramètres d'autorisation courants:
<span><span><span class="hljs-comment">// Se défaut pour être lisible et inscrit par tout le monde</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'script.sh'</span></span><span>, </span><span><span class="hljs-number">0777</span></span><span>);
</span><span><span class="hljs-comment">// Réglé sur le propriétaire lire et écrire,D'autres lisent uniquement</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'config.ini'</span></span><span>, </span><span><span class="hljs-number">0644</span></span><span>);
</span><span><span class="hljs-comment">// Réglé sur le propriétaire lire et écrire执行,Utilisateurs du groupe et autres utilisateurs en lecture seule</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'public/index.php'</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>);
</span></span>
Vous pouvez également utiliser la fonction filePerms () pour obtenir les autorisations de fichier actuelles et la convertir en format octal avec DECOCT () :
<span><span><span class="hljs-variable">$perms</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fileperms</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$perms</span></span><span>), -</span><span><span class="hljs-number">4</span></span><span>); </span><span><span class="hljs-comment">// Après avoir sorti des autorisations4Bit octal</span></span><span>
</span></span>
Ceci est très utile pour déboguer et vérifier que les paramètres d'autorisation sont en vigueur.
Les scripts PHP doivent avoir l'autorisation de modifier l'autorisation du fichier cible . Sinon, Chmod () échouera.
Sur certains systèmes, les autorisations de répertoire peuvent également affecter l'accès aux fichiers .
Évitez d'utiliser les autorisations 0777 sauf s'il s'agit d'un fichier temporaire ou d'une phase de débogage . Dans les environnements de production, essayez d'éviter de permettre aux fichiers d'ouvrir les autorisations d'écriture à tous les utilisateurs.
La maîtrise de l'utilisation de la fonction CHMOD () dans PHP, en particulier le traitement des valeurs d'autorisation octale, est cruciale pour gérer les autorisations de fichiers de serveur et créer des applications Web sécurisées. La plupart des problèmes d'accès aux fichiers et de sécurité peuvent être évités en gardant à l'esprit le format octal et en allouant correctement les autorisations.