porque tem programas como su access to / etc / shadow

7

Normalmente, apenas o root pode acessar /etc/shadow . Mas programas como su e sudo podem verificar senhas sem executar como root. Então a questão é: por que esses programas podem acessar /etc/shadow sem privilégios? Tentei acessá-lo sem privilégios via python com o módulo spwd , mas não obtive acesso (como esperado). Qual mecanismo esses programas usam?

    
por Kritzefitz 16.09.2013 / 22:07

1 resposta

10

why have programs like su access to /etc/shadow

Como programas como su e passwd definiram SetUID . Você pode verificar usando:

[root@tpserver tmp]#  ls -l /usr/bin/passwd
-r-s--x--x  1 root root 21200 Aug 22  2013 /usr/bin/passwd

Quando você procurar na sua permissão de arquivo, verá "s". Se alguém está tentando executar o programa passwd , por padrão, ele está assumindo o privilégio de proprietário (raiz aqui) do arquivo. Isso significa que qualquer usuário pode obter privilégio de root para executar o programa passwd , porque somente o usuário raiz pode editar ou atualizar o arquivo /etc/passwd e /etc/shadow . Outros usuários não podem. Quando o usuário normal executa o programa passwd em seu terminal, o programa passwd é executado como "root", porque o UID efetivo é definido como "root". Assim, o usuário normal pode atualizar facilmente o arquivo.

Você pode usar o comando chmod com os argumentos u+s ou g+s para definir os bits setuid e setgid em um arquivo executável, respectivamente

Longa resposta: Set-User_Id (SUID): energia por um momento:

Por padrão, quando um usuário executa um arquivo, o processo que resulta em essa execução tem as mesmas permissões que as do usuário. De fato, o processo herda seu grupo padrão e a identificação do usuário.

Se você definir o atributo SUID em um arquivo executável, o processo que resulta em sua execução não usa a identificação do usuário, mas a identificação do usuário do arquivo.

O mecanismo SUID, inventado por Dennis Ritchie, é um risco potencial à segurança. Ele permite que um usuário adquira poderes ocultos executando esse arquivo de propriedade do root.

$ ls -l /etc/passwd /etc/shadow /usr/bin/passwd
-rw-r--r-- 1 root root 2232 Mar 15 00:26 /etc/passwd
-r-------- 1 root root 1447 Mar 19 19:01 /etc/shadow

A listagem mostra que passwd é legível por todos, mas shadow é ilegível por grupo e outros. Quando um usuário que executa o programa pertence a uma dessas duas categorias (provavelmente, outras), o acesso falha no teste de leitura na sombra. Suponha que o usuário normal queira alterar sua senha. Como ele consegue fazer isso? Ele pode fazer isso executando /usr/bin/passwd . Muitos programas UNIX / Linux têm um modo de permissão especial que permite aos usuários atualizar arquivos sensíveis do sistema - como /etc/shadow - algo que eles não podem fazer diretamente com um editor. Isso é verdade para o programa passwd .

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 Jan 6 2007 /usr/bin/passwd

A letra s na categoria do usuário do campo de permissão representa um modo especial conhecido como o set-user-id (SUID). Esse modo permite que um processo tenha os privilégios do proprietário do arquivo durante a instância do programa. Assim, quando um usuário não privilegiado executa o passwd, o UID efetivo do processo não é o usuário, mas o do root - o proprietário do programa. Este privilégio de SUID é então usado pelo passwd para editar /etc/shadow .

Link de referência

    
por 16.09.2013 / 22:15