Assim, como o próprio sistema
GNU/Linux, o SELinux opera em formato modular, ou seja, caso precise adicionar exceções, ou aprimoramento, de regras no SELinux para determinadas aplicações, como por exemplo um MTA, ou um servidor Web, não será necessária a recompilação do próprio sistema SELinux.
E sim, adicionar um código externo (módulo) que indique tal ação. Este módulo pode ser fornecido tanto pela equipe que administra a aplicação, quanto construída pelo próprio administrador do SELinux.
Obs.: Não confunda os módulos do SELinux com as variáveis booleanas. Os módulos são funções acrescentadas nas regras de determinada aplicação, já as variáveis booleanas, são permissões referentes à comunicação entre aplicação e objetos do sistema.
O comando que gerencia tais módulos no SELinux, é o
Semodule, e sua utilização é muito simples.
Para listar os módulos do SELinux:
# semodule -l
Onde:
-l = list
Saída do comando (resumida):
abrt 1.2.0
accountsd 1.0.0
ada 1.4.0
afs 1.5.3
aiccu 1.0.0
aide 1.5.0
aisexec 1.0.0
amanda 1.12.0
amavis 1.10.3
amtu 1.2.0
apache 2.1.2
apcupsd 1.6.1
arpwatch 1.8.1
asterisk 1.7.1
audioentropy 1.6.0
automount 1.12.
Caso precisemos desabilitar determinado módulo, como por exemplo, o módulo do Asterisk, utilizaremos a seguinte sintaxe do comando
semodule:
# semodule -d asterisk
Onde:
-d = disable
Agora, vamos listar os módulos, filtrando apenas o módulo do Asterisk:
# semodule -l | grep asterisk
Saída do comando:
asterisk 1.7.1 Disabled
Perceba que este módulo está presente, porém sem qualquer funcionalidade.
Para remover o módulo por completo, utilize o comando:
# semodule -r asterisk
Onde:
-r = remove
# semodule -l
Listando novamente os módulos, perceba que o mesmo não se encontra mais na listagem.
- Pergunta: E se eu precisar do módulo do Asterisk novamente, o que eu faço?
- Resposta: Por padrão, os arquivos de módulo do SELinux terminam com extensão ".pp" (Package Policy), portanto, para instalar um módulo no sistema SELinux, é necessário ter tal arquivo em mãos.
Simples, não?! Agora basta achar tal arquivo ".pp" do Asterisk.
Por padrão, o diretório
/usr/share/selinux/targeted/ contém diversos arquivos de pacotes de políticas (*.pp).
Estes arquivos estão inclusos no pacote "selinux-policy", e são utilizados para construir o arquivo de política.
Em diversas distribuições, como o CentOS e
Red Hat, tais arquivos podem estar compactados, porém, a descompactação não se faz necessária para instalação.
Como estamos trabalhando com módulos defaults, o arquivo ".pp" do Asterisk está armazenado neste diretório, portanto, vamos reativá-lo:
# cd /usr/share/selinux/targeted/
# semodule -i asterisk.pp.bz2
Onde:
-i = Install
# semodule -l | grep asterisk
Perceba que não precisamos habilitar o módulo novamente, apenas com a instalação do mesmo, ele já fica em modo
enable.
Caso o módulo não fique em modo
enable, basta executar o comando
semodule com a opção "-e", seguida do nome do módulo, no nosso caso, seria o "asterisk".
Para mais opções do comando
semodule, basta executar:
# man semodule