umask (Português)
O utilitário umask é usado para controlar a máscara de modo de criação de arquivo, o qual determinar o valor inicial dos bits de permissão de arquivo para arquivos recém-criados. O seguinte comportamento deste utilitário é padronizado pelo POSIX e descrito no Manual do Programador POSIX. Porque o umask afeta o ambiente de execução do shell atual, é geralmente implementado como um comando incorporado de um shell.
Significado da máscara de modo
A máscara de modo contém os bits de permissão que não devem ser definidos em um arquivo recém-criado e, portanto, é uma negação (também chamado, em inglês, de logical complement) dos bits de permissão definidos em um arquivo recém-criado. Se algum bit na máscara estiver configurado para 1
, a permissão correspondente para o arquivo recém-criado será desabilitada. Assim, a máscara atua como um filtro para retirar os bits de permissão e ajuda na configuração do acesso padrão aos arquivos.
O valor resultante para os bits de permissão a serem configurados em um arquivo recém-criado é calculado usando a negação de condicional ou implicação material (também chamada, em inglês, de material nonimplication ou abjunction, que pode ser expressa em notação lógica:
R: (D & (~M))
Isso é, as permissões resultantes R
são o resultado da conjunção binário (AND) de permissões padrão D
e a negação binária (NOT) da máscara de modo de criação de arquivo M
.
- O Linux não permite que um arquivo seja criado com permissões de execução – as permissões de criação padrão são
777
para diretórios e apenas666
para arquivos. - No Linux, apenas os bits de permissão do arquivo da máscara são usados – veja umask(2). Os bits suid, sgid e sticky da máscara são ignorados.
Por exemplo, suponha que a máscara do modo de criação de arquivos seja 027
. Aqui, a representação bit a bit de cada dígito representa:
0
significa não definido para os bits de permissão de usuário em um arquivo recém-criado2
significa não definido para os bits de permissão de grupo em um arquivo recém-criado7
significa não definido para os bits de permissão de outro em um arquivo recém-criado
Com as informações fornecidas pela tabela abaixo, isso significa que para um arquivo recém-criado, por exemplo, pertencente ao usuário Usuario1
e o grupo Grupo1
, o Usuario1
tem todas as permissões possíveis (valor octal 7
) para o arquivo recém-criado, outros usuários do grupo Grupo1
não possuem permissões de escrita (valor octal 5
) e qualquer outro usuário não possui quaisquer permissões (valor octal 0
) sobre o arquivo recém-criado. Então, com a máscara 027
deste exemplo, os arquivos serão criados com permissões 750
.
Octal | Binário | Singinificado |
---|---|---|
0 |
000 |
sem permissão |
1 |
001 |
somente execução |
2 |
010 |
somente escrita |
3 |
011 |
somente escrita e execução |
4 |
100 |
somente leitura |
5 |
101 |
leitura e execução |
6 |
110 |
leitura e escrita |
7 |
111 |
leitura, escrita e execução |
Exibir o valor atual da máscara
Para exibir a máscara atual, basta executar umask
sem especificar nenhum argumento. O estilo de saída padrão depende da implementação, mas geralmente é octal:
$umask
0027
Quando a opção -S
, padronizada pelo POSIX, é usada, a máscara será exibida usando a notação simbólica. No entanto, o valor da notação simbólica sempre será a negação binária do valor octal, isto é, os bits de permissão a serem definidos no arquivo recém-criado:
$ umask -S
u=rwx,g=rx,o=
Definir o valor da máscara
useradd -m
cria o diretório com permissão 700
por padrão), pois elas tornam todos os arquivos inacessíveis para outros usuários. Isso não seria prático (por exemplo, ao usar o Apache) e os arquivos públicos são armazenados entre os particulares, então, em vez disso, considere restringir o umask.Você pode definir o valor de umask através do comando umask. A string que especifica a máscara de modo segue as mesmas regras sintáticas que o argumento de modo de chmod (consulte o Manual do Programador POSIX para mais detalhes).
O valor de umask do sistema pode ser definido em /etc/profile
ou nos arquivos de configuração padrão do shell, por exemplo, /etc/bash.bashrc
. A maioria das distribuições Linux, incluindo o Arch, define um valor padrão de umask de 022
(veja /etc/profile). É possível também configurar umask com pam_umask.so
, mas este pode ser substituído por /etc/profile
ou similar.
Se você precisa definir um valor diferente, você pode editar diretamente esse arquivo, afetando todos os usuários, ou executar umask
a partir do arquivo de configuração do usuário do seu shell (ex.: ~/.bashrc
) para alterar apenas seu umask, porém essas mudanças só terão efeito após o próximo login. Para alterar seu umask apenas durante a sessão atual, basta executar umask
e digitar o valor desejado. Por exemplo, executar umask 077
lhe dará permissões de leitura e escrita para novos arquivos e permissões de leitura, escrita e execução para novas pastas.
Veja também
- Manual do Programador POSIX:
- umask (também disponível como umask(1p))
- chmod (descrição estendida) (também disponível como chmod(1p))
- 027 umask: um meio-termo entre segurança e simplicidade