2 votes

Problème de contrôle d'accès (ACL) et de lien symbolique

Je suis en train de configurer un serveur nginx. Je crée un utilisateur nginx pour exécuter le serveur. Et j'ai des données dans le répertoire home d'un autre utilisateur, victor. J'essaie de définir les ACL pour permettre à nginx de lire ces données ; voici ce que j'ai fait.

L'emplacement des données :

/home/victor/web/dossier/dossier2/dossier3/données

Je veux permettre à nginx de lire ces fichiers, donc je crée un dossier

/home/victor/webpartage/

Et je définis les ACL sur le dossier victor

# fichier: victor
# propriétaire: victor
# groupe: victor
utilisateur::rwx
utilisateur:nginx:--x
groupe::---
masque::--x
autre::---

Je ne veux pas que d'autres choses sous le dossier victor soient visibles depuis nginx, donc je le définis en lecture seule. Et je définis également les ACL sur webpartage

# fichier: webpartage
# propriétaire: victor
# groupe: victor
utilisateur::rwx
utilisateur:nginx:r-x
groupe::---
masque::--x
autre::---

Pour le moment, je peux ls sur /home/victor/webpartage/

[nginx@ home]#ls victor/webpartage
hello  static

Et pour que nginx accède aux fichiers dans données, je crée un lien symbolique statique.

ln -s /home/victor/web/dossier/dossier2/dossier3/données static

J'ai également défini les ACL pour permettre à nginx d'accéder au dossier de données ; cependant, ça ne fonctionne pas.

[nginx@ home]#ls victor/webpartage/static
ls: victor/webpartage/static: Permission denied

Pourquoi le compte nginx ne peut-il pas lire à partir du lien symbolique statique ? Comment puis-je exposer les données à nginx sans exposer également d'autres données importantes ?

5voto

Jonathan Leffler Points 299946

Pour utiliser un lien symbolique pour accéder à un fichier, vous avez besoin d'avoir les permissions d'accès sur tous les répertoires que la valeur symbolique traverse. Ainsi, vous devez vous assurer que nginx a accès à :

/
/home
/home/victor
/home/victor/web
/home/victor/web/folder
/home/victor/web/folder/folder2
/home/victor/web/folder/folder2/folder3
/home/victor/web/folder/folder2/folder3/data

Pour les répertoires, la permission de recherche (x) est suffisante (tant que le logiciel n'a pas besoin de parcourir la liste des fichiers du répertoire - il doit connaître les noms de fichiers). Pour les fichiers auxquels il doit accéder, nginx doit bien sûr aussi pouvoir les lire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X