Capaz de ler arquivos sem permissões?

2

Um usuário (chamá-lo de user01) em um sistema de arquivos compartilhado tentou configurar arquivos para serem lidos apenas por ele. Eu posso entrar no diretório, e um ls -l produz saída como:

ls -l

-rwx------ 1 user01 gp 16035 Dec 21  2015 Output.cpp

É evidente que não tenho permissões de leitura para este arquivo, mas posso copiar / ler! (Eu não vou postar a saída aqui, mas posso emacs / cat / cp o arquivo e ver o conteúdo sem problema) Para referência, eu nem sou um membro do grupo mesmo grupo (gp), e eu não deveria ter permissões especiais sudo neste sistema de arquivos.

Como isso é possível?

    
por funky_donkey 16.09.2016 / 18:54

1 resposta

1

Em casos simples, com um sistema de arquivos que consiste em arquivos em um disco local, o driver do sistema de arquivos lê metadados de permissão (permissões tradicionais de usuário e grupo Unix e permissões rwxrwxrwx, listas de controle de acesso, etc.) armazenadas no disco de acordo com o arquivo. formato do sistema de arquivos e decide se deve conceder acesso com base nessas permissões. Mas quando há mais camadas entre a representação em disco e o aplicativo, os metadados de permissão usados para controle de acesso e os metadados de permissão relatados por meio da interface de acesso a metadados podem não corresponder.

Quando você executa ls , ele usa a interface de acesso a metadados para exibir permissões e propriedade. Quando o sistema de arquivos é remoto, o driver do sistema de arquivos local envia uma consulta de metadados ao sistema de arquivos remoto. Quando você tenta acessar um arquivo (por exemplo, quando o lê abrindo-o em um aplicativo), com um sistema de arquivos remoto, o driver do sistema de arquivos local envia uma solicitação de leitura ao sistema de arquivos remoto. Os dois podem não ser consistentes se as respostas do sistema de arquivos remoto forem incoerentes.

É possível que as respostas do sistema de arquivos remoto sejam incoerentes quando o sistema de arquivos remoto suporta metadados que o sistema de arquivos local não possui. Por exemplo, se o servidor remoto tiver contas que o cliente local não possui, o sistema de arquivos não poderá relatar metadados com precisão. Isso é bastante comum quando o servidor e o cliente executam sistemas operacionais diferentes (por exemplo, servidor Windows e cliente Linux ou vice-versa).

No seu caso, evidentemente, o servidor filessytem remoto não está configurado da maneira desejada pelo user01 ou as permissões no servidor não são tão restritivas quanto o esperado. Por exemplo, pode haver uma entrada ACL adicional que conceda acesso a (alguns) usuários remotos. Se o sistema de arquivos remoto puder relatar somente permissões Unix, mas não a ACL mais rica, você verá um arquivo de propriedade do usuário, sem permissões de "grupo" ou "outro" e com um proprietário que não é você, mas pode haver uma entrada da ACL que concede a você permissão.

¹ Isso pode ser subdividido em um driver do sistema de arquivos específico do tipo e uma camada genérica (geralmente chamada VFS ), mas isso é dependente do sistema, então eu não estou propositadamente fazendo a distinção aqui.

    
por 16.09.2016 / 21:17