Onde exatamente está o EUID, EGID etc. de um processo armazenado?

1

Eu estava lendo alguns artigos sobre permissões no Linux e descobri que isso nunca foi mencionado lá. Eu me pergunto como isso funciona.

Exemplo de situação: Arquivo binário read_file.out que lê o arquivo ~/file.txt e imprime seu conteúdo em stdout é executado. Isso cria um processo e o sistema decide se pode ou não ler ~/file.txt com base em EUID e / ou EGID do usuário que criou o processo.

Onde exatamente esses valores são armazenados? Onde fica o sistema para dizer que " Eu vejo o seu EUID é 1002, então você pode ler este arquivo. "
ou
" Seu EUID é 1003, o que significa que você não pode lê-lo e você também é membro de nenhum grupo que possa acessar este arquivo, então eu não vou permitir que você o leia. "?

Descobri que há alguns arquivos no pseudo-sistema de arquivos /proc/<pid>/ , especialmente /proc/<pid>/stat e /proc/<pid>/status (versão melhor legível de stat ). Esses são os arquivos de acordo com os quais o sistema decide as permissões ou são apenas arquivos "informativos" que servem apenas como fonte para comandos como ps ?

Obrigado pelas suas respostas.

    
por Topper Harley 21.02.2018 / 12:31

1 resposta

3

Nas estruturas de dados do kernel. Os arquivos virtuais em /proc/<pid>/ são apenas visualizações para eles. Agora, eu poderia descobrir o código-fonte, mas duvido que seja realmente útil. Há provavelmente apenas uma estrutura C simples para cada processo, que contém campos para todos os UIDs e GIDs, além de uma tabela de grupos secundários ao longo de outros dados por processo.

    
por 21.02.2018 / 12:46