Suponha que um arquivo executável tenha seu bit set-user-id ativado.
Quando um processo executa o arquivo executável, ele altera seu ID de usuário efetivo para o ID de usuário proprietário do arquivo executável, depois que o kernel decide que o arquivo pode ser executado por meio do teste de acesso ao arquivo. Consulte https://stackoverflow.com/questions/41456225/how-and-when-does-exec-change-the-effective-user-id-when-the-set-user-id-is-s e Qual é o uso de set-user-ID de um arquivo de programa?
Isso significa que o ID do usuário proprietário do arquivo executável pode ser aquele que não passa no teste de acesso ao arquivo executado pelo kernel, mesmo que o teste já tenha sido aprovado com base no ID do usuário efetivo original do processo?
De um modo geral, é significativo que o proprietário de um arquivo executável não tenha a permissão de execução?
Obrigado.
Não tenho ideia de como isso funciona com certeza (principalmente porque nunca vi nenhum uso para tal configuração). Meu palpite seria que isso não importa, porque o SUID efetivamente coloca uma
seteuid()
chamada no final do processo de inicialização (logo antes das execuções serem transferidas para o próprio programa), que seria depois que o arquivo é carregado para execução e, portanto, uma vez a verificação também ocorreu (a verificação ocorre (pelo menos no Linux) antes de qualquer dado ser carregado na memória).Isso depende do que você entende por significativo. Funcionalmente, não faz nada, já que o proprietário pode apenas definir o bit executável por conta própria (supondo que não haja controles de acesso obrigatórios extras que os impeçam de fazê-lo), portanto, a esse respeito, não. No que diz respeito a ser significativo no sentido de ser útil, não consigo imaginar nenhuma situação em que faria sentido para o proprietário não ter permissões de execução, mas outros usuários têm, então eu diria que não também.