Como funcionam os IDs de usuário reais e efetivos?

10

Quando um usuário normal quiser fazer alterações no arquivo passwd, o usuário receberá pelo setuid o acesso efetivo do usuário. O usuário se torna root temporariamente e pode editar o passwd.

No entanto, você só pode editar sua senha corretamente, e nem todos os outros? No entanto, o acesso efetivo do usuário é root. Então, como é que você não tem permissão para alterar outras senhas ao lado da sua?

Quando você executa um programa com setuid, o que significa, na verdade, quando o usuário efetivo é root, mas o ID do usuário real ainda é seu nome?

    
por starcorn 30.10.2011 / 02:24

4 respostas

11

Você não pode alterar outras senhas porque o programa não permitirá que você faça isso. O programa tem permissões do sistema para alterar qualquer senha desejada, porque ele está sendo executado como root , mas o programa foi especificamente projetado para não dar ao usuário qualquer maneira de fazer com que ele use essas permissões.

Não é bem assim que o usuário se torna root temporariamente, é que o programa confiável é executado com permissões de root. Obviamente, apenas os programas especificamente projetados para limitar os usuários a fazer apenas o que devem ser autorizados podem ser feitos com segurança.

    
por 30.10.2011 / 03:45
2

Você só tem permissão para alterar apenas a sua senha, desde que tenha um id de usuário efetivo do root, porque no momento da alteração da senha, o ID do usuário real é verificado, e não o ID de usuário efetivo. Você só pode alterar o ID do usuário efetivo e não o ID do usuário real.
Somente usuário root pode alterar o ID do usuário real para executar o programa como usuário não privilegiado. O ID do usuário real não pode ser alterado, pois é definido no horário de início da sessão.
É por isso que apenas a sua senha pode ser alterada, pois o ID do usuário real não é alterado (pois ainda é seu, não é root).

    
por 15.08.2013 / 16:21
0

Um hack inicial no Unix foi fazer um link simbólico para um shell script setuid e chamar o link -i . Isso resulta no script sendo chamado como sh -i , que, em vez de executar o script chamado -i , como pretendido, lança um shell interativo, que então fornece poderes completos. O ID do usuário efetivo pode ser usado para modificar o arquivo passwd para qualquer usuário ou raiz. A melhor maneira de evitar isso é usar o SELinux para impedir que scripts ou programas de confiança sejam modificados fora da área que o SELinux permite que eles sejam executados.

Outra técnica é ter um bit imutável em arquivos importantes que um conjunto não pode ser modificado nem mesmo pelo usuário root (exceto no modo single-user)

Como root, você pode convidar os usuários a fazerem login no sistema sem uma senha e aparecerem como qualquer usuário, mas os processos com privilégios normais tentam evitar que isso aconteça.

Se você usar algum tipo de sistema de arquivamento de rede, o usuário root será tratado como ninguém nesse espaço de arquivos em vez de root, o que permite que computadores não confiáveis participem de uma rede confiável, como um campus universitário.

    
por 19.03.2014 / 14:05
0

Você só tem permissão para alterar sua senha, porque o programa set-password, embora tenha o poder de fazer qualquer coisa, é programado para alterar apenas as senhas. Ele irá verificar o ID do usuário real, para decidir qual senha alterar.

Como você não pode alterar seu ID de usuário real, mesmo chamando um programa set-uid, o programa pode usá-lo para implementar a segurança. O sistema operacional abandona a segurança para o programa raiz set uid.

Nota: o programa root set uid também pode alterar o ID do usuário real (mas isso não é útil neste caso de uso).

Aviso: o conjunto de raiz uid é considerado prejudicial (bem menos que o ideal). Deveríamos estar usando recursos nos dias de hoje (veja Quais são as diferentes maneiras de configurar permissões de arquivos, etc, no gnu / linux e link )

    
por 15.07.2016 / 10:41

Tags