Como o comando 'passwd' obtém permissões de usuário root?

5

Como o Linux sabe que tem que dar euid 0 (uid of root) para apenas alguns processos como passwd, setuid, etc.

Se um processo pode obter permissões de root, isso não levará a possíveis violações de segurança na plataforma Linux?

Por exemplo, se eu escrever um programa que possa ganhar permissões de usuário root como o passwd, posso corromper arquivos importantes do sistema, como / etc / passwd, / etc / groups.

Como o Linux ainda consegue ser seguro?

    
por gulam 09.11.2013 / 14:50

2 respostas

11

O programa passwd tem o conjunto de bits setuid , que você pode ver com ls -l :

-rwsr-xr-x 1 root root 39104 2009-12-06 05:35 /usr/bin/passwd

É o s (o quarto caractere da linha).

Todos os programas que possuem esse conjunto de bits de permissão são executados como o proprietário desse programa. Neste exemplo, o usuário é root (terceira palavra da linha).

Esses programas setuid precisam ter certeza de que eles não causam danos a nada, já que todos os usuários do sistema podem executá-los com privilégios de root efetivos . É por isso que você só pode alterar sua própria senha. Linux e outros sistemas operacionais similares ainda são seguros porque os autores desses programas setuid tomam muito cuidado.

Veja, por exemplo, suexec.c do Apache Servidor Web, que é um programa setuid popular. Existem muitos comentários incomuns nesse código-fonte.

    
por 09.11.2013 / 15:11
3

Como um adendo à resposta de Roland Illig, é perfeitamente possível escrever um programa que, quando recebe permissões de root, corrompe arquivos do sistema e / ou compromete seu sistema de várias maneiras.

O problema é que apenas escrever não significa que ele seja executado automaticamente como root - ele precisa ter seu dono configurado para root, e então o bit setuid que Roland se refere tem para ser definido - e apenas root tem o direito de fazer isso.

Resumindo: Sim, todo binário com o conjunto de bits setuid é pelo menos potencialmente um risco de segurança. A exploração de uma falha em um binário habilitado para setuid para obter privilégios de root é a fonte mais comum dos chamados ataques de escalada de privilégios . eles tendem a ser um grande problema quando eles acontecem. Por causa disso, há relativamente poucas peças de software que usam o setuid e as que existem tendem a estar sob alto escrutínio.

    
por 08.12.2014 / 15:04