Diferença entre proprietário / raiz e RUID / EUID

21

Sou relativamente novo nos conceitos mencionados na questão e ler sobre eles de diferentes fontes só os torna mais confusos. Então é isso que eu entendi até agora:

Quando recebemos permissões para um arquivo, eles se parecem com isso:

-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin

Assumimos que um usuário user2 que está no grupo users tente executar file.bin . Se o bit setuid não estivesse definido, isso significaria que tanto o RUID quanto o EUID de file.bin eram iguais ao UID de user2 . Mas como o bit setuid está definido, isso significa que o RUID agora é igual ao UID de user2 , enquanto o EUID é o UID do proprietário do arquivo, user1 .

Minhas perguntas são:

  1. Qual é a diferença entre o proprietário do arquivo e root ? O root tem as mesmas permissões que o proprietário? Ou precisaríamos de uma entrada separada na lista de permissões para root ?
  2. Diferença entre RUID e EUID?
    • Pelo que entendi, o RUID e o EUID são aplicados apenas aos processos. Se esse for o caso, por que eles têm o valor do ID do usuário?
    • Se o RUID for o usuário que cria o processo e o EUID for o usuário que está executando o processo, a primeira frase da primeira resposta será question não faz qualquer sentido para mim.
    • Eu entendi corretamente o que o bit setuid faz?
por user1956190 23.03.2015 / 09:36

1 resposta

31

Aqui estão as respostas:

  1. root tem sempre acesso completo a arquivos e diretórios. O dono do arquivo normalmente também os possui, mas isso nem sempre é verdade. Por exemplo:

    -r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
    

    user1 é o proprietário ; no entanto, eles só podem ler e executar , mas root ainda tem acesso total ( rwx ) ao arquivo.

  2. RUID é o Real User ID e nunca (quase) muda. Se user2 efetuar login no sistema, o shell será lançado com seu ID real definido como user2 . Todos os processos que eles iniciam no shell herdarão o ID real user2 como sua ID real.

    EUID é o ID de usuário efetivo , ele altera para processos (não para o usuário) que o usuário executa que definiram o bit setuid .

    Se user2 executar file.bin , o RUID será user2 e o EUID do processo iniciado será user1 .

Vamos usar o caso de passwd :

-rwsr-xr-x 1 root root 45396 may 25  2012 /usr/bin/passwd
  • Quando user2 deseja alterar sua senha , eles executam /usr/bin/passwd .

  • O RUID será user2 , mas o EUID desse processo será root .

  • user2 pode usar passwd para alterar somente sua própria senha porque internamente passwd verifica o RUID e, se não for root , suas ações serão limitadas para a senha do usuário real.

  • É necessário que o EUID se torne root no caso de passwd , porque o processo precisa ser gravado em /etc/passwd e / ou /etc/shadow .

por 23.03.2015 / 11:13