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.