Permissões do Linux em uma montagem remota

1

No Windows, quando vejo as permissões em uma pasta remota, as contas são qualificadas com o nome ou o domínio da máquina, ou seja, a autoridade para o nome da conta.

No Linux, se eu tiver uma VM com uma montagem em uma unidade remota e o proprietário de uma pasta na montagem for 'root', essa será minha raiz ou a raiz do sistema remoto?

Tudo parece muito simples no Linux para funcionar assim que uma rede está envolvida. Eu claramente sinto falta de algo.

Luke

    
por Luke Puplett 03.07.2014 / 11:18

2 respostas

1

Esta é, infelizmente, uma das coisas mais confusas sobre o compartilhamento de arquivos em Unixes. E sou péssima em explicar coisas confusas.

O que você em ls -l output (por exemplo) é o ID do usuário remoto traduzido da perspectiva do sistema local.

Quando programas como ls usam as funções padrão para procurar informações de arquivos, o driver do sistema de arquivos pode fornecer apenas IDs de usuário numéricos, não nomes de texto. (Até agora, não muito diferente do Windows.) Para traduzir os UIDs para nomes, ls chama um componente do SO totalmente diferente, as bibliotecas de serviço de nomes, que não têm conhecimento sobre onde esse UID foi obtido e, portanto, só pode traduzir as contas que o sistema operacional conhece, mas não pode voltar atrás e pedir ajuda ao driver do sistema de arquivos. (É aqui que entra a diferença)

Como exemplo, se o servidor tiver dois arquivos, um de propriedade de raiz (UID 0), o outro de propriedade de Luke (UID 1000), ls saberá apenas que eles são de "0" e " 1000 "e procurará contas locais que tenham os mesmos UIDs. "0" é sempre root, mas "1000" pode ou não ser Luke. Se o UID pertencer a uma conta armazenada em LDAP ou NIS ou AD, e se o sistema operacional cliente estiver realmente configurado para procurar no LDAP por contas de usuário, ele fornecerá o nome de usuário correto. Caso contrário, pode ser verdade, já que os UIDs da conta local (1000, 1001, ...) tendem a corresponder a pessoas diferentes em computadores diferentes.

(Existem maneiras de o driver do sistema de arquivos dizer ao programa o nome completo do usuário, na forma de "atributos estendidos". Infelizmente, apesar de várias tentativas, não há uma maneira padrão de fazer isso e programas como ls geralmente tentam para evitar truques específicos do sistema de arquivos.Infelizmente, nem todos os protocolos de sistema de arquivos de rede podem transferir os nomes de usuários: CIFS, também conhecido como SMB, NFSv4, e outros não.)

Mas nada disso realmente importa, já que o que você pode fazer com o arquivo é sempre determinado pelo que o servidor sabe, não pelo que o cliente vê. Por exemplo, se você usar sshfs , ele fará login no servidor por SSH usando seu nome de usuário (por exemplo, sshfs luke@fileserver ), e o servidor não permitirá que você faça nada que não deva fazer. O mesmo acontece com o CIFS, o AFS e assim por diante.

    
por 03.07.2014 / 15:07
0

O proprietário é o usuário root na máquina remota. Se você quiser ter acesso a ele como root na máquina remota, terá que montá-lo como root na máquina remota.

Em outras palavras, isso deve funcionar (usuário local sim, usuário remoto root):

aye@ayes-machine$ sshfs root@bees-machine:/path /local-path

Isso não funcionará (raiz do usuário local, bee de usuário remoto):

aye@ayes-machine$ sudo sshfs bee@bees-machine:/path /local-path
    
por 03.07.2014 / 13:32