L'administrateur de mon serveur veut que je définisse des autorisations d'écriture publiques sur un répertoire

9

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.

Alex Coplan
la source
12
Fuyez ce gars et ne regardez pas en arrière.
user9517
Pas vraiment une option ... voir les commentaires sur la réponse de SvenW ...
Alex Coplan

Réponses:

13

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é.

Rilindo
la source
2
J'aimerais pouvoir voter deux fois.
Wesley
Le problème est vraiment que le site Web ne doit pas écrire dans des fichiers au sein de sa propre structure plutôt que les autorisations elles-mêmes.
JamesRyan
Tu as raison. Selon les données, vous voudrez probablement écrire dans un fichier en dehors du webroot public.
Rilindo
Ici, j'écris dans un /datadossier - 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/imgdossier)
Alex Coplan
Les images doivent donc être publiques, alors? Cela a clarifié les choses.
Rilindo
18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

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 777autorisations 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.

Sven
la source
merci - ma pensée est exactement sur les autorisations - je n'ai pas vraiment la possibilité de l'héberger ailleurs car la société pour laquelle je développe ne paiera pas pour cela, et m'a recommandé ce type et a dit qu'ils le feraient faites-le gratuitement - d'après ce que je peux dire, je suis en train d'exécuter l'un de ses serveurs virtuels. Alors, comment cela fonctionne-t-il normalement, comment un script PHP peut-il s'exécuter en tant qu '"utilisateur" et donc être capable d'écrire sur n'importe quoi sur le site?
Alex Coplan
Eh bien, je les informerais de ce qu'ils obtiennent "gratuitement". Je n'ai pas beaucoup d'expérience avec un hébergement partagé, donc je ne peux pas en parler. Mes sites exécutent tous des serveurs Web Debian et les dossiers qui doivent être accessibles en écriture seront détenus par www-dataavec des 700autorisations, mais cela ne fonctionnera probablement pas dans votre cas.
Sven
Je pense qu'ils le paient également pour leur site principal, c'est pourquoi - si c'est de l'aide en bas d'une page d'erreur de serveur, cela ditApache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan
c'est aussi des vps non partagés
Alex Coplan
2
Eh bien, j'essaie de déterminer quelles autorisations et propriétés vos fichiers peuvent être transférés vers le serveur. S'il s'agit d'un utilisateur qui n'est pas au moins membre du www-datagroupe, vous devez soit modifier les utilisateurs / groupes après le transfert, soit utiliser des 777autorisations. Mais c'est inutile, nous ne pouvons pas vous aider de cette façon.
Sven