Em Classic Shell Scripting da O'Reilly , Arnold Robbins e Nelson HF Beebe escrevem o seguinte:
Se um sistema de arquivos com usuário
smith
anexado ao ID de usuário 100 fosse montado ou importado para um sistema de arquivos com ID de usuário 100 atribuído ao usuáriojones
, entãojones
teria acesso total aossmith
arquivos de . Isso seria verdade mesmo se outro usuário chamadosmith
existisse no sistema de destino.
e sinceramente não tenho certeza se realmente entendo as implicações disso.
Isso significa que se eu tiver um pendrive, eu mount
o tenho e cp
nele coloco um arquivo que myself
criei no meu sistema, então esse pendrive pode ser umount
acessado mount
em outro sistema com um nome de usuário myself
(talvez criado ad-hoc para esse propósito), e então esse usuário terá o mesmo acesso que eu tinha no meu sistema para esse arquivo?
Agora que escrevi isso, começo a pensar que não há nada de estranho nisso, no sentido de que o arquivo não foi criptografado nem nada, e myself
cp
colocar um arquivo em um pendrive significa que estou tentando compartilhá-lo, então não há nada de errado/inseguro em ele se tornar legível em outro lugar.
Estou esquecendo de alguma coisa?
O texto diz que se o UID 100 (
smith
) possuir um arquivo e o disco for movido para outro sistema onde o UID 100 também exista, então qualquer usuário com o UID 100 (por exemplo,jones
) seria o proprietário do arquivo lá.No seu exemplo, se
myself
(possivelmente um usuário com UID 1000) criar um arquivo e esse disco for movido para um sistema em que o usuáriomyself
tenha UID 5000, o arquivo não será de propriedade do usuáriomyself
, mas sim de qualquer usuário que tenha UID 1000.O ponto é que o nome do usuário não é importante. O que importa é o UID, o número que identifica o usuário. Se o disco for movido para um sistema onde um ou vários proprietários não existam, então o
ls -l
comando listaria os proprietários como números simples em vez de nomes de usuário. O usuário root pode reatribuir a propriedade do arquivo com ochown
comando.O texto que você cita não diz nada sobre o conteúdo do arquivo. Você perderia acesso ao conteúdo descriptografado mesmo que nunca o movesse, se ele estiver criptografado e você perder a chave. Isso não vem ao caso do texto.
Isso pressupõe que o sistema de arquivos subjacente suporte UIDs.
Se, por exemplo, você tiver um sistema de arquivos em um USB, é bem provável que ele esteja formatado como exfat ou vfat, pois nenhum dos dois suporta UIDs, e quando eles são montados, a propriedade do arquivo é frequentemente mapeada para o usuário que montou a unidade especificamente para contornar esses problemas.
No entanto, se você formatou seu USB (por exemplo) como ext4fs, é bem provável que você tenha problemas de mapeamento de UID ao movê-lo entre sistemas não alinhados.
Esse também é um bom motivo para os sistemas empresariais usarem SSO: um sistema de logon único também significa IDs de usuários unificados, tornando o compartilhamento do sistema de arquivos muito mais fácil.
A parte do sistema de arquivos já foi respondida. Adicionando a isso:
Se você tem sistemas diferentes e quer evitar esse problema, então você pode usar um arquivo. Pode depender do tipo de arquivo, mas
tar
armazena tanto os IDs quanto os nomes. Se o nome não existir no sistema de extração, então o ID é usado.