Je suis relativement nouveau dans le développement Web, alors soyez patient.
Je suis principalement développeur iPhone, mais j'ai récemment créé un site pour quelqu'un d'autre utilisant l'hébergement mutualisé. Je pourrais bien écrire dans des fichiers en PHP sur ce site, sans avoir à penser aux autorisations.
Je suis en train de déployer un service Web pour une nouvelle application que je crée, mais cela ne se passe pas vraiment bien. La différence la plus importante ici est que j'utilise le serveur de quelqu'un d'autre et que je n'ai qu'un accès FTP / DB.
Fondamentalement, j'ai une charge de fichiers PHP qui composent mon CMS, comme ceci:
mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php
Ces scripts modifient ensuite la base de données ou les fichiers. Ils peuvent interagir avec la base de données fine, cependant, mes scripts ne peuvent pas écrire sur le système de fichiers. Ils peuvent, par exemple, tenter d'écrire dans les fichiers suivants:
mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt
Cela a bien fonctionné sur mon installation MAMP (localement), mais une fois déployé sur le serveur, PHP a généré des erreurs à chaque tentative d'écriture ... quelque chose comme ceci:
Impossible d'ouvrir le fichier "../data/img/someimage.png" pour l'écriture.
J'ai donc envoyé un e-mail au gars qui gère le serveur, et il est revenu en disant:
Cela fonctionne-t-il avec la permission du public? (777)
Et c'était le cas - mais j'étais très prudent avec l'utilisation des autorisations publiques, alors je l'ai immédiatement désactivé à nouveau. Je lui ai envoyé un e-mail disant "comment puis-je faire écrire mes scripts PHP en utilisant les autorisations utilisateur standard", et il a dit:
Laisse ça public, ça ira
Je pense que c'est un conflit IP quelque part dans la résolution du domaine, mais je ne m'inquiète pas.
Je lui ai alors envoyé un e-mail en lui disant «sûrement, ce n'était pas sûr» ou quelque chose du genre, et il a répondu ce qui suit:
la réalité est qu'il y a des millions de sites web, dont plusieurs que je gère qui ont 777 sur divers dossiers, c'est juste un mode de vie.
Quelqu'un pourrait-il me donner une idée d'une solution que je pourrais lui donner? Ou que puis-je faire pour éviter d'avoir à utiliser le 777? Je n'aime vraiment pas l'idée que des dossiers de mon site / service soient accessibles en écriture.
J'apprécierais beaucoup vos conseils car je connais très peu les serveurs Web.
la source
Réponses:
Décomposons-le :
Vous avez besoin de l'utilisateur exécutant le script pour lire, exécuter et écrire sur le répertoire, il devrait donc être:
7 = (r) ead, (w) rite, e (x) ecute
Les autres utilisateurs appartenant au même groupe devraient pouvoir exécuter le fichier php dans le répertoire, mais pas y écrire (pour des raisons évidentes); ils n'ont pas nécessairement besoin de lire les fichiers PHP. Par conséquent, nous devons fournir simplement des autorisations d'exécution:
1 = e (x) écute
Pareil pour le public. En fait, c'est tout ce dont vous avez besoin pour les utilisateurs externes qui ont besoin d'afficher des fichiers php et statiques:
1 = e (x) écute
Le strict minimum devrait donc être:
711
J'ai confirmé les paramètres ci-dessus avec ma propre configuration, donc cela devrait fonctionner; cependant, c'est sous l'utilisateur Web par défaut. Si vous téléchargez avec une connexion autre que www, les fichiers et répertoires seront probablement sous un autre utilisateur. Dans ce cas, l'internaute par défaut peut ne pas être en mesure de lire ou d'écrire les fichiers qui vous appartiennent. À ce stade, vous devrez probablement ajouter l'utilisateur Web par défaut à votre groupe (le sysadmin devra le faire), puis donner des autorisations de lecture, d'écriture et d'exécution aux utilisateurs appartenant au groupe:
771
Et cela fonctionnerait probablement. Soit cela, soit demandez à l'administrateur système de changer l'utilisateur et la propriété du groupe de ces fichiers en l'utilisateur du serveur Web par défaut (mais PAS LES AUTORISATIONS!). Si cela ne fonctionne toujours pas, un exemple de sortie des autorisations (quelque chose comme "ls -la dans le répertoire") nous aiderait à résoudre ce problème davantage. Cela dit, tant que vous n'avez qu'à donner des autorisations d'exécution au public ( ou "autre"), vous devriez être bien du point de vue de la sécurité.
la source
/data
dossier - ce dossier contient des scripts PHP qui composent mon service Web JSON, et un tas d'images utilisées pour le contenu transmis dans le service Web (dans un/data/img
dossier)Ce mec est un idiot et c'est complètement absurde. Les droits d'accès n'ont rien à voir avec l'adresse IP ou la résolution de domaine, il laisse simplement tomber des mots.
Compte tenu de la qualité de cet "administrateur", je recommanderais d'héberger votre site ailleurs car il est très probable que le site soit très mal administré et peu sécurisé. Mettre simplement des
777
autorisations sur quelque chose pour que cela fonctionne est un signe certain qu'il ne comprend pas un peu ce qu'il fait.Les droits d'accès vraiment nécessaires dépendent de la façon dont le système est utilisé et configuré et il est assez difficile de vous dire quelque chose sans le savoir.
la source
www-data
avec des700
autorisations, mais cela ne fonctionnera probablement pas dans votre cas.Apache/2.2.9 (Debian) PHP/5.2.6-1
www-data
groupe, vous devez soit modifier les utilisateurs / groupes après le transfert, soit utiliser des777
autorisations. Mais c'est inutile, nous ne pouvons pas vous aider de cette façon.