Linux restorecon – 10 Exemplos de comando para restaurar contexto SELinux

No seu servidor Linux, ter um contexto de segurança SELinux apropriado para arquivos e diretórios é muito importante.

Quando você adiciona seu arquivo personalizado a um diretório que já é gerenciado pela política SELinux e se seu arquivo personalizado não tiver o contexto SELinux apropriado, você não obterá o resultado esperado.

Restorecon significa Restore SELinux Context.

O comando restorecon irá redefinir o contexto de segurança SELinux para arquivos e diretórios para seus valores padrão. Isso só irá redefinir o atributo de tipo do contexto SELinux.

Neste tutorial, explicaremos como usar o comando restorecon com alguns exemplos práticos.

1. Restaurar Contexto SELinux de um Arquivo

No exemplo a seguir, o arquivo index.html tem “user_home_t” no contexto SELinux para o tipo. Isso está errado, e o apache não poderá servir este arquivo. Você verá a permissão negada no error_log para o apache com este contexto de segurança.

 # Cd / var / www / html

 # Ls -lZ index.html 
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t : s0 index.html

Nota: A opção Z (maiúsculas e minúsculas) no comando ls acima exibirá o contexto SELinux para um arquivo particular.

Quando estamos usando o comando restorecon, realmente não precisamos saber o contexto de segurança original correto para o arquivo. O restorecon descobrirá isso automaticamente para nós.

O exemplo a seguir restaurará o contexto de segurança de index.html para o valor apropriado. Como você vê abaixo, ele redefine a parte de tipo do contexto SELinux para “httpd_sys_content_t”. Este é o tipo correto. Agora, o apache poderá servir este arquivo sem nenhum erro.

 # Restorecon index.html

 # Ls -lZ index.html 
 -rw-rw-r--.  Centos centos unconfined_u: object_r: httpd_sys_content_t : s0 index.html

2. Exibir mudança de contexto de segurança na tela

Por padrão, quando você está executando o comando restorecon, ele não irá dizer se ele mudou o contexto do linux de segurança do arquivo.

V significa verbose. A opção -v exibirá na tela o contexto de segurança anterior e o recém-modificado contexto selinux conforme mostrado abaixo.

 # Restorecon -v index.html 
 Restoreecon reset /var/www/html/index.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0

3. Use o caractere curinga para processar vários objetos

Assim como qualquer outro comando Linux, você também pode usar curingas para nomes de arquivos como mostrado abaixo.

Isso afetará todos os arquivos que terminem com a extensão .html no diretório atual

 Restorecon -v * .html

Isso afetará todos os arquivos no diretório atual.

 Restorecon -v *

Isso afetará todos os arquivos no diretório / var / www / html.

 Restorecon -v / var / www / html / *

Isso afetará todos os arquivos que terminem com .htm (ou) .html (ou) .htm com qualquer outro caractere único no final.

 Restorecon -v * .htm?

4. Processar arquivos e diretórios recursivamente

Você também pode redefinir o contexto de segurança dos arquivos de forma recursiva. Use a opção -R como mostrado abaixo. Aqui estamos combinando R com opção v.

Isso irá redefinir o contexto ou todos os arquivos em / var / www / html e em seus subdiretórios.

 # Restorecon -vR / var / www / html
 Restoreecon reset /var/www/html/sales/graph.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0

Você também pode usar minúsculas r para recursivas. O seguinte é exatamente o mesmo que o comando acima.

 # Restorecon -vr / var / www / html

5. Salvar lista de arquivos com contexto incorreto do SELinux

Quando você está redefinindo o contexto SELinux para um grande conjunto de arquivos, se você estiver interessado em ver apenas o arquivo alterado, podemos usar a opção -v conforme explicado anteriormente. Mas, isso só será exibido na tela.

Se você quiser capturar a lista de arquivos com contexto de segurança incorreto em um arquivo de saída, use a opção -o.

O significa arquivo de saída.

No exemplo a seguir, estamos armazenando a lista de arquivos que foram afetados pelo comando restorecon no arquivo changed.log.

 # Restorecon -vR -o changed.log / var / www / html
 Restoreecon reset /var/www/html/about.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/contact.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/data.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/index.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset / var / www / html / contexto de vendas unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/sales/graph.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0

Como esperamos, este arquivo changed.log conterá a lista de nomes de arquivos afetados, juntamente com o caminho completo, conforme mostrado abaixo.

 # Cat changed.log
 /var/www/html/about.html
 /var/www/html/contact.html
 /var/www/html/data.html
 /var/www/html/index.html
 / Var / www / html / sales
 /var/www/html/sales/graph.html

6. Restaurar contexto baseado no arquivo de entrada

Você também pode restaurar o contexto de segurança de uma lista de arquivos que você possui de um arquivo de entrada.

No seguinte, em / var / www / html diretório, todos esses arquivos atualmente têm contexto de segurança incorreto.

 # Ls -lZ
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 about.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 contact.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 data.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 index.html
 Drwxrwxr-x.  Centos centos unconfined_u: object_r: user_home_t: s0 vendas

Crie um arquivo input.txt conforme mostrado abaixo, que terá apenas dois arquivos. Aqui deve indicar especificar o caminho completo do nome do arquivo, incluindo o diretório.

 # Cat input.txt
 /var/www/html/about.html
 /var/www/html/data.html

Para especificar este arquivo de entrada no restorecon, use a opção -f como mostrado abaixo. Isso mudará o contexto SELinux para apenas about.html e data.html como mostrado abaixo.

 # Restorecon -vf input.txt 
 Restoreecon reset /var/www/html/about.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/data.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0

Use o comando ls -lZ para verificar se apenas o contexto de segurança de dois arquivos é alterado.

 # Ls -lZ
 -rw-rw-r--.  Centos centos unconfined_u: object_r: httpd_sys_content_t: s0 about.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 contact.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: httpd_sys_content_t: s0 data.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 index.html
 -rw-r-r--.  Root root unconfined_u: object_r: httpd_sys_content_t: s0 input.txt
 Drwxrwxr-x.  Centos centos unconfined_u: object_r: user_home_t: s0 vendas

Nota: Em vez de especificar input.txt, você também pode especificar – o que solicitará a lista de arquivos de entrada a partir da entrada padrão.

7. Ignorar arquivos que não existem

No exemplo a seguir, criamos um input.txt que contém a lista de vários arquivos. Usaremos esta lista para redefinir o contexto de segurança.

 # Cat input.txt 
 /var/www/html/about.html
 /var/www/html/meeting.html
 /var/www/html/directions.html
 /var/www/html/data.html

Mas, como mostrado abaixo, isso exibirá a mensagem de erro quando um arquivo particular na lista acima não estiver presente.

 # Restorecon -f input.txt
 Restorecon: lstat (/var/www/html/meeting.html) falhou: nenhum arquivo ou diretório desse tipo
 Restorecon: lstat (/var/www/html/directions.html) falhou: nenhum arquivo ou diretório

Para evitar isso, você pode usar a opção -i. Eu ignoro. Como você vê abaixo, o comando a seguir com a opção -i não dá nenhuma das mensagens de erro acima sobre o arquivo faltando. Isso simplesmente ignorará os arquivos em falta e se moverá com o resto dos arquivos no input.txt.

 # Restorecon -if input.txt
 #

8. Execute somente o Contexto SELinux do Dry-Run of Restore

Em vez de mudar realmente o contexto SELinux dos arquivos, você pode apenas ver quais arquivos podem potencialmente ser alterados usando a opção -n.

A opção -n é como uma execução a seco.

Quando você usa isso, ele passará por todos os movimentos de executar o comando restorecon, mas não fará nada.

Como você vê abaixo, executámos o restorecon com a opção -n em todos os arquivos no diretório / var / www / html.

 # Restorecon -nv / var / www / html / *
 Restoreecon reset /var/www/html/about.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/contact.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/data.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/index.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset / var / www / html / contexto de vendas unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0

Embora a saída do restorecon acima mostre que o contexto SELinux para vários arquivos é alterado, ele realmente não fez nada, pois usamos a opção -n.

Quando você faz o ls -lZ como mostrado abaixo, você pode ver que o contexto SELinux não foi realmente alterado.

 # Ls -lZ / var / www / html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 about.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 contact.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 data.html
 -rw-rw-r--.  Centos centos unconfined_u: object_r: user_home_t: s0 index.html
 Drwxrwxr-x.  Centos centos unconfined_u: object_r: user_home_t: s0 vendas

9. Exibir o progresso atual durante a grande operação

Quando você está restaurando o contexto SELinux de vários arquivos, o comando pode demorar algum tempo. Se você quer saber o que o comando está fazendo atualmente, você pode opção -p.

A opção -p exibirá o número de arquivos que processou até o momento no incremento de 1000 arquivos. P significa progresso.

Como você vê abaixo, aqui estou reiniciando o contexto SELinux de todos os arquivos em diretório / var de forma recursiva com a opção -p.

Isso mostra que, até agora, arquivos 2k (2000 arquivos) são processados.

 # Restorecon -pr / var
 2k

Nota: Se você estiver reiniciando o contexto SELinux para todos os arquivos em seu sistema operacional usando a opção -p, ele mostrará a porcentagem completa atualmente.

10. Excluir diretórios a serem processados

Você também pode excluir o diretório a ser processado usando a opção -e. E significa Exclude.

No exemplo a seguir, estamos processando todos os arquivos no diretório / var / www / html, mas excluindo os arquivos do diretório / var / www / html / sales sub-directory.

 # Restorecon -e / var / www / html / sales -Rv / var / www / html
 Restoreecon reset /var/www/html/about.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/contact.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/data.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0
 Restoreecon reset /var/www/html/index.html context unconfined_u: object_r: user_home_t: s0-> unconfined_u: object_r: httpd_sys_content_t: s0

Observe que você deve usar o caminho completo do diretório na opção -e. Caso contrário, você receberá a seguinte mensagem de erro.

 # Restorecon -e vendas -Rv / var / www / html
 Caminho completo necessário para excluir: vendas.

Você também pode excluir vários diretórios fornecendo múltiplas opções -e como mostrado abaixo.

O seguinte exclui o diretório de vendas e marketing do processamento.

 Restorecon -e / var / www / html / sales -e / var / www / html / marketing -Rv / var / www / html
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s