# [Howto] Organisez votre serveur Web Apache

## digimag

TUTO: Bien organiser votre espace Web avec Apache

Intro : Si vous êtes un utilisateur plutôt paranoïque côté sécurité, je suis pose que votre umask dans /etc/profile est défini sur 077. Ce qui veut dire que tous les fichiers créés par défaut ont comme attributs -rw- --- ---. Personne ne peut lire ou écrire vos fichiers, sauf vous-même et c'est rassurant. Maintenant supposons que vous êtes aussi un développeur web et que vous souhaitez héberger ou tout simplement tester votre site via un serveur local. Dans notre cas, il s'agit d'Apache.

Problème: Lorsque vous créez un nouveau fichier, Celui-ci est par défaut illisible par Apache à cause de ce fameux umask. Mon but est de faire en sorte que seuls les utilisateurs qui appartiennent au groupe www + Apache puissent lire les fichiers.

Comment va-t-on faire?D'abord, lancer Apache avec les droits du groupe www. Ensuite, grâce aux ACL nous allons pouvoir définir les attributs par défaut, malgré ce qui est imposé par umask. Enfin, avec l'attribut SGID nous pourrons forcer chaque fichier créé dans /var/www/ à appartenir au groupe www.

 Installer ACL

```
# emerge -av acl
```

 Ajouter acl à votre variable USE dans /etc/make.conf

 Réinstallez les ebuilds avec le support ACL

Au moins, coreutils et rsync devraient être recompilés.

```
# emerge -av coreutils rsync
```

Pour mettre tout à jour, exécutez

```
# emerge -avuDN world
```

 Ajoutez le support ACL dans le noyau

```
# cd /usr/src/linux && make menuconfig
```

Choisissez les options suivant le système de fichiers utilisé. Dans mon cas c'est Ext3: *Config du noyau wrote:*   

> File systems -->
> 
>     < * > Ext3 journalling file system support
> 
>       [ * ]   Ext3 extended attributes
> ...

 Recompilez le noyau de façon habituelle et réinstallez votre chargeur de démarrage si nécessaire.

 Modifiez les options de montage

Avant de redémarrer, il est utile de préciser sur quelles partitions vous souhaitez activer ACL. Modifiez votre /etc/fstab, ajoutez acl en paramètres, exemple:

```
# <fs>          <mountpoint>    <type>          <opts>                  <dump/pass>

  /dev/hdb1      /               ext3            acl,noatime              0 1
```

 Redémarrez

 Configurez le tout

Créez le groupe www et ajoutez-y les utilisateurs de votre choix. Editez /etc/apache2/conf/apache2 et ajoutez:

```
User apache

Group www
```

Il ne reste plus qu'à configurer les accès au repertoire /var/www:

```
# cd /var/www

chmod -R go-rwx ./

chown -R root:www ./

chmod +s ./

setfacl -R -m g::rwx ./

setfacl -R -m d:g:www:rwx ./

setfacl -R -m d:g::rwx ./

setfacl -R -m d:o::--- ./

setfacl -R -m o::--- ./
```

Voilà, tout devrait fonctionner à présent. Redémarrez apache:

```
/etc/init.d/apache2 restart
```

 Appreciez

Et n'hésitez surtout pas de me faire part de vos suggéstions et corrections! Moi-même je viens à peine de comprendre le système de fonctionnement, donc bien sûr tout est à vérifier par vous même  :Wink: 

+ merci à Starch de m'avoir mis sur la bonne piste  :Smile: 

En savoir plus

liens

Site officiel sur ACLs: (Anglais) Extended attributes ans ACLs for Linux

Article sur les ACLs: (Français) Linuxfrench.net

La rapidité d'accès

D'après l'article publié sur Linuxfrench.net, la mise en place des ACLs diminue les performances de façon insensible sur les systèmes de fichiers Ext2 ou Ext3, ce qui n'est pas le cas sur XFS. Si vous utilisez XFS, vous pouvez toutefois créer une partition indépendante pour /car/www en Ext3.

Last edited by digimag on Tue Nov 11, 2008 10:49 am; edited 6 times in total

----------

## TTK

Je pige pas tout ...

L'interet des acl ?

Un peu la même problématique: soit un projet "toto" dont les dev souhaitent partager un rep commun /ProjToto.

Je crée un groupe toto, j'y ajoute tous les développeurs, je mets /ProjToto en root:toto rwxrws--- et ça le fait non ?

----------

## digimag

 *TTK wrote:*   

> Je pige pas tout ...
> 
> L'interet des acl ?
> 
> Un peu la même problématique: soit un projet "toto" dont les dev souhaitent partager un rep commun /ProjToto.
> ...

 effectivement, rwxrws--- suffirait pour que tous les fichiers et répertoires soient avec le même groupe "toto".

Mais si les développeurs ont par défaut umask=077, que va-tu faire? Redéfinir les permissions sur rw-rw---- à chaque nouveau fichier créé? C'est pas très agréable. ACL peut aussi définir des permissions par défaut dans un répertoire. Le besoin est apparu car il n'est pas possible (à ma connaissance) de définir le umask sur un seul répertoire.

Autre problèmatique, PHP peut aussi créer des fichiers, avec ACL ils auront automatiquement les bonnes permissions  :Smile: 

Le Howto est tout à fait inutile si votre umask est inférieur ou égal à 027

----------

## TTK

Ah ouais, umask 22 ici ...

Un poil parano le 077 quand même non ? Ou alors il faut un groupe par user ... à la mandrake & co.

Je me suis souvent demandé si les ACL ne ralentissaient pas un peu le système. Sous sun os à une certaine époque je jurais que par les ACL mais j'ai jamais testé sous linux. Toujours trouvé une autre solution.

M'enfin bon je comprends mieux l'interêt (indéniable du coup) de ton tuto.

Tshaw

----------

## digimag

Source: Comment fonctionnent les ACL Posix sous Linux... - linuxfrench.net

Côté performance

Encore une fois lexcellent travail réalisé par A. Grünbacher permet dappréhender limpact des ACL sur la rapidité daccès aux systèmes de fichiers et ce en fonction de la plupart des types de système de fichiers. Il ressort de son étude que, sur un type de fichier ext2/ext3 et de façon très générale, la mise en oeuvre des ACL naugmente que de très peu les temps daccès aux fichiers et ne sera que peu perceptible par lutilisateur. En revanche, lutilisation des ACL avec le système de fichiers XFS (surtout 256) semble pénalisante.

----------

## Jacqueline

Bonjour.

 Un sujet intéressant ( parmi bien d'autres  :Very Happy:  ). je me suis bien amusée avec les acl, découvertes en passant de la Suse 9.0 à la 9.2, après avoir  découvert le sytème des droits de Linux, en créant divers utilisateurs  (utilisateur prenant alors le sens d'utilisation différentes de linux : bureautique, bidouilles diverses, etc.. ) et avec des partitions de données communes à plusieurs systèmes ( au diable l'avarice ! , mais  c'était dans le but de me familariser avec tout ça ! ) . C'est super les ACL   :Very Happy: 

J'avais  donc profité des acl pour donner plus de droits avec les acl à un des  user afin de pouvoir faire le ménage dans cette usine à gaz ! ( moi en l'occurence, pour ne pas le faire avec les droits de root,  j'aurais pu, mais bon c'est un cas d'école  ) 

Oui mais voilà je me suis retrouvée avec un problème avec plusieurs systèmes pour avoir accès à ces données sur des partitions communes  : J'attends surtout une confirmation   :Very Happy:   Les acl , sont bien inscrites physiquement sur les partitions elles mêmes  ? ( et dans les rep je suppose ? ) 

Avec le deuxième système ça ne marchait plus parce que je n'avais pas les mêmes numéros et noms de   user et de groupe   "privilégié" . j'ai refait les acl , mais ça ne marchait plus dans le premier système, ce qui m'obligeait à standardiser la création des users et des groupes sous les deux systèmes pour contourner ce problème.

 Je crois me souvenir  que si on met le même nom, ( avec des numéros de user et de groupe différents sur les deux systèmes, selon l'ordre de création ) , c'est le numéro de user correspondant qui l'emporte, comme si le numéro du user du système avec lequel on crée l'acl étendue était inscrit sur la partition....ou dans les répertoires.

Votre sujet me rappelle ce point où je l'avais laissé, avant de prendre une année sabatique   :Smile:  ( sans PC )   et j'avais une autre idée plus utile d'application des acl sur des partitions de données communes à plusieurs systèmes.

 Ravie d'échanger sur ce sujet...si vous êtes disponible.

----------

## yoyo

Bonjour et bienvenue parmis nous !   :Very Happy: 

 *Jacqueline wrote:*   

>  Je crois me souvenir  que si on met le même nom, ( avec des numéros de user et de groupe différents sur les deux systèmes, selon l'ordre de création ) , c'est le numéro de user correspondant qui l'emporte, comme si le numéro du user du système avec lequel on crée l'acl étendue était inscrit sur la partition....ou dans les répertoires.

 Alors je vais peut-être dire une bêtise (ça sera ni la première ni la dernière   :Rolling Eyes:  ) et d'autres me reprendront si besoin. Il me semble que le nom d'utilisateur et de groupe n'est qu'une astuce pour rendre le système "human readable", un peu comme les arguments "rxw" correspondent à un u/mask. C'est plus simple pour nous. Mais pour la machine se sont les numéros qui comptent (en gros, les numéros sont traduits en noms à l'affichage d'après les fichiers "/etc/passwd" et "/etc/group"). C'est donc forcément le numéro du user correspondant qui "l'emporte" et cela avec ou sans les acl. Il est donc bien utile dans le cas de partitions communes à plusieurs systèmes unix/linux de spécifier les UID/GID à la création des users/groups sur chaque système pour éviter les soucis.   :Rolling Eyes: 

Mes 0.02 cents

Et au fait, bravo et merci pour ce tuto digimag. J'aurai bien aimé que tu détailles un peu les commandes "setfacl" (bon, c'est sûrement dans les liens fournis mais bon, "poil dans la main quand tu nous tiens" ...   :Laughing: 

----------

