Efeito do utilitário umask nas permissões


O exemplo a seguir explica como o umask afeta as permissões de arquivos e diretórios. Observe as permissões padrão do umask para os arquivos e diretórios no shell atual.

Se você criar um arquivo regular, suas permissões octais iniciais serão 0666 (000 110 110 110, na representação binária). Em seguida, o umask 0002 (000 000 000 010) desativa o bit de permissão de gravação para outros. Por isso, o proprietário e o grupo têm permissões de leitura e gravação nos arquivos e outros estão configurados para leitura (000 110 110 100).

[user@host ~]$ umask
0002
[user@host ~]$ touch default.txt
[user@host ~]$ ls -l default.txt
-rw-rw-r--. 1 user user 0 May  9 01:54 default.txt

Se você criar um diretório, suas permissões octais iniciais serão 0777 (000 111 111 111). Em seguida, o umask 0002 (000 000 000 010) desativa o bit de permissão de gravação para outro. Por isso, o proprietário e o grupo têm permissões de leitura, gravação e execução nos diretórios e outro está configurado para leitura e execução (000 111 111 101).

[user@host ~]$ umask
0002
[user@host ~]$ mkdir default
[user@host ~]$ ls -ld default
drwxrwxr-x. 2 user user 0 May  9 01:54 default

Definindo o valor umask como 0, as permissões de arquivo para outras alterações são de leitura a leitura e gravação. As permissões do diretório para outra alteração de leitura e execução a leitura, gravação e execução.

[user@host ~]$ umask 0
[user@host ~]$ touch zero.txt
[user@host ~]$ ls -l zero.txt
-rw-rw-rw-. 1 user user 0 May  9 01:54 zero.txt
[user@host ~]$ mkdir zero
[user@host ~]$ ls -ld zero
drwxrwxrwx. 2 user user 0 May  9 01:54 zero

Para mascarar todas as permissões de arquivo e diretório para outros, defina o valor umask como 007.

[user@host ~]$ umask 007
[user@host ~]$ touch seven.txt
[user@host ~]$ ls -l seven.txt
-rw-rw----. 1 user user 0 May  9 01:55 seven.txt
[user@host ~]$ mkdir seven
[user@host ~]$ ls -ld seven
drwxrwx---. 2 user user 0 May  9 01:54 seven

Um umask com o valor de 027 garante que os novos arquivos tenham permissões de leitura e gravação para usuário e permissão de leitura para grupo. Novos diretórios têm acesso de leitura e gravação para grupo e nenhuma permissão para outros.

[user@host ~]$ umask 027
[user@host ~]$ touch two-seven.txt
[user@host ~]$ ls -l two-seven.txt
-rw-r-----. 1 user user 0 May  9 01:55 two-seven.txt
[user@host ~]$ mkdir two-seven
[user@host ~]$ ls -ld two-seven
drwxr-x---. 2 user user 0 May  9 01:54 two-seven

Os scripts de inicialização do shell definem o umask para os usuários. Por padrão, se a UID da sua conta for 200 ou mais e seu nome de usuário e nome do grupo principal forem os mesmos, será atribuído à conta um umask de 002. Caso contrário, o umask é 022.

O usuário root pode alterar o umask padrão adicionando um script de inicialização do shell local-umask.sh no diretório /etc/profile.d/. O seguinte exemplo mostra um arquivo local-umask.sh:

[root@host ~]# cat /etc/profile.d/local-umask.sh
# Overrides default umask configuration asda sda
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 007
else
    umask 022
fi

O exemplo anterior configura o umask como 007 para usuários com uma UID maior que 199 e com um nome de usuário e um nome de grupo primário correspondentes e como 022 para todos os demais. Se você deseja configurar o umask de todos como 022, crie esse arquivo apenas com o seguinte conteúdo:

# Overrides default umask configuration
umask 022

O umask atual de um shell se aplica até que você faça logout do shell e faça login novamente.

Referências