web-dev-qa-db-fra.com

Rendre le fichier dans le répertoire de l'utilisateur accessible depuis web / serveur Web

J'ai un fichier txt, l'un des répertoires de mon utilisateur, qui est régulièrement mis à jour par un script. Je veux maintenant pouvoir accéder à (lire) ce fichier à partir du Web.

/home/user/folder/file.txt

Donc, ce que j'ai essayé maintenant, c'est de me connecter en tant que root et d'aller dans le dossier httpdocs de mon serveur Web.

/var/www/path/to/domain/httpdocs

et là j'ai essayé de créer un lien symbolique avec

ln -s /home/user/foler/file.txt /var/www/path/to/domain/httpdocs/file.txt

Mais cela n'a pas fonctionné ... J'ai déjà essayé de changer le chmod du lien symbolique (ce qui change ceux du fichier d'origine bien sûr) et aussi un chown à l'utilisateur depuis le serveur web, mais peu importe ce que j'ai essayé, je ne peux pas ouvrir le fichier du web ou d'un script php (c'est ce que je veux faire)

Quelqu'un peut-il m'aider et me dire ce que je dois faire? Quels droits dois-je donner? Ou y a-t-il un autre moyen d'y parvenir?

2
florianbaethge

Le lien symbolique aura toujours les autorisations suivantes: lrwxrwxrwx. Le "l" indique qu'il s'agit d'un lien. Par conséquent, tous les utilisateurs peuvent suivre le lien car les autorisations effectives sont celles du fichier sur lequel pointe le lien. Il n'est jamais utile d'essayer de modifier les autorisations d'un lien symbolique.

Le chemin complet de la racine au fichier en question doit être lisible par l'utilisateur Apache. Alors ... jetez un coup d'oeil sur les permissions du dossier personnel:

ls -la /

Le répertoire de base doit appartenir à root, le groupe appartenant à root, avec le masque d'autorisation 0755 par défaut: drwxr-xr-x. Si non, changez-le:

Sudo chown root:root /home; Sudo chmod 0755 /home

Regardez maintenant le répertoire de votre utilisateur:

ls -la /home

Si le nom d'utilisateur en question est sambo , le répertoire personnel de l'utilisateur doit appartenir à sambo, le groupe appartenant à sambo, avec le masque d'autorisation 0755 par défaut: drwxr-xr-x. Si non, changez-le:

Sudo chown sambo:sambo /home/sambo; Sudo chmod 0755 /home/sambo

Répétez cette opération autant de fois que nécessaire, quel que soit le nombre de répertoires existant jusqu'à ce que vous atteigniez le répertoire contenant le fichier. Ensuite, n'oubliez pas le fichier lui-même.

Sudo chown sambo:sambo /home/sambo/path/to/file/file.txt; Sudo chmod 0644 /home/sambo/path/to/file/file.txt

Puis utilisez PHP pour l'ouvrir:

<?php
    $file = '/home/sambo/path/to/file/file.txt';
    $fp = fopen($file, 'r');

Vous pouvez également utiliser le lien symbolique à ce stade.

2
user8290

J'ai pu accéder aux fichiers de mon système avec mediatomb (voir la documentation ) car il dispose d'une interface utilisateur Web. Je recommanderais au moins l'activation de la protection par mot de passe.

Une autre alternative est opera unifier le serveur Web.

0
Allan