Força o proprietário e o grupo para o conteúdo de um arquivo tar?

19

Eu gostaria de criar um arquivo tar com conteúdo pertencente a um proprietário: par de grupos que não existem no sistema a partir do qual o arquivo está sendo feito.

Aqui está a direção que tentei:

tar ca --owner='otherowner' --group='othergroup' mydata.tgz mydata

E ao executar este comando, recebo o seguinte erro:

tar: otherowner: Invalid owner
tar: Error is not recoverable: exiting now

Existe uma maneira de forçar o tar a aceitar o proprietário: group, mesmo que nenhum deles exista no sistema a partir do qual o arquivo está sendo criado?

    
por David 12.01.2013 / 00:29

2 respostas

16

O Linux não usa nomes de proprietários e grupos internos, mas números - UIDs e GIDs. Os nomes de usuários e grupos são mapeados a partir do conteúdo dos arquivos / etc / passwd e / etc / group para conveniência do usuário. Como você não tem a entrada 'otherowner' em nenhum desses arquivos, o Linux não sabe qual UID e GID devem ser atribuídos a um arquivo. Vamos tentar passar um número em vez disso:

$ tar cf archive.tar test.c --owner=0 --group=0
$ tar -tvf archive.tar 
-rw-rw-r-- root/root        45 2013-01-10 15:06 test.c
$ tar cf archive.tar test.c --owner=543543 --group=543543
$ tar -tvf archive.tar 
-rw-rw-r-- 543543/543543    45 2013-01-10 15:06 test.c

Parece funcionar.

    
por 12.01.2013 / 01:27
-1

Aqui está um trecho de código para substituir o usuário / grupo por ids em tempo real:

tar ca --owner="$(id -u ***otherowner***)" --group="$(id -g ***othergroup***)" mydata.tgz mydata
    
por 16.12.2014 / 09:42