Como obter as permissões padrão de um arquivo no linux

4

Se houver um arquivo chamado new.txt , que tem permissão -rw-r--r-- , mas quando alguém usar chmod 777 new.txt , as permissões serão alteradas. Então, como recuperar as permissões originais de new.txt, se eu não souber a permissão anterior.

    
por Abhishek 26.06.2018 / 09:42

3 respostas

2

O sistema não manterá um histórico de permissões de arquivos anteriores para você. Se você tiver um backup que inclua esse arquivo com suas permissões originais, poderá obter as informações de permissões originais, listando o conteúdo desse backup.

Dependendo de qual solução de backup você usa, talvez não seja necessário restaurar nenhum arquivo real: apenas uma listagem de diretório do conteúdo de um backup com as permissões de arquivo incluídas pode ser suficiente.

Se não houver backup, você deve usar o poder intelectual para deduzir quais deveriam ter sido as permissões. Como atype disse , a configuração umask do usuário determina as permissões padrão para quaisquer arquivos ou diretórios criados pelo usuário.

Para a maioria dos arquivos regulares, o "conjunto inicial" de permissões é 666 e, em seguida, o valor umask é usado para ocultar algumas permissões. Portanto, se você souber que o valor umask do usuário é 022, as permissões padrão reais para o novo arquivo serão 666 - 022 = 644 ou -rw-r--r-- .

Nota: os números de permissões estão em octal e a operação real usa operadores booleanos: 666 AND (NOT 022) = 644.

Para diretórios e arquivos executáveis, o "conjunto inicial" de permissões será 777 em vez de 666. Portanto, se o usuário umask for 022, as permissões padrão reais para um novo diretório serão 777 - 022 = 755 ou drwxr-xr-x .

    
por 26.06.2018 / 10:31
0

Você não pode "recuperar as permissões originais" de um arquivo. O que você pode fazer, no entanto, é defini-los como quaisquer configurações padrão agora .

touch /tmp/file.$$                  # Create a temporary file with "default" perms
chmod --ref=/tmp/file.$$ new.txt    # "Reset" the file new.txt
rm -f /tmp/file.$$                  # It's always good to tidy up

A configuração padrão é controlada pelo valor umask do shell. No meu sistema, aqui está a configuração atual:

umask
0022

Isto significa que a permissão de escrita (valor 02, binário 010) para grupo e outros é removida quando um arquivo ou diretório é criado.

Além disso, esteja ciente de que a maioria dos editores não criará um arquivo com o bit de executável definido (valor binário 001), embora isso deva ser permitido pela configuração umask . Cabe a você, como usuário, diferenciar um arquivo comum (sem permissão de execução) e outro que seja um script (com permissão de execução):

chmod +x new.txt                    # Add execute permission
    
por 26.06.2018 / 10:22
0

As permissões padrão são diferenciadas por umask . Se você quiser encontrar permissões padrão do arquivo recém-criado, basta olhá-lo. Se o arquivo para o qual você deseja encontrar permissões de instalação fizer parte de um pacote, geralmente você pode consultá-lo e descobrir.

    
por 26.06.2018 / 10:10