1 votes

Comment définir le contexte SELinux pour les fichiers HTML mis à jour par Dropbox ?

J'essaie d'utiliser un dossier Dropbox partagé pour rendre les fichiers HTML facilement modifiables par plusieurs personnes, et je (re)monte le dossier Dropbox quelque part dans l'arborescence du site. /var/www/ avec le --bind option. J'ai configuré le contexte SELinux pour le dossier Dropbox afin que les éléments qui s'y trouvent reçoivent un message d'alerte. httpd_sys_content_t type, qui httpd (sur RHEL6) peut lire. Tout cela fonctionne et les fichiers sont disponibles sur le site web. La modification d'un fichier dans le dossier Dropbox sur le serveur web fonctionne également (le contexte SELinux est conservé).

Cependant, lorsque le fichier est mis à jour via Dropbox (par exemple, si quelqu'un d'autre modifie le fichier), le fichier résultant du côté récepteur (après que Dropbox l'ait mis à jour) obtient toujours un contexte de user_home_t Apache ne peut donc pas lire le fichier, ce qui entraîne une erreur 403 Forbidden (jusqu'à ce que je rétablisse manuellement le contexte).

J'ai essayé de définir le contexte pour ~/.dropbox/ à httpd_sys_content_t ce qui fonctionne également : les fichiers de cache ( ?) dans ~/.dropbox/l/ d'obtenir ce contexte, mais ensuite le fichier mis à jour en ~/Dropbox/ obtient toujours user_home_t . Cela indique que Dropbox met à jour le fichier à un autre endroit (vraisemblablement via sa méthode delta) et fait ensuite un équivalent de mv pour le déplacer dans le dossier Dropbox (puisque sous SELinux mv préserve le contexte de l'origine et cp le réinitialise en fonction de la destination).

Notes :

  1. Je ne souhaite pas désactiver SELinux (mais le faire résout le problème).
  2. En ce qui concerne l'utilisation de httpd_sys_content_t : Je pourrais éventuellement créer une politique spéciale pour traiter ces fichiers, ce qui pourrait être plus judicieux que d'utiliser simplement httpd_sys_content_t mais je m'en soucierai plus tard
  3. Je pourrais lancer un petit script qui ferait un restorecon -R sur le sous-dossier Dropbox approprié toutes les 5 ou 10 secondes, mais je préférerais que cela se produise plus tôt.

Alors : où Dropbox crée-t-il le fichier nouvellement mis à jour avant de le déplacer vers le dossier Dropbox ? Avez-vous une autre idée de ce que vous pourriez essayer ?

Danke!

David

2voto

James Mertz Points 390

Le fichier temporaire est créé dans ~/Dropbox/.dropbox.cache/ puis déplacé vers son emplacement réel, afin de garantir des mises à jour atomiques.

La solution #3 devrait fonctionner - vous pouvez utiliser incron il exécute la commande dès qu'un fichier est modifié.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X