Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/11/2018, à 20:11

Rockmyu

[Résolu] apache | Autoriser l'accès uniquement aux membres d'un groupe

Bonjour à tous,

Suite à un TP réalisé en classe, j'aimerais approfondir mes connaissances en vous soumettant un problème qui me tient à cœur depuis quelques jours.

Voici le fichier de configuration du site :

# cat /etc/apache2/sites-enabled/site.conf

        <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 /srv/data/commun/support/doc/_build/html

        # 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>

Le fichier index.html est dans _build/html.

Ci-dessous les permissions de mes répertoires :

# pwd

/srv/data/commun/support/doc

drwxr-xr-x   3 root root 4.0K Nov 16 17:31 srv
drwxr-xr-x 4 root root 4.0K Nov 16 17:33 data
drwxr-xr-x 4 root root 4.0K Nov 16 17:33 commun
drwxrwx--- 3 root support 4.0K Nov 17 16:19 support
drwxrwxr-x 5 root support_n2 4.0K Nov 16 21:59 doc

J'aimerais qu'uniquement les membres du groupe support puissent accéder à http://localhost.

$ groups

user cdrom floppy sudo audio dip video plugdev netdev bluetooth lpadmin scanner support

Lorsque je tente de me connecter au site j'ai ce message qui s'affiche :

Forbidden

You dont have permission to access / on this server.

J'ai accès au site uniquement avec cette commande :

# chmod 771 support

Ce qui donnerait :
drwxrwx--x 3 root support 4.0K Nov 17 16:19 support

Mais dans ce cas je donne l'accès à tout le monde sad

Voici les logs d'apache lorsque je tente de me connecter sans donner l'accès à tous les utilisateurs :

# tail -f /var/log/apache2/error.log

[Sat Nov 17 17:42:04.998161 2018] [mpm_event:notice] [pid 614:tid 140434056201408] AH00493: SIGUSR1 received.  Doing graceful restart
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
[Sat Nov 17 17:42:05.001085 2018] [mpm_event:notice] [pid 614:tid 140434056201408] AH00489: Apache/2.4.25 (Debian) configured -- resuming normal operations
[Sat Nov 17 17:42:05.001126 2018] [core:notice] [pid 614:tid 140434056201408] AH00094: Command line: '/usr/sbin/apache2'
[Sat Nov 17 17:42:07.688989 2018] [core:error] [pid 8841:tid 140433703212800] (13)Permission denied: [client 127.0.0.1:39754] AH00035: access to / denied (filesystem path '/srv/data/commun/support/doc') because search permissions are missing on a component of the path

Je continue mes recherches !

Merci
Rockmyu

Dernière modification par Rockmyu (Le 18/11/2018, à 04:28)

Hors ligne

#2 Le 17/11/2018, à 20:39

krodelabestiole

Re : [Résolu] apache | Autoriser l'accès uniquement aux membres d'un groupe

Rockmyu a écrit :

J'aimerais qu'uniquement les membres du groupe support puissent accéder à http://localhost.

dans le contexte d'un serveur web, les permissions sur les fichiers servent généralement seulement à déterminer les possibilités d'accès par rapport à l'utilisateur unix qui exécute l'interpréteur php (l'interpréteur est apache si tu utilises libapache2-mod-php, et il est exécuté par l'utilisateur www-data sur ubuntu par défaut) et éventuellement par rapport à l'utilisateur qui doit maintenir ces fichiers.
https://doc.ubuntu-fr.org/apache2#permissions

mais à partir du moment ou tu effectues une requête http, ça n'a plus de sens de parler d'utilisateurs unix. c'est un navigateur qui interroge un serveur.

Dernière modification par krodelabestiole (Le 17/11/2018, à 20:47)

Hors ligne

#3 Le 17/11/2018, à 21:51

bruno

Re : [Résolu] apache | Autoriser l'accès uniquement aux membres d'un groupe

Comme le dit krodelabestiole, cela n'a pas de sens d'agir sur les droits d'accès des fichiers et dossiers dans ce cas.

Par contre tu peux mettre des restrictions d'accès au niveau de ton hôte virtuel :

<Directory /srv/data/commun/support/doc/_build/html>
    AuthType Basic
   …
    Require group support
</Directory>

La doc : https://httpd.apache.org/docs/2.4/mod/m … _core.html et http://httpd.apache.org/docs/2.4/fr/howto/auth.html

Hors ligne

#4 Le 18/11/2018, à 01:59

Rockmyu

Re : [Résolu] apache | Autoriser l'accès uniquement aux membres d'un groupe

Merci pour vos réponses.

J'ai donc modifié le fichier de configuration comme ceci :

# cat /etc/apache2/sites-enabled/site.conf
 
<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 /srv/data/commun/support/doc/_build/html

        <Directory /srv/data/commun/support/doc/_build/html>
                Require group support
        </Directory>

        # 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

Cependant j'ai un message d'erreur lorsque je reload apache.

#  /etc/init.d/apache2 reload  

[....] Reloading apache2 configuration (via systemctl): apache2.serviceJob for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
 failed!
#  /etc/init.d/apache2 status  

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) (Result: exit-code) since Sat 2018-11-17 22:24:36 CET; 2h 26min ago
  Process: 11943 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 14048 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=1/FAILURE)
  Process: 11950 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 11954 (apache2)
    Tasks: 55 (limit: 19660)
   CGroup: /system.slice/apache2.service
           ├─11954 /usr/sbin/apache2 -k start
           ├─13788 /usr/sbin/apache2 -k start
           └─13789 /usr/sbin/apache2 -k start


Nov 18 00:50:18 debian systemd[1]: Reloading The Apache HTTP Server.
Nov 18 00:50:18 debian apachectl[14048]: AH00526: Syntax error on line 15 of /etc/apache2/sites-enabled/site.conf:
Nov 18 00:50:18 debian apachectl[14048]: Unknown Authz provider: group
Nov 18 00:50:18 debian apachectl[14048]: Action 'graceful' failed.
Nov 18 00:50:18 debian apachectl[14048]: The Apache error log may have more information.
Nov 18 00:50:18 debian systemd[1]: apache2.service: Control process exited, code=exited status=1
Nov 18 00:50:18 debian systemd[1]: Reload failed for The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
bruno a écrit :

Comme le dit krodelabestiole, cela n'a pas de sens d'agir sur les droits d'accès des fichiers et dossiers dans ce cas.

J'ai du mal à comprendre alors pourquoi j'ai accès au site lorsque je donne au répertoire support l'accès en exécution à tout le monde neutral

J'attends vos précieux conseils avec impatience.

EDIT
: J'ai fini par envoyer un mail à mon prof, au final vous aviez raison concernant le non-sens.

Le serveur web s’exécute avec un utilisateur et un groupe par défaut www-data.

Quand je donnais au répertoire support l'accès en exécution à tout le monde, j'avais accès au site car www-data étant en mesure de remonter le répertoire ; toutefois les autre utilisateurs aussi et ce n'est pas ce qui est voulu.

Pour résoudre le problème il faut ajouter au dossier support l'utilisateur www-data et conserver le groupe support.

Dernière modification par Rockmyu (Le 18/11/2018, à 04:29)

Hors ligne

#5 Le 18/11/2018, à 11:13

bbtux2

Re : [Résolu] apache | Autoriser l'accès uniquement aux membres d'un groupe

Le "group" indiqué n'a rien à voir avec le "group" du système.

A toi de créer les fichiers nécessaires

Hors ligne

#6 Le 18/11/2018, à 13:52

bruno

Re : [Résolu] apache | Autoriser l'accès uniquement aux membres d'un groupe

@bbtux : oui, j'ai été rapide et peu précis dans ma réponse.

Hors ligne