relação entre usuário e grupo de um processo

0

Para um processo,

  1. é seu usuário real necessariamente um membro do seu grupo real?

  2. O usuário efetivo é necessariamente um membro de seu grupo efetivo?

  3. seu usuário real é necessariamente um membro de seu grupo efetivo?

  4. O usuário efetivo é necessariamente um membro do grupo real?

Se isso importa, estou falando sobre o Linux.

Obrigado.

    
por Tim 30.12.2016 / 15:02

1 resposta

5

Não, não, não & não:

Vou explicar para uid (é o mesmo para gid) Um processo pode mover ID entre efetivo, real e outro. Um processo também pode definir arbitrariamente um ID se e somente se ele tiver o CAP_SETUID.

Vamos ver a maneira como o UID e o GID são implementados:

Existem dois números armazenados em uma tabela de banco de dados (um arquivo), ambas as tabelas são independentes. Eu tenho um UID e um GID principal. Ambos chamavam Richard, mas com números diferentes. As únicas conexões são: em / etc / passwd, ele lista o nome de usuário, o UID e o GID principal. Em / etc / group, lista groupname, GID, UIDs.

Na maioria das vezes, essas relações não são verificadas, exceto: no login e quando o setgid é chamado (eu acho).

Para eficiência, apenas o que é necessário é verificado.

  • Um processo pode mover o ID entre efetivo, real e outro (arquivo, salvo).
  • Um processo também pode definir arbitrariamente um ID se e somente se ele tiver o recurso CAP_SETUID.

-

Na página de manual de setreuid() ,

setreuid() sets real and effective user IDs of the calling process.

Fornecer um valor de -1 para o ID do usuário real ou efetivo força o sistema a deixar esse ID inalterado.

Processos não privilegiados só podem definir o ID do usuário efetivo para o ID do usuário real, o ID do usuário efetivo ou o ID do usuário configurado salvo.

Os usuários desprivilegiados só podem definir o ID do usuário real como o ID do usuário real ou o ID do usuário efetivo.

Se o ID do usuário real for definido ou o ID do usuário efetivo for definido com um valor diferente do ID do usuário real anterior, o ID do usuário configurado será configurado para o novo ID de usuário efetivo.

Completamente de forma análoga, setregid () define os IDs reais e efetivos do grupo do processo de chamada, e todos os itens acima são mantidos com "group" em vez de "user".

    
por 30.12.2016 / 15:28

Tags