Os recursos são uma camada de escalonamento de privilégios semelhante à setuid, mas muito mais refinada; Por exemplo, um programa pode obter privilégios CAP_NET_RAW sem ter acesso total ao nível da raiz. É um grande passo em frente para "privilégios mínimos necessários" e controle de um servidor, por isso é bom, mas não é um Controle de Acesso Obrigatório; é uma escalada de privilégios.
O SELinux funciona nos conceitos de rótulos e permissões entre rótulos. Portanto, você pode conceder ao processo httpd
o rótulo "servidor da Web", todos os arquivos dentro da web o rótulo "arquivos da Web" e conceder "processos rotulados pelo servidor da Web podem ler arquivos da Web e nada mais".
Esta construção de rotulagem fica acima das permissões do sistema de arquivos e das permissões de ACL existentes. Mesmo se um arquivo for legível por todo o mundo, o SELinux poderá negar acesso a ele. Para que um processo receba acesso, ele precisa passar as permissões DAC (permissões do sistema de arquivos) e MAC (SELinux).
Do lado comercial do mundo, o eTrust Access Control (ou Control Minder, ou seja lá como ele é chamado atualmente; originalmente SEOS ) é outra camada MAC. Isso não usa rótulos para controlar o material, mas permite regras definidas pelo caminho e programas de soma de verificação, se forem usados em uma regra. Isso é mais flexível do que os rótulos do SELinux (e é multi-plataforma; por exemplo, Solaris, AIX, HPUX). Novamente, isso fica acima da camada DAC do sistema de arquivos; ambos precisam aprovar o pedido.