file system uid e gid no linux

5

Eu me deparei com um tutorial do kernel Linux e lá eles falaram sobre 4 pares de identificadores e um deles foi sistema de arquivos uid e gid.

Alguém poderia me explicar o que é e como é diferente de uid e gid ?

    
por Dhatri 19.08.2012 / 06:26

1 resposta

6

Quem teria pensado que esta questão iria arrastar uma coleção de respostas excessivamente confiantes e mal informadas?

O sistema de arquivos uid ou fsuid é um recurso do Linux projetado para ajudar na implementação do servidor NFS. É um uid extra (não-POSIX) que é usado apenas para verificações de permissão de arquivo. Para qualquer processo que não chame setfsuid (basicamente qualquer processo que não esteja tentando ser um servidor NFS), o fsuid é o mesmo que o uid efetivo.

Existe até uma página de manual para isso, então desculpa para alegar que não existe.

Atualização : Eu fui inspirado a encontrar a origem do fsuid. Quando foi adicionado no Linux 1.1.44, este comentário foi colocado acima da nova função sys_setfsuid :

+/*
+ * "setfsuid()" sets the fsuid - the uid used for filesystem checks. This
+ * is used for "access()" and for the NFS daemon (letting nfsd stay at
+ * whatever uid it wants to). It normally shadows "euid", except when
+ * explicitly set by setfsuid() or for access..
+ */

e essa alteração foi feita no comentário acima de sys_access :

- * XXX we should use the real ids for checking _all_ components of the
- * path.  Now we only use them for the final component of the path.
+ * access() needs to use the real uid/gid, not the effective uid/gid.
+ * We do this by temporarily setting fsuid/fsgid to the wanted values

Então, o NFS era um dos dois propósitos originais. O outro estava fazendo o acesso () funcionar corretamente. access () é usado por programas setuid para determinar se o usuário real teria acesso a um arquivo sem os privilégios adicionais do setuid. Antes de 1.1.44 era buggy. Desde então, tem usado uma mudança temporária de fsuid para fazer o trabalho. Como o fsuid é restaurado antes que a chamada do sistema access () retorne, você nunca verá a mudança do espaço do usuário.

    
por 19.08.2012 / 07:50