Qual é a diferença entre httpd_read_user_content e httpd_enable_homedirs?

8

O módulo apache do SELinux possui dois parâmetros booleanos semelhantes: httpd_read_user_contente httpd_enable_homedirs.

A página de manual diz que a primeira permite que o httpd leia o conteúdo do usuário e a segunda permite que o httpd leia os diretórios pessoais .

Qual a diferença entre eles?

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

Tsutomu
fonte

Respostas:

10

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

httpd_enable_homedirspermite que o Apache use sua UserDirdiretiva (ou seja, URLs que se parecem http://www.example.com/~username/).

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

Michael Hampton
fonte
2

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

$ sesearch --all -s httpd_t -b httpd_read_user_content
Foram encontradas 5 regras av semânticas:
   permitir httpd_t user_home_dir_t: dir {ioctl lê a pesquisa de bloqueio de getattr aberta}; 
   permitir httpd_t user_home_t: arquivo {ioctl read getattr lock open}; 
   permitir httpd_t user_home_t: dir {ioctl ler a pesquisa de bloqueio getattr aberta}; 
   permitir httpd_t home_root_t: dir {getattr search open}; 
   permita httpd_t home_root_t: lnk_file {leia getattr};
$ sesearch --allow -s httpd_t -b httpd_enable_homedirs
Foram encontradas 15 regras av semânticas:
   permitir httpd_t user_home_dir_t: dir {ioctl lê a pesquisa de bloqueio de getattr aberta}; 
   permitir httpd_t user_home_dir_t: lnk_file {read getattr}; 
   permitir httpd_t autofs_t: dir {ioctl ler pesquisa de bloqueio getattr aberta}; 
   permitir httpd_t cifs_t: arquivo {ioctl read getattr lock open}; 
   permitir httpd_t cifs_t: dir {ioctl ler pesquisa de bloqueio getattr aberta}; 
   permita httpd_t cifs_t: lnk_file {leia getattr}; 
   permitir httpd_t nfs_t: arquivo {ioctl read getattr lock open}; 
   permitir httpd_t nfs_t: dir {ioctl ler pesquisa de bloqueio getattr aberta}; 
   permita httpd_t nfs_t: lnk_file {leia getattr}; 
   permitir httpd_t user_home_t: arquivo {ioctl read getattr lock open}; 
   permitir httpd_t user_home_t: dir {ioctl ler a pesquisa de bloqueio getattr aberta}; 
   permitir httpd_t user_home_type: dir {getattr search open}; 
   permita httpd_t user_home_type: lnk_file {read getattr}; 
   permitir httpd_t home_root_t: dir {ioctl lê a pesquisa de bloqueio getattr aberta}; 
   permita httpd_t home_root_t: lnk_file {leia getattr}; 

Todas as regras do http_read_user_contentestã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 habilitar apenas o primeiro se quisermos colocar a raiz do documento no diretório inicial de um usuário.

Tsutomu
fonte