
Preciso fazer backup de alguns dados com a opção “p” no comando tar. O problema é que o local onde irei restaurar esses dados terá todos os mesmos usuários, mas esses usuários podem ter IDs diferentes. Isso faz alguma diferença para o tar ou restaurará as permissões corretamente por nome de usuário?
Responder1
tar
registra permissões com base no UID e GID, não na string associada a eles. Portanto, se o UID em um servidor era 3300 e estava vinculado a 'bob', no novo servidor o arquivo pertencerá ao usuário que possui o UID 3300.
Tudo virtual (quero dizer tudo, mas você nunca pode ter 100% de certeza) no UNIX usa os valores UID:GID, porque é isso que está realmente armazenado no nível do sistema de arquivos. O nome é apenas uma simples pesquisa no arquivo passwd, as verificações subjacentes são feitas usando valores numéricos.
Responder2
Resumindo as respostas anteriores e acrescentando algumas informações importantes:
Ao criar arquivos,
tar
sempre preservará o ID do usuário e do grupo dos arquivos,a menos quedisse o contrário com--owner=NAME
,.--group=NAME
Em ambos os casos, cada arquivo terá sempre um associadonuméricoID do usuário e do grupo.GNU
tar
, e talvez outras versões dotar
,tambémarmazenar o usuário e o gruponomes, a menos que--numeric-owner
seja usado.bsdtar
também armazena nomes de usuários e grupos por padrão, mas não tinha suporte para--numeric-owner
opção quandocriandoarquivos até a versão 3.0 (observe que ele suportava a opção quandoextraindoarquivos há muito mais tempo).Ao extrair comousuário normal, todos os arquivos serãosempreser propriedade do usuário. E não pode ser diferente, pois extrair um arquivo significa criar um novo no sistema de arquivos, e um usuário comum não pode criar um arquivo e ceder a propriedade a outra pessoa.
Ao extrair comoraiz,
tar
irá, por padrão, restaurar a propriedade dos arquivos extraídos,a menos que--no-same-owner
é usado, o que dará propriedade ao próprio root.No GNU tar, bsdtar e talvez em outras versões do
tar
, a propriedade restaurada é feita pelo usuário (e grupo)nome, se essa informação estiver no arquivoeexiste um usuário correspondente no sistema de destino. Caso contrário, ele restaura por ID. Se--numeric-owner
a opção for fornecida, os nomes de usuários e grupos serão ignorados e os IDs serão usados. Em ambos os casos, sempre que IDs numéricos são usados, um usuário e grupo correspondente nãonãoprecisa existir no sistema.Permissões e carimbos de data/hora também são salvos no arquivo e restaurados por padrão, a menos que opções
--no-same-permissions
e/ou--touch
sejam usadas. Quando extraído pelo usuário, o do usuárioumask
ésubtraídodas permissões, a menos que--same-permissions
seja usado.--preserve-permissions
e--same-permissions
são aliases e têm a mesma funcionalidade que-p
Espero que isso ajude a esclarecer o problema! :)
Responder3
Se você estiver tentando transferir arquivos entre dois sistemas, o rsync definirá por padrão as permissões por nome de usuário em vez de uid, observando os nomes de usuário em ambas as extremidades. Somente se o usuário não existir em um dos sistemas ele o copiará com o uid, a menos que você indique o contrário.
Responder4
Use a opção --same-owner para GNU tar. Verhttp://www.gnu.org/software/tar/manual/html_section/Attributes.html