Esse é o problema dos sistemas multiusuário, especialmente se você tiver mais de um deles. ;) Não há uma maneira muito legal de fazer o que você deseja. As abordagens que vêm à mente seriam
- ter o mesmo UID da sua conta em todas as máquinas que você está usando sua unidade externa (na verdade, não é viável, pois provavelmente nem todas as máquinas estão sob seu controle)
- usando um sistema de arquivos inconsciente do conceito de proprietário / grupo (FAT ou NTFS vem à mente, mas… aaah, não)
A abordagem mais eficaz seria voltar às práticas comuns. Na maioria (pelo menos) dos sistemas Linux, existem alguns grupos que geralmente têm GIDs comuns. Por exemplo seria users, que tem GID 100na maioria das distribuições Linux. Se você conseguir ter sua respectiva conta de usuário nesse grupo, poderá
- torne todos os arquivos e diretórios em sua unidade pertencentes a este grupo
- de alguma forma, gerenciar permissões de grupo apropriadas nesses arquivos e diretórios
- de alguma forma, conseguem criar novos arquivos com a respetiva propriedade de grupo apropriada. permissões.
O primeiro e o segundo ponto são fáceis de realizar ( chown, chmod). O terceiro ponto é um pouco mais complicado.
A parte "propriedade do grupo" é relativamente fácil: você pode definir o bit SGID em todos os diretórios da unidade. O bit SGID aplicado aos diretórios instrui o kernel a se comportar de uma maneira BSDish: O BSD faz com que cada arquivo / diretório criado em um grupo de diretórios específico seja de propriedade não do grupo principal do processo que cria o arquivo / diretório (como o Linux), mas pelo proprietário do diretório pai.
O bit de permissão é um pouco difícil. As permissões dos arquivos / diretórios recém-criados são (entre outros) influenciadas pelo umask, uma máscara de bits informando quais bits não devem ser definidos se não explicitamente declarados. Um umaskvalor comum, por exemplo 022, é o que significa que os bits de gravação para »group« e »others« não devem geralmente ser definidos. Você pode alterar umaskpara 002, dizendo que não deseja que as permissões de gravação sejam limpas para o grupo, mas a desvantagem é que você não pode definir esse valor com base em diretório e geralmente não deseja ter permissões de gravação para seu grupo principal definido para cada arquivo que você criar.
Isso pode ser resolvido usando ACLs: em uma ACL, você pode definir um maske um defaultconjunto de permissões, que se aplicam a todos os arquivos e diretórios criados dentro de um diretório com este conjunto de ACL. Portanto, uma possível solução do seu problema seria
- certificando-se de que você é membro de um grupo comum em todos os sistemas em que deseja usar sua unidade externa.
- torne todos os arquivos e diretórios em sua unidade pertencentes a este grupo e defina o bit SGID em todos os diretórios
- altere a ACL de todos os diretórios para incluir uma máscara e permissões padrão que instruem o kernel a criar cada novo arquivo / diretório com permissões de gravação definidas para o grupo.
Veja setfacl(1)e acl(5)para mais detalhes.