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 quecpiocrie o diretório ausente (se chamado com-dpara 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
cpioestúpida comoroot, já queroottem permissão para criar arquivos, mesmo dentro de um diretório readonly. -
a terceira solução é usar uma implementação
cpiomoderna, como acpioemulação dentro destar.starlembra 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.