Apache et acces www

Effectivement c’est pas le meme résultat

ls -l /home/jealdell
total 44
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Bureau
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Documents
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Images
-rw-r--r--  1 jealdell jealdell    6  2 sept. 12:03 index.html
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Modèles
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Musique
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Public
drwxr-xr-x  3 jealdell jealdell 4096  9 sept. 09:52 public_html
drwxrwxr-x 12 jealdell jealdell 4096  1 févr.  2020 public_html1
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Téléchargements
drwxr-xr-x  2 jealdell jealdell 4096 29 août  17:37 Vidéos
ls -l /home/jealdell/public_html
total 4
drwxr-xr-x 3 jealdell jealdell 4096 22 mai    2021 gestech

Apache n’a pas les droits jealdell jealdell, il ne peut pas lire les fichier d’où l’erreur.

Normallement il devrait etre en www-data:www-data. Mais avec ton histoire de userdir, je ne sais pas comemtn ça marche. Mais sans userdir, aucune change que ça marche si les droits de propriété ne sont pas bon.

Bonjour, j’ai fait ce que je pouvais, en m’appuyant des infos de divers tutos, pas de résultat. j’arrive toujours a la meme chose
soit:

nano /etc/apache2/sites-available/gestech.com.con

<VirtualHost *:80>
        ServerName gestech.com
        ServerAlias www.gestech.com
        DocumentRoot "/home/jealdell/public_html/gestech"
        <Directory "/home/jealdell/public_html/gestech">
                AllowOverride All
Options -Indexes +FollowSymLinks +MultiViews
 Require all granted

        </Directory>
        ErrorLog /var/log/apache2/error.gestech.com.log
        CustomLog /var/log/apache2/access.gesteck.com.log combined
</VirtualHost>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

 <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

je l’active a2ensite gestech.com.conf et désactive le default d’origine a2dissite 000-default

Et dans ce cas la localhost est 403 Forbidden (You don’t have permission)
*avec le default j’ai bien le repertoire HTML et GESTECH du repertoire /var/www
mais jamais GESTECH du public_html

chgrp -R www-data /home/jealdell/public_html
chmod -R 775 /home/jealdell/public_html

ls -l /home/jealdell
total 44
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Bureau
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Documents
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Images
-rwxr-xr-x 1 jealdell jealdell 6 2 sept. 12:03 index.html
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Modèles
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Musique
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Public
drwxr-xr-x 12 jealdell www-data 4096 1 févr. 2020 public_html
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Téléchargements
drwxr-xr-x 2 jealdell jealdell 4096 29 août 17:37 Vidéos


mon userdir

UserDir /home/jealdell/public_html
UserDir disabled root

    Alias /jealdell /home/jealdell/public_html

    <Directory /home/jealdell/public_html>
            Options All
             AllowOverride All
             Require all granted
                    Options MultiViews Indexes SymLinksIfOwnerMatch
                    <Limit GET POST OPTIONS>
                            Order allow,deny
                            Allow from all
                    </Limit>
                    <LimitExcept GET POST OPTIONS>
                            Order deny,allow
                            Deny from all
                    </LimitExcept>
            </Directory>

Ca devait pas etre si compliqué

Bonjour,
Tes fichier et ton répertoire du site ont des droits qui ne permettent pas à apache de les traiter.
Le directory cgi-bin n’a pas de </directory>
Sur quels tutoriels t’es-tu basé?

désolé pour le mauvais copié/collé

J’ai modifié les balises du message d’au dessus

<Directory /home/jealdell/public_html>
        Options All
         AllowOverride All
         Require all granted
                Options MultiViews Indexes SymLinksIfOwnerMatch
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>

Je n’ai toujours pas trouvé la solution a ce probleme qui ne me semblait pas etre tres compliqué…

Quels sont les tutos que tu as utilisé? car les mélanger n’est pas toujours de bon aloi.
La configuration du module userdir n’utilise pas dans le texte de configuration le nom du user. Si des utilisateurs ne sont pas souhaité il faut les exclure avec Userdir disabled.

userdir est un module qui permet à tous les utilisateurs d’une machine la possibilité d’héberger du contenu web.

La configuration est donc conçue pour tous les utilisateurs (wildcard), pas sur un utilisateur nommé pour le module /etc/apache2/mods-available/userdir.conf :

<IfModule mod_userdir.c>
    Userdir public_html
    Userdir disabled root
 
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
    </Directory>
</IfModule>

activer le module avec a2enmod userdir
Chaque utilisateur qui voudra avoir une page web devra dans ton répertoire user /home/ créer un répertoire public_html, dans lequel il mettra ses fichiers HTML, CSS, PHP, etc…

et c’est tout ce qu’il y a à faire.
Pas besoin de modifier de fichier dans conf-available ou sites-available.
Pour se connecter:

http://server/~user

Pour information, le module userdir n’est pas considéré comme très sécurisé.

Quand je fais
a2enmod userdir
ERROR: Config file userdir.conf not properly enabled: /etc/apache2/mods-enabled/userdir.conf is a real file, not touching it

nano /etc/apache2/mods-available/userdir.conf

<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

<Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
#AllowOverride all      
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
</Directory>
</IfModule>

Dois je supprimer celui dans /etc/apache2/mods-enabled/userdir.conf

J’ai toujours localhost
403 forbidden

dans mod-enabled ce ne sont que des liens. Si tu as un fichier c’est ujne erreur.
Il faut effacer le fichier qui s’y trouve et a2enmod fera le reste
On ne modifie que les available. Les enabled sont gérés par les commandes apache.

Merci pour ton aide

# rm /etc/apache2/mods-enabled/userdir.conf

# a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
  systemctl restart apache2

# systemctl restart apache2.service

Je n’ai plus cette erreur d’activation userdir…

mais j’ai maintenant 404 not found et plus 403 forbidden

Quoi que y a quelques changements

Je vais analyser ca, certains fichiers ou dossiers sont listé dans le browser §? comme si tout n’était pas visible

concernant les permissions pour un serveur http sous linux, ce qui est généralement recommandé, d’après la réponse qui a eu le plus de votes positifs sur serverfault, quand on travaille seul sur la machine (que ce soit un serveur de prod ou de dev) c’est que les fichiers appartiennent à soi-même - l’utilisateur courant - et au groupe www-data.

ce qui donne

sudo chown -R $USER:www-data /var/www/site

ensuite l’utilisateur doit pouvoir lire et modifier les fichiers, mais www-data seulement lire :

chmod -R a-rwx,u+rwX,g+rX /var/www/site

sauf pour les répertoires d’upload, cache etc. sur lesquels apache doit pouvoir écrire :

chmod -R g+w /var/www/site/upload

(j’ai aussi résumé le truc sur la doc ubuntu.)

ensuite je déconseille de jouer au petit poucet avec des symlinks inutiles : la directive DocumentRootexiste très exactement pour indiquer où se trouve la racine du site, autant en profiter pour indiquer direct le bon endroit.
ça évite aussi au passage de servir des fichiers qui se situent au dessus de la racine voulue par les développeurs (un répertoire qui s’appelle souvent public, public_http ou un truc du genre pour les applications bien conçues) - ce qui évite aussi par la même occase de poser des problèmes de sécurité en rendant accessible du contenu qui n’est pas toujours sensé l’être.

non ce n’est pas valable avec l’utilisation du module userdir.

avec mod_userdir les droits sont ceux de l’utilisateur par défaut ? dans ce cas pas d’histoire de www-data ou de gérer différemment le groupe effectivement. les fichiers et répertoires doivent juste appartenir à l’utilisateur, comme ça doit en principe être le cas de tout ce qui se trouve sous $HOME.

pour www-data ça reste vrai le reste du temps, à moins qu’on soit plusieurs mainteneur·euse·s ou développeur·euse·s à bosser sur la même machine, ou sauf pour les applications développées avec les pieds (comme WordPress).

tu as mentionné les problèmes que pose mod_userdir, c’est quand même une drôle d’idée de l’utiliser en 2023 ! si un·e utilisateur·ice veut accéder ou partager des fichiers sur le web il y a des solutions beaucoup plus modernes, pratiques et sécurisées (seafile, nextcloud, etc.).

Sauf erreur je crois malheureusement pas que @Lissteck nous ait indiqué l’idée et le contexte général.

là typiquement non, on est clairement dans un cas ordinaire et absolument pas besoin de mod_userdir, on ferait mieux d’appliquer les conseils généraux pour apache ou autre serveur web, à base de ressources qui appartiennent à $USER et au groupe www-data !

C’est ça.

Soit c’est du classique et auquek cas pas de /home//public_html, soit c’est du userdir et dans ce cas c’est /home//public_html.