No Redhat, o que significa “kernel.suid_dumpable = 1”?

9

Estou executando um script bash para copiar alguns arquivos de log e, em seguida, reiniciar um serviço em uma caixa da Red Hat. Toda vez que executo o script, recebo o seguinte no meu console:

[root@servername ~]# sh /bin/restart_nss.sh
kernel.suid
_dumpable = 1
    Parando o serviço: [OK]
    Iniciando o serviço: [OK]
    [root @ servername ~] #

O que significa "kernel.suid_dumpable = 1" neste caso?

Obrigado Vingador IVR

    
por IVR Avenger 20.08.2009 / 21:10

2 respostas

13

Alguns antecedentes:

O bit setuid:
O bit setuid em um arquivo executável faz com que os executáveis executados por qualquer usuário sejam executados como se estivessem sendo executados pelo proprietário do executável. Portanto, se setuid é definido em um programa que pertence a root, não importa quem o executa, ele será executado com privilégios de root. É claro que não é tão simples, veja o artigo da Wikipedia, ou obtenha uma cópia da Programação de Steven no Ambiente Unix.

Um dump principal:
Um core dump é um despejo da memória de trabalho do programa em um arquivo. Veja este artigo da wikipedia .

suid_dumpable :
Isto controla se o núcleo pode ser despejado de um programa setuid como descrito acima. Ver abaixo. Este é um ajuste do kernel, você pode alterá-lo com:

sudo sysctl -w kernel.suid_dumpable=2

Você saberia mais sobre esse ajuste na documentação do seu código-fonte, que, se instalado, pode ser encontrado em um diretório como: /usr/src/linux-source-2.6.27/Documentation/sysctl/. Nesse caso, a referência abaixo está em fs.txt nesse diretório. Use o comando uname -a para descobrir sua versão do kernel.

Por que é importante:

Pode ser um risco de segurança:
Portanto, a ideia é que, se houver despejos básicos e um usuário regular puder lê-los, eles poderão descobrir informações privilegiadas. Se o programa for bem guardado, ele teria informações privilegiadas na memória, e o usuário pode ler o despejo, eles podem descobrir informações privilegiadas.

Referência:

This value can be used to query and set the core dump mode for setuid
or otherwise protected/tainted binaries. The modes are

0 - (default) - traditional behaviour. Any process which has changed
   privilege levels or is execute only will not be dumped
1 - (debug) - all processes dump core when possible. The core dump is
   owned by the current user and no security is applied. This is
   intended for system debugging situations only.
2 - (suidsafe) - any binary which normally not be dumped is dumped
   readable by root only. This allows the end user to remove
   such a dump but not access it directly. For security reasons
   core dumps in this mode will not overwrite one another or 
   other files. This mode is appropriate when adminstrators are
   attempting to debug problems in a normal environment.
    
por 20.08.2009 / 21:53
1

Ele determina se você pode ou não obter os core dumps dos processos setuid.

Algumas informações do patch original

+suid_dumpable:
+
+This value can be used to query and set the core dump mode for setuid
+or otherwise protected/tainted binaries. The modes are
+
+0 - (default) - traditional behaviour. Any process which has changed
+   privilege levels or is execute only will not be dumped
+1 - (debug) - all processes dump core when possible. The core dump is
+   owned by the current user and no security is applied. This is
+   intended for system debugging situations only.
+2 - (suidsafe) - any binary which normally not be dumped is dumped
+   readable by root only. This allows the end user to remove
+   such a dump but not access it directly. For security reasons
+   core dumps in this mode will not overwrite one another or 
+   other files. This mode is appropriate when adminstrators are
+   attempting to debug problems in a normal environment.
    
por 20.08.2009 / 21:21