Por que o sistema de arquivos SELinux tem seu próprio dispositivo nulo?

3

Olhando através de /sys/fs/selinux , encontrei isto:

# ls -l /sys/fs/selinux/null
crw-rw-rw-. 1 root root 1, 3 Jan 24 02:47 /sys/fs/selinux/null

Qual é idêntico a /dev/null :

# ls -l /dev/null
crw-rw-rw-. 1 root root 1, 3 Jan 24 10:47 /dev/null

Então, qual é o sentido do SELinux ter seu próprio dispositivo nulo?

    
por Matthew Cline 25.01.2014 / 04:13

1 resposta

4

Isso é pouco explicado em Implementação do SELinux como um módulo de segurança do Linux

This results in a populated selinuxfs filesystem and sets up the special null device node used by SELinux when it closes unauthorized files upon a context-changing execve.

Aparentemente, os programas não podem usar /dev/null diretamente no contexto SELinux e eles needed sua própria versão. Isso era conhecido anteriormente como open_devnull e seu inception fornece mais alguns detalhes sobre por que isso foi necessário:

This patch against 2.6.6-rc3 changes the SELinux module to try to reset any descriptors it closes on exec (due to a lack of permission by the new domain to the inherited open file) to refer to the null device. This counters the problem of SELinux inducing program misbehavior, particularly due to having descriptors 0-2 closed when the new domain is not allowed access to the caller's tty. This is primarily to address the case where the caller is trusted with respect to the new domain, as the untrusted caller case is already handled via AT_SECURE and glibc secure mode.

    
por 25.01.2014 / 04:45