web-dev-qa-db-fra.com

Définition des autorisations de fichiers sur Linux pour permettre à PHP d'écrire dans un répertoire

J'ai un site Web construit avec Codeigniter et hébergé sur une machine Linux.

J'essaie de suivre les "meilleures pratiques" en ce qui concerne les paramètres d'autorisation de mon fichier, mais je ne suis pas sûr de bien comprendre les implications en termes de sécurité si je mets un répertoire à 777.

J'ai un dossier d'images accessible publiquement (les utilisateurs du site Web ont besoin de voir les images du site Web). Mon code Codeigniter doit parfois écrire dans un sous-répertoire de ce dossier ('images/data').

La valeur par défaut est 644 pour tous mes fichiers et 755 pour mes répertoires. Pour les répertoires dans lesquels Codeigniter doit écrire, j'ai défini l'autorisation à 777.

Cela semble trop lâche. Existe-t-il un moyen de restreindre mon système afin que seul Codeigniter se voit accorder un accès "en écriture" à ces répertoires? J'ai lu des articles en ligne sur la définition du propriétaire sur "Apache", mais pour autant que je sache, je n'ai pas de propriétaire "Apache" sur ma boîte Linux. Je viens de voir root, puis le propriétaire du domaine de site Web (le serveur héberge plusieurs domaines, chacun ayant un compte "utilisateur").

3
neomech

Mon fournisseur d’accès à Internet me fait maintenant part de ses commentaires qui m’orientent dans la bonne direction, à savoir le gestionnaire de fichiers PHP utilisé sur mon serveur.

Mon serveur est configuré avec le gestionnaire DSO pour PHP 5. Cela signifie que les fichiers et les répertoires créés par mes scripts php seront la propriété de "personne" et doivent par conséquent être accessibles à "Autre". J'ai besoin de définir les autorisations à 777 sur les répertoires qui doivent être écrits par mes scripts php.

L'alternative consiste à définir mon gestionnaire PHP 5 sur suPHP. Ceci est un peu plus sécurisé car cela signifie que mes scripts php écrivent en tant que propriétaire du code php. Cela signifie que je peux laisser mes répertoires au 755. Il y a apparemment un peu de succès dans cette performance. En outre, en fonction de la configuration actuelle de vos autorisations, des modifications assez importantes pourraient être apportées aux autorisations de vos fichiers et dossiers existants. Il y a également certaines préoccupations que si vos scripts php ont les mêmes autorisations que le propriétaire du site, vous pouvez réellement causer des dommages majeurs avec un script défectueux.

Voici un bon résumé des différences entre DSO et suPHP: https://helpdesk.wiredtree.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1663#

1
neomech