Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / SELinux

SELinux

Data de Publicação: 29/09/2024
O QUE É?

O tópico apresenta informações básicas sobre o Security-Enhanced Linux.

POR QUÊ?

Para compreender o SELinux e saber como configurá-lo no SLE Micro.

DEDICAÇÃO

A leitura leva aproximadamente 40 minutos.

1 Sobre o SELinux

O SELinux foi desenvolvido como uma solução de segurança adicional do Linux que usa a estrutura de segurança do kernel Linux. O objetivo era permitir uma política de segurança mais granular que fosse além dos Controles de Acesso Discricionários (DAC, Discretionary Access Controls) padrão: as permissões de arquivo tradicionais de proprietário/grupo/globais e leitura/gravação/execução.

O SELinux usa rótulos anexados a objetos (por exemplo, arquivos e soquetes de rede) e toma decisões de acesso com base neles.

A ação padrão do SELinux é negar qualquer acesso. O SELinux apenas permite ações que foram especificamente autorizadas em sua política. Outro recurso do SELinux que reforça a segurança é que ele permite o confinamento rigoroso de processos até o ponto em que os processos não conseguem acessar arquivos de outros processos no mesmo sistema.

O SELinux foi projetado para aprimorar as soluções de segurança existentes, não para substituí-las. Por exemplo, o controle de acesso discricionário (DAC) ainda é aplicado, mesmo que o sistema use o SELinux. Se o DAC negar o acesso primeiro, o SELinux não será usado, pois o acesso já foi bloqueado por outro mecanismo.

2 Obtendo o SELinux

O SELinux é instalado por padrão durante a instalação do SLE Micro pelo YaST ou faz parte das imagens predefinidas.

Se o SELinux não está configurado no sistema, execute o seguinte comando:

# transactional-update setup-selinux

Reinicialize o sistema após a conclusão do comando. O comando instala a política do SELinux, se ela não estiver instalada, define o modo enforcing do SELinux e reconstrói o initrd.

3 Modos do SELinux

O SELinux pode ser executado em um destes três modos: disabled, permissive ou enforcing.

O uso do modo disabled significa que nenhuma regra da política do SELinux é aplicada e o sistema não está protegido. Portanto, não recomendamos o uso do modo disabled.

No modo permissive, o SELinux está ativo, a política de segurança é carregada, o sistema de arquivos é rotulado e as entradas de negação de acesso são registradas. No entanto, a política não é imposta e, portanto, nenhum acesso é, de fato, negado.

No modo enforced, a política de segurança é aplicada. Cada acesso que não é explicitamente permitido pela política é negado.

Para obter informações sobre como alternar entre os modos do SELinux, consulte a Seção 3.1, “Mudando o modo do SELinux”.

3.1 Mudando o modo do SELinux

Você pode alternar o modo do SELinux temporariamente ou permanentemente.

3.1.1 Mudando o modo do SELinux temporariamente

Para definir o SELinux como permissive ou enforcing temporariamente, use o comando setenforce.

O comando setenforce tem a seguinte sintaxe:

# setenforceMODE_ID

em que MODE_ID é 0 para o modo permissive ou 1 para o modo enforced.

Lembre-se de que você não pode desabilitar o SELinux usando o comando setenforce.

3.1.2 Mudando o modo do SELinux permanentemente

Para fazer mudanças no modo do SELinux que persistam após a reinicialização do sistema, edite o arquivo de configuração /etc/selinux/config. Nesse arquivo, você também pode desabilitar o SELinux no sistema. No entanto, essa ação não é recomendada. Se o SELinux estiver possivelmente causando problemas no sistema, alterne para o modo permissive e depure o sistema.

No arquivo /etc/selinux/config, mude o valor de SELINUX para disabled, permissive ou enforced da seguinte maneira:

SELINUX=disabled

As mudanças no arquivo serão aplicadas após a próxima reinicialização.

Nota
Nota: Rotulando novamente o sistema após alternar do modo disabled

Se você desabilitar e, mais tarde, habilitar o SELinux no sistema, certifique-se de rotular novamente o sistema. Quando o SELinux está desabilitado, e você faz mudanças no sistema de arquivos, as mudanças não são mais refletidas no contexto (por exemplo, novos arquivos não têm nenhum contexto). Portanto, você precisa rotular novamente o sistema usando o comando restorecon, o parâmetro de boot autorelabel ou criando um arquivo que acionará o novo rótulo na próxima inicialização. Para criar o arquivo, execute o seguinte comando:

# touch /etc/selinux/.autorelabel

Após a reinicialização, o arquivo /etc/selinux/.autorelabel é substituído por outro arquivo de flag /etc/selinux/.relabelled, para evitar que o novo rótulo seja aplicado às reinicializações subsequentes.

3.1.3 Verificando o modo do SELinux ativo

Para verificar o modo, execute o seguinte comando:

# getenforce

O comando deve retornar permissive ou enforced, dependendo do MODE_ID inserido.

3.2 Verificando se o SELinux está funcionando

Se você está fazendo mudanças na configuração, pode ser útil alternar para o modo permissivo. Durante esse período, os usuários podem rotular os arquivos incorretamente e, portanto, causar problemas ao reverter para o modo de imposição.

Para retornar o sistema ao estado seguro, execute as seguintes etapas:

  1. Redefina o contexto de segurança:

    > sudo restorecon -R /
  2. Alterne para o modo de imposição definindo o SELINUX=enforcing em /etc/selinux/config.

  3. Reinicialize o sistema e efetue login novamente.

  4. Execute o comando sestatus -v. Ele deve retornar uma saída semelhante a esta:

    > sudosestatus -v
    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Memory protection checking:     requested(insecure)
    Max kernel policy version:      33
    
    Process contexts:
    Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    Init context:                   system_u:system_r:init_t:s0
    /usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023
    
    File contexts:
    Controlling terminal:           unconfined_u:object_r:user_tty_device_t:s0
    /etc/passwd                     system_u:object_r:passwd_file_t:s0
    /etc/shadow                     system_u:object_r:shadow_t:s0
    /bin/bash                       system_u:object_r:shell_exec_t:s0 \
                                    -> system_u:object_r:shell_exec_t:s0
    /bin/login                      system_u:object_r:login_exec_t:s0
    /bin/sh                         system_u:object_r:bin_t:s0 \
                                    -> system_u:object_r:shell_exec_t:s0
    /sbin/agetty                    system_u:object_r:bin_t:s0 \
                                    -> system_u:object_r:getty_exec_t:s0
    /sbin/init                      system_u:object_r:bin_t:s0 -> \
                                    system_u:object_r:init_exec_t:s0
    /usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
  5. Se o sistema não estiver funcionando apropriadamente, consulte os arquivos de registro em /var/log/audit/audit.log. Para obter mais detalhes, consulte SELinux troubleshooting.

4 Contexto de segurança do SELinux

O contexto de segurança é um conjunto de informações atribuídas a um arquivo ou processo. Ele consiste em usuário, função, tipo, nível e categoria do SELinux. Essas informações são usadas para tomar decisões de controle de acesso.

Campos de contexto do SELinux
Usuário do SELinux

Uma identidade definida na política que é autorizada para um conjunto específico de funções e para uma faixa de níveis específica. Cada usuário do Linux é mapeado para apenas um usuário do SELinux. No entanto, um usuário do SELinux pode ter várias funções.

O SELinux não usa a lista de contas de usuário mantida pelo Linux no /etc/passwd, mas usa o próprio banco de dados e mapeamento. Por convenção, o nome da identidade recebe o sufixo _u, por exemplo: user_u.

Quando uma nova conta do Linux é criada e o usuário do SELinux não é atribuído à conta, o usuário do SELinux padrão é usado. Normalmente, o valor padrão é unconfined_u. Para ver um procedimento sobre como mudar o valor padrão, consulte a Seção 7.5.2, “O comando semanage login.

role

Define um conjunto de permissões que um usuário pode receber. A função atribuída a um usuário define os tipos que ele pode acessar. Por convenção, o nome da função recebe o sufixo _r, por exemplo: system_r.

type

O tipo transmite informações sobre como arquivos e processos específicos podem interagir. Um processo consiste em arquivos com um tipo concreto do SELinux e não pode acessar arquivos de outro tipo. Por convenção, o nome do tipo recebe o sufixo _t, por exemplo: var_t.

level

Um atributo opcional que especifica a faixa de níveis de permissão na segurança multinível.

category

Um atributo opcional que permite adicionar categorias a processos, arquivos e usuários. Um usuário pode acessar arquivos que tenham a mesma categoria.

Veja abaixo um exemplo de contexto do SELinux:

allow user_t bin_t:file {read execute gettattr};

Esta regra de exemplo especifica que o usuário com o tipo de contexto user_t (esse usuário é chamado de objeto de origem) tem permissão para acessar objetos do arquivo de classe com o tipo de contexto bin_t (o destino), usando as permissões read, execute e getattr.

5 Visão geral da política do SELinux

A política é o principal componente do SELinux. A política do SELinux define regras que especificam quais objetos podem acessar quais arquivos, diretórios, portas e processos em um sistema. Para fazer isso, um contexto de segurança é definido para todos eles.

Uma política do SELinux contém um grande número de regras. Para torná-las mais gerenciáveis, as políticas costumam ser divididas em módulos. Isso permite que o administrador ative ou desative a proteção para diferentes partes do sistema.

Ao compilar a política para seu sistema, você pode trabalhar com uma política modular ou monolítica, em que uma política extensa é usada para proteger tudo no sistema. É altamente recomendável usar uma política modular em vez de uma monolítica. As políticas modulares são muito mais fáceis de gerenciar.

O SLE Micro já vem com a política targeted do SELinux.

5.1 Trabalhando com módulos do SELinux

Como administrador, você pode ativar ou desativar módulos. Isso poderá ser útil se você quiser desabilitar apenas uma parte da política do SELinux e não quiser executar um serviço específico sem a proteção do SELinux.

Para ver todos os módulos de política do SELinux em uso, execute o comando:

        semodule -l

Após obter o nome do módulo que deseja desativar, execute o comando:

> sudo semodule -d MODULENAME

Para ativar o módulo de política, execute o comando:

> sudo semodule -e MODULENAME

5.2 Criando políticas para contêineres

O SLE Micro é fornecido com uma política que, por padrão, não permite que os contêineres acessem arquivos que não façam parte dos dados dos contêineres. Por outro lado, todo o acesso à rede é permitido. Normalmente, os contêineres são criados com montagens de vinculação e devem ser capazes de acessar outros diretórios, como /home ou /var. Talvez você queira ter a opção de permitir o acesso a esses diretórios ou, ao contrário, restringir o acesso de determinadas portas ao contêiner, mesmo que o SELinux seja usado no sistema. Nesse caso, você precisa criar novas regras de política que habilitem ou desabilitem o acesso. Para essa finalidade, o SLE Micro oferece a ferramenta Udica.

O procedimento a seguir descreve como criar uma política personalizada para seus contêineres:

  1. Verifique se o SELinux está no modo de imposição. Para obter informações detalhadas, consulte a Seção 3.1, “Mudando o modo do SELinux”.

  2. Inicie um contêiner usando os seguintes parâmetros:

    # podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

    O contêiner é executado com a política padrão que não permite acesso aos pontos de montagem, mas não restringe outras portas.

  3. Você pode sair do contêiner.

  4. Obtenha o ID do contêiner:

    # podman ps -a
    
    CONTAINER ID  IMAGE                                                                              COMMAND     CREATED        STATUS            PORTS               NAMES
    e59f9d0f86f2  registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest  /bin/bash   8 minutes ago  Up 8 seconds ago  0.0.0.0:21->21/tcp  zen_ramanujan
  5. Crie um arquivo JSON que o Udica usará para criar uma política personalizada para o contêiner:

    # podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILE

    Por exemplo, substitua OUTPUT_JSON_FILE por container.json.

  6. Execute o Udica para gerar uma política de acordo com os parâmetros do contêiner:

    # udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICY

    Por exemplo:

    # udica -j container.json custom_policy
  7. De acordo com as instruções fornecidas, carregue os módulos de política executando:

    # semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}
  8. Execute um contêiner com o novo módulo de política usando a opção --security-opt da seguinte maneira:

    # podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

6 Boolianos do SELinux

Os boolianos do SELinux suportam uma abordagem flexível de gerenciamento de políticas. Por exemplo, eles permitem desabilitar uma política específica em um servidor e manter a mesma política ativa em outro. Em outras palavras, um booliano pode ser considerado como um switch de uma regra de política. Em vez de mudar uma política específica, você pode desativá-la. No código da política, os boolianos são chamados de ajustáveis. Como estão incluídos na política, eles ficam disponíveis assim que a política é carregada.

As mudanças no valor dos boolianos podem ser persistentes ou temporárias, durando até o término da sessão.

O SELinux oferece ferramentas que permitem listar e ver detalhes ou mudar o estado dos boolianos. Consulte as seções a seguir para obter detalhes.

6.1 Trabalhando com boolianos

6.1.1 Listando boolianos

Você pode usar o comando getsebool ou semanage para listar os boolianos definidos no momento. Para listar todos os boolianos definidos no momento, junto com os respectivos estados, execute o seguinte comando:

# getsebool -a

abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...

Para obter mais detalhes sobre boolianos específicos, você pode usar o comando semanage da seguinte maneira:

# semanage boolean -l

SELinux boolean               State   Default     Description

abrt_anon_write               (off  ,  off)       Allow abrt to anon write
abrt_handle_event             (off  ,  off)       Allow abrt to handle event
abrt_upload_watch_anon_write  (on   ,   on)       Allow abrt to upload watch anon write

Para saber o status de cada booliano, você pode usar o seguinte comando:

# getseboolBOOLEAN_NAME

Se preferir, use o comando grep na saída de semanage boolean:

# semanage boolean -l | grepBOOLEAN_NAME

6.1.2 Alternando boolianos

É possível usar os comandos setsebool e semanage para alternar o valor dos boolianos. Você pode mudar o status do booliano de forma persistente ou apenas temporária até o término da sessão. Para mudar o valor de um booliano temporariamente, execute o seguinte comando:

# setseboolBOOLEAN_NAMEBOOLEAN_VALUE

em que BOOLEAN_VALUE é on ou off.

Para mudar o valor de um booliano persistentemente, execute o seguinte comando:

# setsebool -PBOOLEAN_NAMEBOOLEAN_VALUE

Se preferir, use o comando semanage:

# semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME

em que BOOLEAN_VALUE é on ou off.

Um único booliano pode habilitar ou desabilitar várias regras de política. Para ver quais regras de política são habilitadas ou desabilitadas por quais boolianos, use a ferramenta sedispol, que pode analisar o arquivo de política:

# sedispol /etc/selinux/targeted/policy/policy.32

Como as regras de política geralmente são enormes, recomendamos configurar um arquivo de saída selecionando f e especificando um nome de arquivo. Após especificar o nome de arquivo, pressione 6. Em seguida, você pode inspecionar o arquivo.

7 Ferramentas para gerenciar o SELinux

O SLE Micro oferece a você ferramentas para gerenciar o SELinux em seu sistema. Se as ferramentas descritas abaixo não estiverem instaladas em seu sistema, instale-as executando:

# transactional-update pkg install policycoreutils-python-utils

Após a instalação bem-sucedida, reinicialize o sistema.

7.1 Usando a opção Z

No sistema em que o SELinux está instalado e configurado, você pode usar -Z para comandos regulares, como ls, id ou ps. Usando essa opção, você pode exibir o contexto de segurança de arquivos ou processos. Por exemplo, com o comando ls:

> ls -Z /etc/shadow

        system_u:object_r:shadow_t:s0 /etc/shadow

7.2 O comando chcon

O nome do comando chcon significa mudança de contexto. O comando pode mudar o contexto de segurança completo de um arquivo para o valor fornecido na CLI ou pode mudar partes do contexto. Se preferir, insira um arquivo que sirva como referência.

Para mudar o contexto de segurança completo de um arquivo, a sintaxe do comando é a seguinte:

# chconSECURITY_CONTEXTFILENAME

em que:

  • SECURITY_CONTEXT está no formato: SELinux_USER:ROLE:TYPE:LEVEL:CATEGORY. Por exemplo, o contexto pode ser: system_u:object_r:httpd_config_t:s0.

  • FILENAME é um caminho para o arquivo cujo contexto deve ser mudado.

Para definir um contexto de segurança de acordo com um arquivo fornecido que serve como referência, execute o chcon da seguinte maneira:

# chcon --reference=REFERENCE_FILEFILENAME

em que:

  • REFERENCE_FILE é um caminho para um arquivo que deve ser usado como referência.

  • FILENAME é um caminho para o arquivo cujo contexto deve ser mudado.

Se preferir, mude apenas uma parte do contexto de segurança. A sintaxe geral do comando chcon é a seguinte:

# chconCONTEXT_OPTIONCONTEXT_PARTFILENAME

As opções e os argumentos têm o seguinte significado:

  • dependendo da parte do contexto, CONTEXT_OPTION pode ser qualquer um dos seguintes:

    -u resp --user

    indica que um contexto de usuário do SELinux será mudado no arquivo fornecido:

    # chcon -u system_u logind.conf
    -r resp --role

    apenas a parte da função será mudada no contexto do arquivo fornecido:

    # chcon -r object_r logind.conf
    -t resp --type

    apenas a parte do tipo será mudada no contexto do arquivo fornecido:

    # chcon -t etc_t logind.conf
    -l resp --range

    apenas a parte da faixa do contexto de segurança será mudada:

    # chcon -l s0 logind.conf
  • CONTEXT_PART é o valor específico do contexto de segurança que será definido.

  • FILENAME é um caminho para o arquivo cujo contexto será mudado.

Nota
Nota: Usando chcon em links simbólicos

Por padrão, quando você muda o contexto de segurança em um link simbólico, o contexto do destino do link é mudado e o contexto do link simbólico não é mudado. Para forçar o chcon a mudar o contexto do link simbólico, e não o destino do link, use a opção --no-dereference mostrada abaixo:

# chcon --no-dereference -u system_u -t etc_t network.conf

Você pode mudar o contexto de todos os arquivos em um diretório usando a opção recursiva:

# chcon --recursive  system_u:object_r:httpd_config_t:s0 conf.d

7.3 Comandos getenforce e setenforce

O comando getenforce retorna o modo do SELinux atual: Enforcing, Permissive ou Disabled.

# getenforce

Permissive

O comando setenforce muda temporariamente o modo do SELinux para imposição ou permissivo. Não é possível usar esse comando para desabilitar o SELinux. Lembre-se de que a mudança permanece apenas até a próxima reinicialização. Para mudar o estado permanentemente, siga a descrição na Seção 3.1, “Mudando o modo do SELinux”.

# setenforceMODE_ID

em que MODE_ID é 0 para o modo permissive ou 1 para o modo enforced.

7.4 O script fixfiles

O script permite que você execute as seguintes tarefas com o contexto de segurança:

  • verificar se o contexto está correto

  • mudar qualquer rótulo de contexto de arquivo incorreto

  • renomear seu sistema se você adicionar uma nova política

Veja a seguir a sintaxe do script:

# fixfiles [OPTIONS] ARGUMENT

em que:

  • OPTIONS pode ser o seguinte:

    -l LOGFILE

    grava a saída no arquivo fornecido

    -o OUTPUT_FILE

    grava no arquivo de saída fornecido os nomes de todos os arquivos cujo contexto seja diferente do padrão

    -F

    força a redefinição do contexto

  • ARGUMENT pode ser um dos seguintes:

    check

    mostra o contexto do arquivo anterior e atual de um rótulo incorreto sem realizar nenhuma mudança

    relabel

    reclassifica contextos de arquivo incorretos de acordo com a política carregada no momento

    restore

    restaura contextos de arquivo incorretos aos valores padrão

    verify

    lista todos os arquivos com rótulos de contexto de arquivo incorretos sem realizar nenhuma mudança

7.5 O comando semanage

O comando semanage pode ser usado para configurar partes da política sem a necessidade de recompilar a política de fontes. O comando permite executar as seguintes tarefas:

  • gerenciar boolianos usando o argumento boolean. Para obter detalhes sobre boolianos, consulte a Seção 6.1, “Trabalhando com boolianos”.

  • ajustar o contexto dos arquivos usando o argumento fcontext

  • gerenciar mapeamentos de usuários usando o argumento login

  • gerenciar usuários do SELinux usando o argumento user

  • gerenciar módulos de política do SELinux usando o argumento module

A sintaxe geral do comando tem a seguinte aparência:

# semanageARGUMENTOPTIONS [OBJECT_NAME]

em que:

  • ARGUMENT é um dos seguintes: login, user, fcontext, boolean e module.

  • OPTIONS depende do ARGUMENT especificado. As opções comuns estão descritas em Opções comuns.

  • OBJECT_NAME, dependendo do ARGUMENT especificado, pode ser um nome de login, de módulo ou de arquivo ou um usuário do SELinux.

Opções comuns
-a, --add

adiciona um objeto fornecido

-h, --help

imprime o comando de ajuda

--extract

exibe os comandos que foram usados para mudar o sistema (boolianos, contexto de arquivo etc.).

-l, --list

lista todos os objetos

-m, --modify

modifica o objeto fornecido

-n, --noheading

modifica a saída da operação de listagem omitindo os cabeçalhos.

-s, --seuser

especifica o usuário do SELinux.

Outras opções são específicas de determinados comandos semanage e estão descritas nas seções correspondentes.

7.5.1 O comando semanage fcontext

Usando o comando semanage fcontext, você pode executar as seguintes tarefas:

  • consultar definições de contexto de arquivo

  • adicionar contextos a arquivos

  • adicionar suas próprias regras

As mudanças feitas no contexto do arquivo usando o comando semanage fcontext não exigem modificações ou recompilação da política.

Além das opções comuns descritas em Opções comuns, o comando semanage fcontext usa as seguintes opções:

-e, --equal

a opção permite usar o contexto do caminho fornecido para rotular arquivos em um diretório diferente (o caminho de destino especificado). Por exemplo, para atribuir o mesmo contexto que /home tem a um diretório pessoal alternativo /export/home. Se você usar essa opção, precisará inserir o caminho de origem e de destino:

# semanage fcontext -a -e /home /export/home
-f, --ftype

especifique um tipo de arquivo. Use um dos seguintes valores:

  • a: todos os arquivos, que também é o valor padrão

  • b: um dispositivo de blocos

  • c: um dispositivo de caracteres

  • d: um diretório

  • f: arquivos regulares

  • l: um link simbólico

  • p: um named pipe

  • s: um soquete

7.5.2 O comando semanage login

O semanage login permite executar as seguintes tarefas:

  • Mapear usuários do Linux em um determinado usuário do SELinux. Por exemplo, para mapear o usuário do Linux tux em sysadm_u, execute o comando:

    # semanage login -a -s sysadm_u tux
  • Mapear um grupo de usuários do Linux em um determinado usuário do SELinux. Por exemplo, para mapear usuários do grupo writers em user_u, execute o comando:

    # semanage login -a -s user_u %writers

    O grupo é listado na saída de semanage login -l, prefixado com o caractere %.

    Lembre-se de que o grupo de usuários deve ser o principal, pois o mapeamento de usuários do SELinux em grupos Suplementares pode resultar em mapeamentos incompatíveis.

    # semanage login -m -s staff_u %writers
  • Mapear usuários do Linux em uma faixa de segurança MLS/MCS específica do SELinux.

  • Modificar o mapeamento já criado. Para isso, basta substituir a opção -a por -m nos comandos anteriores.

  • Definir o usuário padrão do SELinux para novos usuários do Linux. O usuário padrão do SELinux costuma ser unconfined_u. Para mudar o valor para staff_u, execute o comando:

    # semanage login -m -s staff_u __default__

7.5.3 O comando semanage boolean

O comando semanage boolean é usado para controlar os boolianos na política do SELinux.

A sinopse do comando tem a seguinte aparência:

semanage boolean [-h] [-n]  [ --extract |
       --deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]

Além das opções comuns, você pode usar as seguintes opções específicas do comando semanage boolean:

--list -C

Para exibir uma lista de modificações locais em boolianos.

-m --on | -1

Para ativar o booliano fornecido.

-m --off | -0

Para desativar o booliano fornecido.

-D, --deleteall

Para apagar todas as modificações locais em boolianos.

O uso mais comum do comando é ativar ou desativar um booliano específico. Por exemplo, para ativar o booliano authlogin_yubikey, execute:

# semanage boolean -m on authlogin_yubikey

7.5.4 O comando semanage user

O comando semanage user controla o mapeamento entre o usuário do SELinux e as funções e os níveis MLS/MCS.

Além das opções comuns descritas em Opções comuns, o comando semanage use usa as seguintes opções:

-R [ROLES], --roles [ROLES]

Uma lista de funções do SELinux. Você pode colocar várias funções entre aspas duplas e separá-las com espaços ou usar -R várias vezes.

Usando esse comando, você pode executar as seguintes tarefas:

  • Listar o mapeamento de usuários do SELinux em funções executando:

    # semanage user -l
  • Mudar as funções atribuídas ao usuário user_u do SELinux:

    # semanage user -m -R "system_r unconfined_r user_r"
  • Atribuir para admin_u a função staff_r e a uma categoria s0:

    # semanage user -a -R "staff_r -r s0 admin_u
  • Criar um novo usuário do SELinux, por exemplo, admin_u com a função staff_r. Você também precisa definir o prefixo de rótulo para esse usuário usando -P:

    # semanage user -a -R "staff_r" -P admin admin_u

7.5.5 O comando semanage module

O comando semanage module pode instalar, remover, desabilitar ou habilitar módulos de política do SELinux.

Além das opções comuns descritas em Opções comuns, o comando semanage fcontext usa as seguintes opções:

-d, --disable

Para desabilitar o módulo de política do SELinux fornecido:

# semanage module --disable MODULE_NAME
-e, --enable

Para habilitar o módulo de política do SELinux fornecido:

# semanage module --enable MODULE_NAME

7.6 O comando sestatus

O sestatus obtém o status de um sistema em que o SELinux está sendo executado.

A sintaxe genérica do comando é a seguinte:

sestatus [OPTION]

Quando executado sem opções e argumentos, o comando gera as seguintes informações:

# sestatus

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     requested (insecure)
Max kernel policy version:      33

O comando pode ter as seguintes opções:

-b

Exibe o status dos boolianos no sistema.

-v

Exibe o contexto de segurança dos arquivos e processos listados no arquivo /etc/sestatus.conf.