web-dev-qa-db-fra.com

Comment autoriser php5-fpm à exécuter les fichiers utilisateur sans modifier implicitement les autorisations à chaque fois?

Je suis récemment passé à Ubuntu. Un des outils que j'ai fréquemment utilisé était XAMPP. Lorsque j'ai installé la pile LAMP sur Ubuntu, j'ai constaté une augmentation importante des performances et j'ai été assez satisfait. Cependant, après avoir littéralement passé des jours et lu des douzaines d'articles pratiques, je ne pouvais toujours pas le configurer correctement.

J'ai fini par installer Apache2 + php5-fpm car il peut exécuter les fichiers avec les permissions de l'utilisateur.

Cependant, cela n'a pas encore fonctionné pour moi. Par exemple, j'ai téléchargé une archive d'un CMS populaire et je l'ai extraite dans le répertoire hpml d'Apache. Les autorisations résultantes sur ces fichiers sont 0664 et 0700 sur des dossiers.

Règles de répertoire Apache:

<Directory "/home/myuser/www/">
    AllowOverride All
    Require all granted
    Allow from all    
</Directory>

Quand AllowOverride All:

[Fri Dec 12 21:16:01.037580 2014] [core:crit] [pid 23745:tid 140466931369728] 
(13)Permission denied: [client 127.0.0.1:54670] AH00529:  
/home/myuser/www/mycms/install/.htaccess pcfg_openfile: unable to check htaccess 
file, ensure it is readable and that '/home/myuser/www/mycms/install/' is executable

Lorsque AllowOverride None, Apache2 exécute index.php qui se trouve dans le répertoire racine, mais n'exécute pas /config/index.php.

[Fri Dec 12 21:02:41.552369 2014] [core:error] [pid 22530:tid 140517706823424]
(13)Permission denied: [client 127.0.0.1:54465] AH00035: access to 
/install/index.php denied (filesystem path 
'/home/myuser/www/mycms/install/index.php') because search 
permissions are missing on a component of the path

Je ne connais pas encore très bien les règles de répertoire Apache, il y a peut-être une erreur. Le fichier index.php doit-il être lisible? Le service php5-fpm s'exécute en tant qu'utilisateur:

/etc/php5/fpm/pool.d

Line 22: user = myuser
Line 23: group = myuser

Les fichiers sont exécutés lorsque je définis chmod -R 0755 www/. Cependant, je ne peux pas continuer à exécuter cette commande à chaque fois que j'ajoute des fichiers ou qu'ils sont créés par php. N'y a-t-il pas moyen de travailler sans modifier constamment les autorisations? J'ai demandé à un collègue et il vient de dire: "Configurez l'utilisateur root pour le service php5-fpm". Cependant, il s’agit plus d’une solution d’échappatoire improvisée. J'ai également peur de pouvoir exécuter certaines fonctions glob/* et supprimer des fichiers que je ne voulais pas supprimer (cela m'est déjà arrivé par le passé).

Comment puis-je configurer ma pile LAMP pour pouvoir automatiquement exécuter tous mes fichiers?

S'il y a un bon guide sur la façon de le configurer avec suphp ou un autre mod, je le regarderais sans arrêt. Mais cela doit fonctionner jusqu'au bout.

Éditer

 ps aux | egrep '(Apache|httpd)'
root     18763  0.0  0.1  84256  4720 ?        Ss   21:35   0:00 /usr/sbin/Apache2 -k start
www-data 18767  0.0  0.1 373432  6256 ?        Sl   21:35   0:00 /usr/sbin/Apache2 -k start
www-data 18768  0.0  0.1 373432  6256 ?        Sl   21:35   0:00 /usr/sbin/Apache2 -k start
gskema   20515  0.0  0.0  14884  2364 pts/6    S+   21:37   0:00 grep -E --color=auto (Apache|httpd)

ps aux | egrep '(php)'
gskema    8312  0.0  0.0   4448   492 ?        S    16:32   0:00 /bin/sh /opt/phpstorm/bin/phpstorm.sh
gskema    8361  8.7 31.0 4630304 1245684 ?     Sl   16:32  26:52 /usr/lib/jvm/Java-8-Oracle/bin/Java -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=225m -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djsse.enableSNIExtension=false -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -Dawt.useSystemAAFontSettings=lcd -Djb.vmOptionsFile=/opt/phpstorm/bin/phpstorm64.vmoptions -XX:ErrorFile=/home/gskema/Java_error_in_WEBIDE_%p.log -Xbootclasspath/a:/opt/phpstorm/bin/../lib/boot.jar -Didea.paths.selector=WebIde80 -Didea.platform.prefix=PhpStorm -Didea.no.jre.check=true -Djb.restart.code=88 com.intellij.idea.Main
gskema    8396  0.0  0.0   4936   904 ?        S    16:32   0:00 /opt/phpstorm/bin/fsnotifier64
root     18950  0.0  0.6 348744 24312 ?        Ss   21:35   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data 18953  0.0  0.1 348744  7836 ?        S    21:35   0:00 php-fpm: pool www                                                       
www-data 18954  0.0  0.1 348744  7836 ?        S    21:35   0:00 php-fpm: pool www                                                       
gskema   20649  0.0  0.0  14888  2364 pts/6    R+   21:40   0:00 grep -E --color=auto (php)

J'ai lancé une commande et je vois qu'il y en a plusieurs? processus en cours d'exécution. Quelqu'un peut-il commenter ces?

3
gskema

Il y a beaucoup de guides là-bas pour la configuration d'Apache2 + php-fpm sur Ubuntu. Mais oui, ils ne parlent pas de permission de répertoire et j'ai vu des personnes de mon organisation se débattre de temps en temps. Voici la configuration générale que vous devriez regarder:

Apache devrait fonctionner en tant qu'utilisateur www-data

Le php-fpm devrait être exécuté en tant qu'utilisateur www-data.

www-data  1591  0.0  0.4 417116 34008 ?        S    Dec19   0:00 php-fpm: pool

Le répertoire racine Apache doit avoir votre utilisateur en tant que propriétaire et www-data en tant que groupe.

drwxr-xr-x 44 anirudh www-data 4096 Dec 20 10:27 www

Ajoutez ensuite le groupe www-data à votre utilisateur.

Sudo usermod -a -G www-data <your-user>

Cela dit, si vous voulez toujours utiliser php-fpm en tant qu'utilisateur, assurez-vous que même Apache est également exécuté en tant que même utilisateur, ce qui devrait fonctionner normalement.

3
anirudh