web-dev-qa-db-fra.com

Besoin d'aide sur les autorisations Apache2

Cela fait deux jours maintenant sans solution, alors je demande de l'aide. J'ai cherché et essayé, j'ai déjà résolu quelques problèmes mais il y a une dernière chose.

C’est ce que j’essaie de faire: changer le répertoire par défaut d’Apache2 de/var/www/html en/media/pi/storage/root_folder /

J'ai suivi ce tutoriel> https://help.ubuntu.com/community/ApacheMySQLPHP#Virtual_Hosts

dans la section hôtes virtuels, j'ai créé un fichier html de test sous/home/pi/Desktop/et cela fonctionne à cause (je suppose) des autorisations correctes.

Maintenant, lorsque je fais exactement la même chose sur/media/pi/storage/root_folder/et que je recharge la page Web, un message d’erreur m'interdit, ce qui suggère que j’ai la permission (encore est formaté avec ext4)

Est-ce que quelque chose comme ça va marcher? Sudo chown -R USER:USER /media/pi/storage/root_folder/ OR chgrp -R www-data /username/chmod -R 2750 /username/ OR c'est autre chose?

Je ne sais pas quelle commande est nécessaire, une étape par étape serait grandement appréciée

Et enfin, comment puis-je obtenir ces autorisations pour être appliqués à de nouveaux sous-répertoires et fichiers à l'avenir, afin que je ne rencontre plus jamais la même erreur interdite?

J'apprécie toute aide, merci les gars ..

Le fichier de configuration de l'hôte virtuel:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual Host. For the default virtual Host (this file) this
    # value is not decisive as it is used as a last resort Host regardless.
    # However, you must set it for any further virtual Host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /media/pi/storage/root_folder/

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual Host. For example the
    # following line enables the CGI configuration for this Host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=Apache ts=4 sw=4 sts=4 sr noet

Extrait du journal des erreurs Apache:

[Sun Dec 17 05:29:33.304748 2017] [core:error] [pid 951:tid 1836053552] (13)Permission denied: [client 192.168.1.137:43006] AH00035: access to / denied (filesystem path '/media/pi/storage') because search permissions are missing on a component of the path

Sortie de ls -ld /media /media/pi /media/pi/storage:

drwxr-xr-x  3 root root 4096 Nov 29 02:57 /media
drwxr-x---+ 3 root root 4096 Dec 17 05:28 /media/pi
drwxr-xr-x  4 pi   pi   4096 Dec 16 20:31 /media/pi/storage
1
johndoe666

Vous devez également autoriser Apache à accéder à ce répertoire. Par défaut, Apache est uniquement autorisé à accéder à /var/www et /usr/share; cet accès est accordé par des blocs comme celui-ci dans /etc/Apache2/Apache2.conf:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Ainsi, vous devez ajouter un bloc similaire quelque part dans votre configuration Apache pour accorder l'accès à /media/pi/storage/root_folder/:

<Directory /media/pi/storage/root_folder/>
        Require all granted
</Directory>

Si vous avez déjà un bloc <Directory /media/pi/storage/root_folder/>, par exemple dans votre fichier de configuration d'hôte virtuel, il suffit de lui ajouter la directive Require all granted.

De plus, le journal des erreurs indique qu’Apache (, c’est-à-dire , l’utilisateur www-data) ne dispose pas des autorisations de lecture ou de recherche sur un composant de /media/pi/storage. Le résultat de ls -ld /media /media/pi /media/pi/storage indique que /media et /media/pi/storage ont tous les deux 755 autorisations. Le coupable doit donc être /media/pi. Puisque /media/pi utilise Listes de contrôle d'accès (comme indiqué par le signe + dans la sortie de ls -ld), nous donnons www-data à lire et à rechercher. autorisations avec

Sudo setfacl -m u:www-data:rx /media/pi
1
fkraiem