Eu tenho um arquivo tar.gz que contém alguns arquivos executáveis. Existe uma maneira de torná-los automaticamente não executáveis ​​quando eu extrair o arquivo? Tentei usar o sinalizador --mode, mas aparentemente não fez nada.
tar xzf archive.tar.gz --mode 'a-x'
Gostaria de definir as permissões usando o próprio tar, se possÃvel, porque não sei de antemão qual será o nome da pasta que o tar gera. Estou bem em usar os recursos tar do GNU.
Se usar
star
(incluÃdo em schilytools , por @schily ( falecido )) em vez de GNUtar
for uma opção, você poderia fazer:Onde uma
find
interface semelhante a - pode ser usada para manipular os membros do arquivo.Com o libarchive
bsdtar
, e assumindo que o arquivo não contém arquivos de qualquer tipo além de diretório e regular e não hardlink e você não se importa em restaurar nenhum dos metadados dos arquivos, você pode converter o arquivo para ozip
formato (que não suporta permissões) instantaneamente antes de extrair:Isso criaria todos os arquivos com permissões padrão, com as permissões
umask
também aplicadas. Então, comumask 022
, você obteria diretórios comrwxr-xr-x
permissão e arquivos regulares comrw-r--r--
.Com GNU
tar
, você pode conseguir algo semelhante com:Com a limitação adicional de que ele não criará diretórios que não contenham arquivos regulares e falhará se alguns nomes de diretório terminarem em caracteres de nova linha.
Você deve ser capaz de combinar a configuração a
umask
com o argumento usingtar
,--no-same-permissions
evitando assim que o bit executável seja definido na extração.