SELinux httpd gravar acesso a um diretório

8

Eu sou novo no SELinux. veio do debian. Eu quero dar acesso httpd a um diretório.

O SELinux Alert Browser sugere:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

Eu não consegui entender como funciona esse comando. Eu não especifico um caminho de diretório em qualquer lugar. como ele sabe qual diretório permitir o httpd?

Anteriormente, usei o grep para extrair texto da saída ou arquivo. Mas aqui o grep está sendo usado em um processo. Que eu não consegui.

Além disso, qual é a solução real. Se eu quiser dar acesso ao httpd write a um diretório?

    
por Neel Basu 23.02.2014 / 18:17

2 respostas

14

Veja como alterar permanentemente o contexto de um diretório:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

Aqui estão mais algumas documentações sobre os diferentes contextos para o httpd:

RHEL 7: link

RHEL 6: link

    
por 17.01.2015 / 21:44
3

O SELinux faz uso de atributos estendidos que podem ser anexados às estruturas de diretório no disco. Pense se estes como metadados. Access Control Lists (ACLs) sendo outro.

Os atributos estendidos que você precisa anexar a um diretório são chamados de contextos e o SELinux age como um policial de tráfego, garantindo que um executável com determinados contextos tenha permissão para acessar o sistema de arquivos com base nesses contextos. Você pode ver o que está disponível no diretório usando a opção -Z para ls .

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

Aqui você pode ver que esses diretórios têm o contexto httpd_sys_script_exec_t:s0 no cgi-bin dir. e o html dir. tem httpd_sys_content_t:s0 .

Você pode adicioná-los usando o comando chcon :

$ sudo chcon -t httpd_sys_content_t public_html

O comando que você está perguntando simplesmente carregará o módulo mypoll.pp Eu não acredito que ele concederá nenhuma permissão para nada, provavelmente há mais mensagens no audit.log que você está perdendo com o seu comando, que lhe dirá com mais detalhes o que você precisa fazer para permitir o acesso.

Eu encorajaria você a dedicar algum tempo e se familiarizar com o SELinux. É confuso no começo, mas geralmente é simples, depois de passar um tempinho com ele. Veja os recursos abaixo para você começar.

Referências

por 23.02.2014 / 19:13