umask
é muito diferente de chmod
, na verdade.
-
Uma diferença importante ainda não foi mencionada:
chmod
conjuntos, mas umask
limpa (restringe) bits de permissão. É por isso que é chamado de "máscara" (como em "bitmask").
-
Como David escreveu , umask
é uma configuração de nível de processo, por isso não é aplicado em quaisquer arquivos específicos (em oposição a chmod
).
-
O que nos leva a outro ponto importante: umask
não está limitado a arquivos. Também é aplicado ao criar diretórios. (Veja também, por exemplo, esta resposta .)
-
Também é importante que o comando chmod
em si não seja afetado pelo umask
configurado no momento.
Agora, ao seu exemplo do que seria umask 666
:
Ele dirá ao processo atual (por exemplo, seu shell) que qualquer novo objeto do sistema de arquivos deve ser criado com R
+ W
bits (4 + 2 = 6) removido (de Quaisquer permissões implícitas ou explicitamente solicitadas na criação). (Portanto, 666 não é um valor muito prático, pois permite que os bits X
(execute) sejam definidos, mas para arquivos ilegíveis ...)
Por exemplo:
$ touch foo; ls -la foo
-rw-r--r-- ... foo <-- default permissions
$ umask 666
$ touch bar; ls -la bar
---------- ... bar <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir <-- not very practical for dirs, either
$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask
$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong <-- (so, it seems this was the default umask)
$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong <-- no surprise of any kind here