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 100
na 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 umask
valor 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 umask
para 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 mask
e um default
conjunto 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.