A maioria das implementações de cpio
é burra e não gerencia permissões de diretório ao descompactar arquivos.
Se um diretório não tiver acesso de gravação e o arquivo do cpio estiver na ordem usual em find
, o diretório será o primeiro no cpio
archive e será descompactado primeiro do cpio
archive. Quando um diretório "readonly" desse tipo tiver sido descompactado e receber permissões, ele não terá permissão para colocar os arquivos quando, mais tarde, o conteúdo do diretório for visto no archive e será descompactado.
-
uma solução para esse problema
cpio
é criar arquivos em que o conteúdo de um diretório vem primeiro e o diretório relacionado vem depois do conteúdo. Isso faz com quecpio
crie o diretório ausente (se chamado com-d
para criar diretórios ausentes) com permissões padrão, extraia os arquivos dentro do archive e, posteriormente, quando o diretório for visto no archive, defina as permissões para " readonly ". -
outra solução é extrair o arquivo com uma implementação de
cpio
estúpida comoroot
, já queroot
tem permissão para criar arquivos, mesmo dentro de um diretório readonly. -
a terceira solução é usar uma implementação
cpio
moderna, como acpio
emulação dentro destar
.star
lembra as permissões de diretório do arquivo, mas cria o diretório com permissões intermediárias de gravação primeiro. As permissões do diretório real lembradas são definidas com atraso porstar
, depois que os arquivos do arquivo foram extraídos para o diretório com permissão de gravação intermediária.