Quelle est la différence entre httpd_read_user_content et httpd_enable_homedirs?

8

Le module apache de SELinux a deux paramètres booléens similaires: httpd_read_user_contentet httpd_enable_homedirs.

La page de manuel indique que le premier permet à httpd de lire le contenu utilisateur et le second permet à httpd de lire les répertoires personnels .

Quelle est la différence entre eux?

Quel paramètre dois-je définir true si je veux autoriser httpd à lire les fichiers du /home/foorépertoire?

Tsutomu
la source

Réponses:

10

httpd_read_user_contentpermet à tout serveur Web confiné de lire des fichiers dans les répertoires personnels des utilisateurs de /home.

httpd_enable_homedirspermet à Apache d'utiliser sa UserDirdirective (c'est-à-dire les URL qui ressemblent http://www.example.com/~username/).

Si vous mappez simplement les noms de domaine aux répertoires des utilisateurs, cela devrait suffire pour activer le premier httpd_read_user_content, mais si vous souhaitez utiliser les répertoires des utilisateurs Apache, vous devez activer les deux.

Michael Hampton
la source
2

Après avoir fait quelques recherches moi-même, j'ai étudié les différences entre elles en utilisant la sesearchcommande:

$ sesearch --allow -s httpd_t -b httpd_read_user_content
5 règles av sémantiques trouvées:
   autoriser httpd_t user_home_dir_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t user_home_t: file {ioctl read getattr lock open}; 
   allow httpd_t user_home_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t home_root_t: dir {getattr search open}; 
   allow httpd_t home_root_t: lnk_file {read getattr};
$ sesearch --allow -s httpd_t -b httpd_enable_homedirs
15 règles av sémantiques trouvées:
   autoriser httpd_t user_home_dir_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t user_home_dir_t: lnk_file {read getattr}; 
   autoriser httpd_t autofs_t: dir {ioctl read getattr lock search open}; 
   autoriser httpd_t cifs_t: file {ioctl read getattr lock open}; 
   autoriser httpd_t cifs_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t cifs_t: lnk_file {read getattr}; 
   autoriser httpd_t nfs_t: file {ioctl read getattr lock open}; 
   autoriser httpd_t nfs_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t nfs_t: lnk_file {read getattr}; 
   allow httpd_t user_home_t: file {ioctl read getattr lock open}; 
   allow httpd_t user_home_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t user_home_type: dir {getattr search open}; 
   allow httpd_t user_home_type: lnk_file {read getattr}; 
   autoriser httpd_t home_root_t: dir {ioctl read getattr lock search open}; 
   allow httpd_t home_root_t: lnk_file {read getattr}; 

Toutes les règles du http_read_user_contentsont incluses dans le httpd_t -b httpd_enable_homedirs. Autrement dit, la portée de ce dernier est plus large que le premier.

Comme Michael l'a dit correctement, nous ne devons activer que le premier si nous voulons simplement placer la racine du document dans le répertoire personnel d'un utilisateur.

Tsutomu
la source