Altera o ID do usuário e a propriedade do id do grupo de arquivos dentro de um tarball?

5

Eu tenho um tarball e os arquivos que ele contém não têm a propriedade correta do usuário e do grupo. Os arquivos são de propriedade de jenkins:jenkins e gostaria que eles fossem de propriedade de naftuli:othergroup .

Existe uma maneira de editar o tarball no lugar para que os arquivos contidos nele sejam de propriedade de naftuli:othergroup ?

O problema que estou enfrentando é que, no momento da criação do tarball, o usuário jenkins não tem permissões para chown para diferentes usuários e grupos. No momento da extração, terei permissões para criar esses arquivos como os usuários mencionados, por isso preciso editar os IDs de usuário e os IDs do grupo dentro do tarball.

    
por Naftuli Kay 06.05.2016 / 20:57

2 respostas

6

Archive :: Tar ou software similar seria um método.

% touch foo  
% tar cvf x foo
foo
% tar tvf x          
-rw-rw-r--  1 jdoe12   jdoe12           0 May  6 20:36 foo
% perl -MArchive::Tar -e '$t=Archive::Tar->new;$t->read("x");$t->chown("foo","root");$t->write("y")'
% tar tvf y
-rw-rw-r--  1 root     jdoe12           0 May  6 20:36 foo
% 
    
por 06.05.2016 / 22:41
3

Você não pode alterar as permissões explicitamente na extração, mas pode colocar as identidades preferidas no tarball na criação (mesmo quando não estiver sendo executado como root ).

tar cvf /tmp/tarball.tar --user=naftuli --group=othergroup files...

Se o sistema de origem não souber os detalhes da sua conta, você poderá sufixar os nomes com o uid e o gid preferidos (por exemplo, --user=naftuli:3000 ).

Alternativamente, se você já tem um tarball, você pode extrair os arquivos criados por Jenkins como você mesmo ( naftuli:othergroup ) e porque você não é root , os arquivos serão de sua propriedade.

    
por 06.05.2016 / 21:47

Tags