Qual é a diferença entre httpd_read_user_content e httpd_enable_homedirs?

8

O módulo do Apache do SELinux tem dois parâmetros booleanos semelhantes: httpd_read_user_content e httpd_enable_homedirs .

A página man diz que o primeiro permite que o httpd leia o conteúdo do usuário e o segundo permite que o httpd leia diretórios home .

Qual é a diferença entre eles?

Qual parâmetro devo definir como verdadeiro se eu quiser permitir que o httpd leia arquivos no diretório /home/foo ?

    
por Tsutomu 28.12.2012 / 19:48

2 respostas

9

httpd_read_user_content permite que qualquer servidor da Web confinado leia arquivos nos diretórios iniciais do usuário em /home .

httpd_enable_homedirs permite que o Apache use sua diretiva UserDir (ou seja, URLs que parecem com http://www.example.com/~username/ ).

Se você está apenas mapeando nomes de domínio para os diretórios dos usuários, deve ser suficiente para habilitar o primeiro, httpd_read_user_content , mas se você quiser usar os diretórios de usuários do Apache, você deve habilitar ambos.

    
por 28.12.2012 / 20:57
2

Depois de fazer algumas pesquisas, investiguei as diferenças entre eles usando o comando sesearch :

$ sesearch --allow -s httpd_t -b httpd_read_user_content
Found 5 semantic av rules:
   allow 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
Found 15 semantic av rules:
   allow httpd_t user_home_dir_t : dir { ioctl read getattr lock search open } ; 
   allow httpd_t user_home_dir_t : lnk_file { read getattr } ; 
   allow httpd_t autofs_t : dir { ioctl read getattr lock search open } ; 
   allow httpd_t cifs_t : file { ioctl read getattr lock open } ; 
   allow httpd_t cifs_t : dir { ioctl read getattr lock search open } ; 
   allow httpd_t cifs_t : lnk_file { read getattr } ; 
   allow httpd_t nfs_t : file { ioctl read getattr lock open } ; 
   allow 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 } ; 
   allow httpd_t home_root_t : dir { ioctl read getattr lock search open } ; 
   allow httpd_t home_root_t : lnk_file { read getattr } ; 

Todas as regras do http_read_user_content estão incluídas no httpd_t -b httpd_enable_homedirs . Ou seja, o escopo deste último é mais amplo que o anterior.

Como Michael disse corretamente, devemos ativar apenas o primeiro caso desejemos apenas colocar o documento raiz no diretório inicial de um usuário.

    
por 30.12.2012 / 04:14