Atualmente estou reconstruindo um sistema Linux, migrando para uma nova distribuição (Ubuntu 24.04).
Tenho um disco que contém vários terabytes de dados de usuário, que desejo manter. O disco contém um sistema de arquivos btrfs com snapshots somente leitura, o que limita minhas opções quando se trata de adaptar o conteúdo do disco (não consigo alterar facilmente os snapshots somente leitura).
Agora, a nova distribuição Linux, por padrão, vem com alguns grupos que têm IDs começando em 1000 e que têm permissões no sistema. No entanto, eles são idênticos aos IDs de grupo que usei na minha antiga instalação e que têm permissões no sistema de arquivos btrfs. Devido aos snapshots somente leitura, não consigo atualizar facilmente os IDs de grupo nos dados do usuário.
Me indicaram montarias mapeadas por ID, mas não há instruções úteis sobre como usá-las.
Posso mapear o sistema de arquivos de tal forma que o gid 1000 do sistema de arquivos corresponda a, digamos, o gid 1024 do sistema? Como eu inseriria isso em /etc/fstab para que o sistema de arquivos seja montado na inicialização?
O Ubuntu 24.04 é recente o suficiente para ter suporte total para montagens mapeadas por ID, inclusive em ferramentas de montagem padrão.
Para
mount
, isso é especificado por meio daX-mount.idmap=
opção, seguido por pelo menos um mapeamento. Vários mapeamentos são separados por espaços.Um mapeamento assume a forma , onde:
[(u|g|b):]
mount_id
:
local_id
:
range
u
denota um mapeamento para IDs de usuário,g
denota um mapeamento para IDs de grupob
ou nenhum prefixo denota um mapeamento para IDs de usuário e grupo.mount_id
é o primeiro ID que aparece no sistema de arquivos montadolocal_id
é o ID no sistema local que corresponde amount_id
range
é o número de IDs consecutivos a serem mapeados (os maiores sendomount_id
+range
- 1 elocal_id
+range
- 1)Assim que o idmapping for usado, quaisquer IDs não mapeados no sistema de arquivos montado serão traduzidos para
nobody
(uid 65534) enogroup
(gid 65534), respectivamente.Ao especificar esta opção com múltiplas opções na linha de comando, todo o bloco de opções deve ser colocado entre aspas para que seja tratado como um argumento, apesar do espaço.
A linha de comando para montar um sistema de arquivos onde os uids são idênticos ao sistema local, mas os gids estão separados por 24 (o gid local 1024 corresponde a 1000 no disco), para um uid/gid máximo de 65534, seria assim (outras opções de montagem podem variar):
A
/etc/fstab
entrada parece similar, exceto que o(s) caractere(s) de espaço nas opções precisariam ser escapados – como no shell, caracteres de espaço em branco/etc/fstab
são tratados como delimitadores. De acordo com as páginas do manual, caracteres de espaço no caminho de montagem são escapados como\040
(octal). Embora não seja explicitamente mencionado, funciona para opções também. Então aetc/fstab
entrada seria: