O SELinux oferece um sistema de Controle de Acesso Obrigatório - MAC (Mandatory Access Control) flexível incorporado ao kernel do Linux. Sob o Controle de Acesso Discricionário - DAC (Discretionary Access Control) padrão do Linux, um aplicativo ou processo rodando como um usuário (UID ou SUID) tem as permissões do usuário em relação a objetos como arquivos, soquetes, e outros processos. Rodar um kernel com MAC protege o sistema de aplicativos maléficos ou defeituosos que possam danificar ou destruir um sistema.
O SELinux define os direitos de acesso e transição de cada usuário, aplicativo, processo e arquivo no sistema. O SELinux então governa as interações destas entidades usando uma política de segurança que especifica quão severa ou branda uma certa instalação do Red Hat Enterprise Linux deve ser.
No dia-a-dia, os usuários, em grande parte, mal perceberão a existência do SELinux. Apenas os administradores de sistemas precisam considerar o nível de rigidez a ser implementado para os seus ambiente de servidores. A política pode ser tão severa ou branda quanto for preciso, e é altamente detalhada. Este nível de detalhamento dá ao kernel SELinux o controle completo e granular sobre todo o sistema.
Quando uma entidade (por exemplo, um aplicativo) tenta acessar um objeto (por exemplo, um arquivo), o servidor de imposição de políticas no kernel verifica um cache do vetor de permissões de acesso (AVC), onde permissões de entidades e objetos são temporariamente armazenadas. Se uma decisão não pode ser efetivada com base nos dados do AVC, o pedido continua até o servidor de segurança, o qual busca o contexto de segurança do aplicativo e do arquivo em uma matriz. A permissão é então concedida ou negada, com uma mensagem avc: denied detalhada em /var/log/messages caso a permissão seja negada. O contexto de segurança de entidades e objetos é obtido a partir da política instalada, a qual também fornece a informação para povoar a matriz do servidor de segurança.
Consulte o seguinte diagrama:
Ao invés de rodar em modo imposição, o SELinuxpode rodar em modo permissivo, onde o AVC é verificado, e negações são registradas, entretanto o SELinux não impõe a política. Isto pode ser útil para resolução de problemas e para o desenvolvimento ou o aprimoramento de políticas do SELinux.
Para maiores informações sobre o funcionamento do SELinux, consulte a Seção 4.2.3, “Recursos Adicionais”.