O tar preserva as permissões se os IDs do usuário forem alterados?

17

Eu preciso fazer backup de alguns dados com a opção "p" no comando tar. O problema é que o lugar que eu vou restaurar esses dados terá todos os mesmos usuários, mas esses usuários podem ter IDs diferentes. Isso faz alguma diferença no tar ou irá restaurar as permissões corretamente pelo nome de usuário?

    
por Marius 19.10.2012 / 08:47

4 respostas

9

tar registra permissões com base no UID e no GID, não na string associada a eles. Portanto, se o UID em um servidor for 3300 e estiver vinculado a 'bob', no novo servidor, o arquivo será de propriedade do usuário que possui o UID 3300.

Virtual tudo (eu quero dizer tudo, mas você nunca pode ser 100% de certeza) no UNIX usa os valores UID: GID, porque é o que é realmente armazenado no nível do sistema de arquivos. O nome é apenas uma pesquisa simples no arquivo passwd, as verificações subjacentes são feitas usando os valores numéricos.

    
por 19.10.2012 / 09:01
49

Resumindo as respostas anteriores e adicionando algumas informações importantes:

  • Ao criar arquivos, tar sempre preservará o ID de usuário e grupo de arquivos, a menos que informe o contrário com --owner=NAME , --group=NAME . Mas ainda haverá sempre um usuário e um grupo associados a cada arquivo.

  • O GNU tar, e talvez outras versões de tar , também armazenam o usuário e o grupo nomes , a menos que --numeric-owner seja usado. O bsdtar também armazena nomes de usuários e grupos por padrão, mas suporta a opção --numeric-owner quando a criação não apareceu até o bsdtar 3.0 (note que o bsdtar suportou a opção quando extraindo para muito mais tempo).

  • Ao extrair como usuário regular , todos os arquivos serão sempre pertencentes ao usuário. E não pode ser diferente, já que extrair um arquivo é criar um novo arquivo no sistema de arquivos, e um usuário comum não pode criar um arquivo e dar a propriedade a outra pessoa.

  • Ao extrair como root , tar restaurará por padrão a propriedade dos arquivos extraídos, a menos que --no-same-owner seja usado, o que dará origem ao root ele mesmo.

  • No GNU tar, bsdtar e talvez outras versões de tar , a propriedade restaurada é feita pelo usuário (e grupo) nome , se essa informação estiver no arquivo e existe um usuário correspondente no sistema de destino. Caso contrário, restaura por ID. Se a opção --numeric-owner for fornecida, os nomes de usuários e grupos serão ignorados.

  • As permissões e os registros de data e hora também são salvos no arquivo e restaurados por padrão, a menos que as opções --no-same-permissions e / ou --touch sejam usadas. Quando extraído pelo usuário, o usuário umask é subtraído das 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! :)

    
por 05.11.2012 / 12:48
4

User a opção --same-owner para o GNU tar. Consulte o link

    
por 19.10.2012 / 11:04
4

Se você estiver tentando transferir arquivos entre dois sistemas, o rsync por padrão definirá as permissões por nome de usuário em vez de uid, observando os nomes de usuários nas duas extremidades. Somente se o usuário não existir em um dos sistemas, ele irá copiá-lo com o uid, a menos que você diga o contrário.

    
por 19.10.2012 / 14:28

Tags