Question

Alors, pour mes clients à qui ont des sites hébergés sur mon serveur, je crée des comptes d'utilisateurs, avec des dossiers à domicile standards dans / home.

Configuration I une prison de SSH pour tous les utilisateurs de collective, parce que je suis vraiment contre l'utilisation d'un serveur FTP séparé. Ensuite, j'ai installé et ACL ajouté acl à mon /etc/fstab -. Tout bon

  1. I cd dans /home et chmod 700 ./*.
    • Actuellement, les utilisateurs ne peuvent pas voir le point dans d'autres utilisateurs des répertoires personnels (yay), mais apache ne peuvent pas les voir soit (boo)
    • . Je courus setfacl u:www-data:rx ./*. J'ai aussi essayé des répertoires individuels.
    • Maintenant apache peut voir à nouveau les sites, mais ne peut donc tous les utilisateurs. ACL a changé les permissions des dossiers à la maison pour 750.

Comment puis-je ACL de configuration afin que Apache peut voir les sites hébergés dans les dossiers de l'utilisateur et 2. Les utilisateurs ne peuvent pas voir en dehors de leur maison et dans les fichiers des autres.

Était-ce utile?

La solution

la réponse, puisque je trouve personnellement Depuis que je permuté la question (je ne savais pas ServerFault qu'après avoir demandé), je traverserai post la question appropriée pour les deux communautés.

de hayalci (sur ServerFault) commentaire que

  

chmod et setfacl ne fonctionnent pas trop bien ensemble.

a aidé une bonne affaire. Au lieu d'utiliser chmod pour empêcher que d'autres groupes d'accéder aux données, je:

cd /home
setfacl -m g::0 joeuser # Removes permissions for the owning group.
setfacl -m g:www-data:r joeuser # Adds read permissions for Apache
cd joeuser/joeuser.com/static/
setfacl -m g:www-data:rwx uploads # So apache can write to the uploads directory.

Autres conseils

Un truc que je l'ai utilisé sur des boîtes partagées est à:

  • récursive défini le contenu des répertoires de ne pas autoriser l'accès aux « autres » utilisateurs

    chmod -R o-rwx /home/*

  • mettre tous les répertoires de l'utilisateur de niveau supérieur des autorisations pour être exécutable par « autres » utilisateurs

    chmod o+x /home/*

  • modifier le groupe de répertoire public_html de chaque utilisateur www-data (ou votre groupe apache)

    chgrp www-data / home / * / public_html

  • modifier tous les répertoires sous / home / * / public_html à setgid

    find / home / user / public_html -type d -exec chmod 2750 {} \;

Ne pas ajouter de l'utilisateur de la www-data (ou groupe apache). Même si elles ne sont pas membres, l'astuce setgid sera toujours rendre les fichiers lisibles par apache. Ce n'est pas indéréglable (déplacement de fichiers ne change pas toujours propriétaire du groupe et parfois les autres autorisations utilisateur sont laissés si présents avant un déménagement), mais il ne fonctionne pas sur ma boîte. Espérons que cela aide un peu! Peut-être que quelqu'un d'autre aura une meilleure solution.

Ma façon typique de le faire, en supposant que tous les utilisateurs sont dans le groupe « utilisateurs »:

chmod 701 /home/*
chgrp users /home/*

En option, le même ne se le / la maison pour empêcher les utilisateurs de voir une liste des répertoires personnels. Cependant, ils peuvent tirer à peu près la même liste de / etc / passwd ou getent passwd

Maintenant, tout le monde dans le groupe d'utilisateurs sera vu refuser l'accès à tous homedirs (sauf leur propre). Les non-membres d'utilisateurs (tels que Apache et d'autres services) seront toujours en mesure de cd dans les homedirs, mais ne pourront pas faire ls.

chmod 755 /home/*/public_html <- remplacer par le chemin que vous utilisez www

Apache et d'autres services seront libres de cd / home / toto / public_html à la liste des fichiers et d'autre a besoin quel que soit webserver.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top