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á-las.
Eu li a documentação on-line, mas ambos parecem iguais para mim.
umask: umask é usada para definir permissões de arquivo padrão. Essas permissões serão usadas para todos os arquivos subseqüentes durante sua criação. chmod: usado para alterar as permissões de arquivos e diretórios.
De acordo com o meu entendimento, se, por exemplo, o arquivo test.doc for criado.
Por padrão, o unix fornece o código 022 umask.
Agora, quando eu o altero para chmod 666 test.doc, posso alterar o nível de permissão deste arquivo.
Agora, e se eu usar o umask 666 para o mesmo arquivo.
Que diferença acontece quando eu uso o chmod 666 e o umask 666
umask
define uma variável de ambiente que define automaticamente as permissões de arquivo para os arquivos recém-criados .chmod
altera as permissões dos arquivos existentes .umask
não define "uma variável de ambiente" O que ele faz é definir a máscara de criação do modo de arquivo do ambiente de execução de shell atual.Respostas:
A diferença é que isso
umask
implica apenas novos arquivos . Como você afirmou, o umask define as permissões padrão que um arquivo / diretório terá no momento da criação, mas depoisumask
não as afeta mais.chmod
, no entanto, precisa que o arquivo seja criado antes da execução.Portanto, se você executar
umask
, ele não terá nenhum efeito sobre os arquivos existentes.fonte
umask
em um arquivo, ele não temfile
argumento.umask
é muito diferentechmod
, na verdade.Uma diferença importante ainda não foi mencionada:
chmod
define, masumask
limpa (restringe) os bits de permissão. É por isso que é chamado de "máscara" (como em "máscara de bits").Como David escreveu ,
umask
é uma configuração (no nível do processo), portanto não é aplicada a nenhum arquivo específico (ao contrário dechmod
).O que nos leva a outro ponto importante:
umask
não se limita a arquivos. Também é aplicado ao criar diretórios. (Veja também, por exemplo, esta resposta .)Também importante, que o
chmod
próprio comando não seja afetado pelo configurado atualmenteumask
.Agora, para o seu exemplo do que faria
umask 666
:Ele informará ao processo atual (por exemplo, seu shell) que quaisquer novos objetos do sistema de arquivos devem ser criados com os bits
R
+W
(4 + 2 = 6) removidos (de quaisquer permissões solicitadas implicitamente ou explicitamente na criação). (Portanto, 666 não é um valor muito prático, pois permite apenas que osX
bits (de execução) sejam definidos, mas para arquivos ilegíveis ...)Por exemplo:
fonte
UMASK = chmod 777 - permissões umask
Algo parecido.
fonte
A permissão padrão para diretórios / arquivos é umask 022; os diretórios são configurados por padrão com a permissão 755 (
drwx-rw-rw
) e os arquivos são configurados com 644 (-rw-r--r--
). Basicamente, você subtrai o valor octal da permissão desejada de 777 para um diretório e de 666 para um arquivo. Então, do exemplo acima:(directory) umask 022 => 777 - 022 = 755
(file) umask 022 => 666 - 022 = 644
Você pode encontrar o resultado do
umask octal
comando na fonte ao usar umask , dependendo do octal e se é um arquivo ou um diretório.Fonte
No entanto , se você
chmod 022 <file>
for um diretório, deverá obter o seguinte: od----w--w-
que não faria muito sentido.Abaixo, você encontrará uma ótima descrição do valor octal que pode ser recuperado aqui por Somnath Muluk, com ótimas fontes.
fonte