1 votes

PHP peut-il écrire dans un répertoire sans 0777 ?

Je suis en train de créer un constructeur de site web, et j'ai le fichier render.php qui doit écrire dans les répertoires des utilisateurs. Je ne veux pas donner à chacun des répertoires des utilisateurs le numéro 0777, mais je dois quand même pouvoir y écrire. Existe-t-il un moyen d'y parvenir ?

Jusqu'à présent, j'ai :

  • render (dir) ... 0777
  • render.php ... 777 WritesTo->
  • users (dir) ....... 0777
  • index.php ..... 777

Je veux changer cela pour permettre l'accès à render.php pour modifier les fichiers des utilisateurs, mais ne pas permettre aux fichiers eux-mêmes d'exécuter du code.

1voto

user178165 Points 1

Si je vous comprends bien, je pense que cette procédure devrait vous donner ce que vous voulez.

  1. Créer un groupe renderusers pour le répertoire de l'utilisateur : groupadd renderusers
  2. Changez le groupe de la user pour rendre les utilisateurs : chgrp renderusers user
  3. Ajoutez l'utilisateur de votre processus apache (apache ou www-data) à ce groupe : usermod -G rendergroup -a apache
  4. Changez les permissions du user pour inclure set group ID de sorte que le groupe renderusers peut écrire et modifier des fichiers et chaque fichier nouvellement créé appartiendra à l'utilisateur. renderusers dans ce répertoire : chmod -R 2770 user
  5. Redémarrer apache pour qu'il reconnaisse son nouveau groupe supplémentaire

Je suppose que vous exécutez php en tant que module DSO et non via cgi.

0voto

Scott Points 20468

Je ne suis pas suffisamment familier avec Apache pour pouvoir vous guider dans la procédure de configuration du site web, mais je peux suggérer une réponse au niveau des permissions Unix :

  • Définir un nouveau groupe (par exemple, riiich_app ),
  • hacer chgrp riiich_app y chmod 775 sur chacun des répertoires des utilisateurs (et leur dire de ne pas le modifier), et ensuite
  • configurer votre serveur web pour exécuter votre render.php en vertu de la riiich_app groupe.

-6voto

Sydcul Points 37

Vous pouvez donner au nom d'utilisateur de votre serveur Web les permissions 0777. Dans le cas d'Apache2, c'est www-data. Je ne sais pas exactement comment faire ça avec chmod, mais vous pouvez chown www-data 777 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X