Em geral : armazenar um grupo e um usuário de um arquivo como uma string seria um desperdício demais. Não só precisaria de muito espaço em disco, mas também exigiria O (n) de tempo de processamento, no pior dos casos, para verificar se você tem permissões para um único arquivo!
Em vez disso, esses atributos são armazenados como um número, o que sempre exigiria apenas O (1) para verificar as permissões. Você pode vê-los usando, por exemplo, Comando stat
:
$ stat r600_state_common.c
File: r600_state_common.c
Size: 90718 Blocks: 184 IO Block: 4096 regular file
Device: 26h/38d Inode: 70588 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/constantine) Gid: ( 1000/constantine)
Access: 2017-09-08 00:18:26.243828226 +0300
Modify: 2017-09-07 10:52:33.387136858 +0300
Change: 2017-09-07 10:52:33.387136858 +0300
Birth: -
Assim, no seu sistema, o UID do arquivo corresponde ao usuário root
. No outro sistema, é Domain
.
Em caso de trabalho cruzado com sistemas Windows , há mais. Apesar do padrão POSIX não ter tido nenhuma mudança realmente fundamental, os programadores da Microsoft sempre tiveram dificuldades com isso. Durante o curso do Windows NT para o Windows 10, houve três reescritas compatíveis com a implementação . Portanto, para fins de compatibilidade, o Cygwin está usando sua própria implementação do mapeamento de descritores de segurança do Windows para permissões POSIX.
Além disso, você está tentando acessar um sistema de arquivos do Windows através do VirtualBox. O VirtualBox também implementou seu próprio mapeamento, e esse mapeamento não funciona muito bem (como você pode ver alterando as permissões através do chmod, e não vendo as mudanças refletidas) .
Então, agora, você tem 3 implementações no seu sistema, incompatíveis entre si. Esta é a razão de você ver os problemas.
FTR : O VirtualBox é de código aberto, portanto, se você estiver realmente interessado, poderá reescrevê-lo para ser compatível com o Cygwin (já que a implementação é a única compatível com versões anteriores) Implementação POSIX no Windows, tanto quanto eu sei) .
NB: usar um sistema como root é uma prática muito ruim! Especialmente porque você é um desenvolvedor. Considere usar um usuário comum em seu lugar.