¿Cuál es la diferencia entre httpd_read_user_content y httpd_enable_homedirs?

8

El módulo apache de SELinux tiene dos parámetros booleanos similares: httpd_read_user_contenty httpd_enable_homedirs.

La página de manual dice que la primera permite que httpd lea el contenido del usuario y la segunda permite que httpd lea los directorios principales .

¿Cuál es la diferencia entre ellos?

¿Qué parámetro debo establecer verdadero si deseo permitir que httpd lea archivos en el /home/foodirectorio?

Tsutomu
fuente

Respuestas:

10

httpd_read_user_contentpermite que cualquier servidor web confinado lea archivos en directorios de inicio de usuarios /home.

httpd_enable_homedirspermite a Apache usar su UserDirdirectiva (es decir, URL que se parecen http://www.example.com/~username/).

Si solo está asignando nombres de dominio a los directorios de los usuarios, debería ser suficiente para habilitar el primero httpd_read_user_content, pero si desea usar los directorios de usuarios de Apache, debe habilitar ambos.

Michael Hampton
fuente
2

Después de investigar un poco, investigué las diferencias entre ellos usando el sesearchcomando:

$ sesearch --allow -s httpd_t -b httpd_read_user_content
Encontradas 5 reglas av semánticas:
   permitir httpd_t user_home_dir_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t user_home_t: archivo {ioctl read getattr lock open}; 
   permitir httpd_t user_home_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t home_root_t: dir {getattr search open}; 
   permitir httpd_t home_root_t: lnk_file {read getattr};
$ sesearch --allow -s httpd_t -b httpd_enable_homedirs
Encontradas 15 reglas semánticas av:
   permitir httpd_t user_home_dir_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t user_home_dir_t: lnk_file {read getattr}; 
   permitir httpd_t autofs_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t cifs_t: archivo {ioctl read getattr lock open}; 
   permitir httpd_t cifs_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t cifs_t: lnk_file {read getattr}; 
   permitir httpd_t nfs_t: archivo {ioctl read getattr lock open}; 
   permitir httpd_t nfs_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t nfs_t: lnk_file {read getattr}; 
   permitir httpd_t user_home_t: archivo {ioctl read getattr lock open}; 
   permitir httpd_t user_home_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t user_home_type: dir {getattr search open}; 
   permitir httpd_t user_home_type: lnk_file {read getattr}; 
   permitir httpd_t home_root_t: dir {ioctl read getattr lock search open}; 
   permitir httpd_t home_root_t: lnk_file {read getattr}; 

Todas las reglas del http_read_user_contentestán incluidas en el httpd_t -b httpd_enable_homedirs. Es decir, el alcance de este último es más amplio que el primero.

Como Michael dijo correctamente, deberíamos habilitar solo el primero si solo queremos colocar la raíz del documento en el directorio de inicio de un usuario.

Tsutomu
fuente