qual é a diferença entre umask e chmod

8

Estou completamente confuso entre umask e chmod. Ambos são usados para conceder permissões aos arquivos. Mas onde exatamente está a diferença e quando usá-los.

Eu li a documentação on-line, mas ambas estão parecendo iguais para mim.

umask: umask é usado para definir permissões de arquivo padrão. Essas permissões serão usadas em todos os arquivos subsequentes durante a criação. chmod: usado para alterar permissões de arquivos e diretórios.

Segundo meu entendimento, por exemplo, o arquivo test.doc é criado.

Por padrão, o unix fornece o arquivo 022 código umask.

Agora, quando eu altero para o chmod 666 test.doc, posso alterar o nível de permissão deste arquivo.

Agora, se eu usar umask 666 para o mesmo arquivo.

Que diferença acontece quando eu uso chmod 666 e umask 666

    
por user548781 22.01.2016 / 21:33

2 respostas

8

A diferença é que umask envolve apenas novos arquivos . Como você afirmou, umask define as permissões padrão que um arquivo / diretório terá no momento da criação, mas depois umask não afeta mais.

chmod , no entanto, precisa que o arquivo seja criado antes de ser executado.

Portanto, se você executar umask , ele não terá efeito algum nos arquivos existentes.

    
por 22.01.2016 / 21:36
2

umask é muito diferente de chmod , na verdade.

  1. 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").

  2. 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 ).

  3. 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 .)

  4. 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
    
por 17.09.2018 / 01:38

Tags