Extrai arquivos e pastas com permissões especificadas

10

Eu carrego uma pasta com várias subpastas e arquivos no Windows com 7zip, carrego no VPS e, em seguida, executo o comando:

tar -xvzf file.tar.gz

então todos os arquivos e pastas descompactados têm permissões de 777. Como faço para que as pastas tenham permissões de 755 e arquivos 644?

    
por Kaspar L. Palgi 23.01.2012 / 01:37

5 respostas

13

Se você estiver executando tar(1) como um usuário comum, ele aplicará seu umask por padrão. Se você estiver executando tar(1) como root , você pode dar a opção de linha de comando --no-same-permissions para pedir que tar(1) respeite o umask .

Então: execute isso como um usuário comum:

umask 022
tar zxvf file.tar.gz

ou execute isso como root :

umask 022
tar zxvf file.tar.gz --no-same-permissions

Você pode querer colocar umask 022 em ~/.bashrc , ~/.bash_profile ou ~/.profile . (Veja bash(1) manpage para detalhes completos sobre os arquivos de inicialização. É complicado.)

Detalhes sobre umask podem ser encontrados na manpage do seu shell, na manpage de chamada de sistema umask(2) ou na manpage do utilitário umask(1posix) POSIX (se você tiver o manpages-posix instalado).

    
por 23.01.2012 / 01:48
5

Execute os seguintes comandos na raiz do diretório para definir as permissões desejadas para seus diretórios e arquivos:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Esteja ciente do espaço entre a chave de fechamento e a barra invertida

    
por 23.01.2012 / 01:48
2

Eu encontrei esta solução que funcionou para mim. Para pastas e subpastas:

chmod -R 777 */

E para todos os arquivos (também em pastas e subpastas):

find . -type f -name "*" | xargs chmod 644

Todos os comentários são bem-vindos se isso não for uma boa maneira de fazer isso. Acabei de começar a aprender Linux.

Após comentários, uma solução mais robusta que lida bem com caracteres especiais seria:

find . -type f -print0 | xargs -0 chmod 644  # For files
find . -type d -print0 | xargs -0 chmod 755  # For directories
    
por 29.01.2012 / 15:49
1

Se você usar o capital X em chmod , poderá usá-lo para definir as permissões de execução apenas nos diretórios. ou seja,

chmod -R ugo+X .
    
por 17.06.2015 / 06:23
0

encontre. -tipo f -exec chmod 644 {} \;

    
por 30.09.2013 / 02:10