Como fazer com que os arquivos extraídos do arquivo herdem a permissão da pasta pai

Como fazer com que os arquivos extraídos do arquivo herdem a permissão da pasta pai

Estou usando um Centos 8 Linux com vários usuários pertencentes ao mesmo grupo acessando uma pasta/subpasta número ff e arquivos no mesmo FS (xfs). Quero que todos os arquivos e pastas tenham permissão de gravação para o grupo configurando umask para 0002 permitir que o novo arquivo criado pelo usuário tenha a permissão correta, mas tenho tar e outros arquivos compactados sendo extraídos pelos usuários, os arquivos extraídos mantêm a permissão que tinham na origem e não estão mudando, resultando em alguns arquivos com permissão apenas para o proprietário e não para o grupo. Estou tentando encontrar uma maneira de definir a permissão automaticamente sem a necessidade do usuário executar um chmod para permitir a gravação para o grupo. Tentei atribuir g + está na pasta principal, mas só consigo fazer com que a nova pasta herde a permissão do grupo e não os arquivos individuais. Tentei ativar a ACL, mas novamente não consigo que os arquivos herdem a permissão da pasta pai. É assim que fica minha pasta principal

drwxrwsr-x+ 4 owner group 4.0K Mar 6 10:26 test

E o conteúdo depois de extrair um arquivo tgz nele

drwxrwsr-x+ 8 owner group 202 Mar 6 09:56 folder1 
drwxrwsr-x+ 8 owner group 202 Mar 6 10:12 folder2

mas quando chego à primeira pasta com arquivos, a permissão dos arquivos é apenas para o proprietário

ll test/folder1
-rwx------. 1 owner group 195K Jun 6 2018 file1
-rwx------. 1 owner group 225K Aug 4 2018 file2
-rwx------. 1 owner group 211K Aug 20 2018 file3
-rwx------. 1 owner group 100K Sep 9 2018 file4
-rwx------. 1 owner group 200K Oct 24 2018 file5
-rwx------. 1 owner group 199K Nov 9 2018 file6

mesmo depois de executar

setfacl -R -m d:o:rwx test

os arquivos não estão alterando sua permissão

Existe uma maneira de forçar todos os arquivos criados ou extraídos de um arquivo compactado a herdar a permissão da pasta principal?

Responder1

Ainda estou procurando uma solução melhor, mas por enquanto criei um script que canaliza a saída tar para o comando chmod

#!/bin/bash -
set -o pipefail
tar xvf "$@" | xargs -rd '\n' chmod 770 --

Não gosto muito porque instruir 100 ou mais usuários a usar um comando diferente será complicado, mas se não encontrar uma solução melhor, manterei esta. apenas para informações da página de manual tar parece ter uma opção que deve ignorar a permissão do arquivo

--no-same-permissions

mas parece funcionar apenas se a permissão umask for mais restritiva do que a dos arquivos extraídos, pergunto-me se é um bug

Responder2

Você poderia usar ostarimplementação detare sua -chmodopção de definir as permissões dos arquivos na extração:

star -x -o -f file.tar -find -chmod ug+rwX

informação relacionada