Temos um ambiente de alguns milhares de usuários executando aplicativos em cerca de 40 clusters, variando em tamanho, de 20 nós de computação a 98.000 nós de computação. Os usuários desses sistemas geram arquivos maciços (às vezes> 1PB) controlados por permissões tradicionais do unix (as ACLs geralmente não estão disponíveis ou são práticas devido à natureza especializada do sistema de arquivos).
Atualmente, temos um programa chamado "give", que é um programa suid-root que permite ao usuário "dar" um arquivo a outro usuário quando as permissões de grupo são insuficientes. Portanto, um usuário digitaria algo como o seguinte para fornecer um arquivo a outro usuário:
> give username-to-give-to filename-to-give ...
O usuário receptor pode então usar um comando chamado "take" (parte do programa give) para receber o arquivo:
> take filename-to-receive
As permissões do arquivo são então efetivamente transferidas para o usuário receptor.
Este programa existe há anos e gostaríamos de revisar as coisas do ponto de vista funcional e de segurança.
Nosso plano de ação atual é remover a podridão dos bits em nossa implementação atual do "give" e empacotá-lo como um aplicativo de código aberto antes de reimplementá-lo na produção.
Alguém tem outro método que eles usam para transferir arquivos extremamente grandes entre usuários quando apenas as permissões unix tradicionais estão disponíveis?
chown
deve fazê-lo. Parece que você também deseja copiar o arquivo, assim que as duas partes envolvidas concordarem.