A raiz é um usuário privilegiado no unix?

1

Eu meio que sei a resposta, mas o que eu quero saber são os detalhes da implementação: Suponha que root esteja logado e tenhamos um arquivo que tenha permissões 000. Então o root pode escrever e ler esse arquivo. Mas a minha pergunta é como isso é implementado. De alguma forma, ele segue as regras usuais (owner, group, other; rwx) ou o sistema olha para o usuário e diz, ok, isso é root, então ele tem privilégios para ler, escrever, executar qualquer arquivo?

Estou perguntando isso porque estou escrevendo um aplicativo rest-api que imita arquivos e usuários do unix (urls, por exemplo, / galois / home / gauss, são considerados diretórios unix, enquanto, por exemplo, urls como / galois / home / gauss /iris.pfa são considerados arquivos (executáveis) no unix Para mais detalhes, veja aqui o leia-me: link ). E agora a minha pergunta é, se de alguma forma eu posso deduzir do acl usual do unix que raiz é privilegiada, ou se eu tenho que "codificar" isso?

    
por stackExchangeUser 01.11.2018 / 12:40

1 resposta

6

Você não pode deduzir isso usando os mecanismos da ACL. Você tem que codificar desvios.

Em algumas bases de código do kernel do sistema operacional, você encontrará

if (suser())
ou testes semelhantes aqui e ali. ( Exemplo do OpenBSD ) Esta é uma função para testar se o o ID do usuário do processo relevante é zero.

Em outras bases de código do kernel do sistema operacional, você verá que isso é substituído por verificações em relação a um conjunto de privilégios de bitflag que um conjunto de credenciais possui. ( Exemplo do FreeBSD ) Mas a mesma consideração se aplica: os privilégios, se possuído, ignore as verificações de acesso e há verificações de desvio explícitas que precisam ser codificadas.

Ambos os modelos são pobres para copiar apenas por causa disso, especialmente com código voltado para WWW. É melhor deixar as duas ideias, a de um ID de usuário mágico único e distinto e o de bandeiras mágicas que as contas de usuário podem possuir, fora do seu design e fora do seu código.

Da mesma forma, o modelo de permissões de 3 bits não é bom para copiar. Veja as ACLs no estilo NFS, em que flags não executam as tarefas duplas que eles fazem no modelo antigo de 3 bits. Eles já existem há algumas décadas.

    
por 01.11.2018 / 14:00