fbpx

Comandos Linux – Comando umask

Comando umask do Linux

comando umask

Em sistemas operacionais do tipo Unix, o comando umask retorna ou define o valor da máscara de criação do modo de arquivo do sistema.

Este documento cobre a versão Linux do umask .

Descrição

No Linux e outros sistemas operacionais do tipo Unix , novos arquivos são criados com um conjunto de permissões padrão . Especificamente, as permissões de um novo arquivo podem ser restringidas de uma maneira específica, aplicando uma “máscara” de permissões chamada umask . O comando umask é usado para definir essa máscara ou mostrar seu valor atual.

Sintaxe

umask [-S] [ máscara ]

Opções

-SAceite uma representação simbólica de uma máscara ou retorne uma.
mascararSe uma máscara válida for especificada, o umask será definido para este valor. Se nenhuma máscara for especificada, o valor umask atual será retornado.

O que são permissões e como elas funcionam?

Como você deve saber, cada arquivo no seu sistema associou a ele um conjunto de permissões usadas para proteger os arquivos: as permissões de um arquivo determinam quais usuários podem acessar esse arquivo e que tipo de acesso eles têm.

Existem três classes gerais de usuários:

  • O usuário que possui o arquivo (” Usuário “).
  • Usuários pertencentes ao grupo de propriedade definido do arquivo (” Grupo “).
  • Todos os outros (” Outros “).

Por sua vez, para cada uma dessas classes de usuário, existem três tipos de acesso a arquivos:

  • A capacidade de examinar o conteúdo do arquivo (” Ler “).
  • A capacidade de alterar o conteúdo do arquivo (” Gravação “).
  • A capacidade de executar o conteúdo do arquivo como um programa no sistema (” Executar “).

Portanto, para cada uma das três classes de usuário, existem três tipos de acesso. Juntas, essas informações compõem as permissões do arquivo .

Como as permissões são representadas?

Há duas maneiras de representar as permissões de um arquivo: simbolicamente (usando símbolos como ” r ” para leitura, ” w ” para gravação e ” x ” para execução) ou com um valor numérico octal .

Por exemplo, quando você lista o conteúdo de um diretório na linha de comandos usando o comando ls da seguinte maneira:

ls -l

você verá (entre outras informações) as informações de permissão de arquivo para cada arquivo. Aqui, ele é representado simbolicamente , como o exemplo a seguir:

-rwxr-xr--

Existem dez símbolos aqui. O primeiro traço (”  “) significa que este é um arquivo “regular”, em outras palavras, não um diretório (ou um dispositivo ou qualquer outro tipo especial de arquivo). Os nove símbolos restantes representam as permissões: rwxr-xr– . Na verdade, esses nove símbolos são três conjuntos de três símbolos cada e representam as respectivas permissões específicas, da esquerda para a direita:

símbolossignificado
rwxo proprietário do arquivo pode ler , gravar ou executar esse arquivo como um processo no sistema.
rxqualquer pessoa no grupo do arquivo pode ler ou executar esse arquivo, mas não pode gravá-lo.
r–qualquer um pode ler esse arquivo, mas não pode gravar ou executar seu conteúdo como um processo.

Especificando a máscara de criação de arquivo usando símbolos

A forma simbólica geral de uma máscara é a seguinte:

[ símbolo (s) da classe de usuário ] [ operador de permissões ] [ símbolo (s) de permissão ] [ , ] ...

símbolo de permissão é qualquer combinação de r (leitura), w (gravação) ou x (execução), conforme descrito acima.

O símbolo da classe de usuário pode ser um ou mais dos seguintes:

vocêUsuário (o proprietário do arquivo).
gGrupo (qualquer membro do grupo definido do arquivo).
oOutro (mais alguém).
umaTudo (equivalente a ugo ).

O operador de permissões pode ser um dos seguintes:

+permita que as permissões de arquivo especificadas sejam ativadas para as classes de usuário especificadas (as permissões não especificadas não são alteradas na máscara).
proibir que as permissões de arquivo especificadas sejam ativadas para as classes de usuário especificadas (as permissões não especificadas não são alteradas na máscara).
=permita que as permissões de arquivo especificadas sejam ativadas para as classes de usuário especificadas (permissões não especificadas serão proibidas pela máscara durante a criação do arquivo).

Portanto, por exemplo, o seguinte comando umask :

umask u + w

define a máscara para que, quando os arquivos forem criados, eles tenham permissões que permitem a permissão de gravação para o usuário (proprietário do arquivo). O restante das permissões do arquivo permaneceria inalterado em relação ao padrão do sistema operacional.

Múltiplas alterações podem ser especificadas separando vários conjuntos de notação simbólica por vírgulas (mas não espaços!). Por exemplo:

umask ux, g = r, o + w

Este comando definirá a máscara para que, quando os arquivos subseqüentes forem criados, eles tenham permissões que:

  1. proibir que a permissão de execução seja definida para o proprietário (usuário) do arquivo, mantendo inalteradas as demais permissões do proprietário;
  2. habilite a permissão de leitura para o grupo, enquanto proíbe a permissão de gravação e execução para o grupo;
  3. ative a permissão de gravação para outras pessoas, mantendo as demais permissões inalteradas.

Observe que, se você usar o operador igual (” = “), todas as permissões não especificadas serão especificamente proibidas. Por exemplo, o comando

umask a =

Irá definir a máscara de criação de arquivos para que novos arquivos sejam inacessíveis a todos.

Especificando a máscara de criação de arquivo usando representação numérica

A máscara de criação de arquivo também pode ser representada numericamente , usando valores octais (os dígitos de 0 a 7). Ao usar a representação numérica octal, certos números representam determinadas permissões e esses números são adicionados ou subtraídos um do outro para representar o valor final das permissões combinadas. Especificamente, os números 1 , 2 e 4 representam as seguintes permissões:

númeropermissão
4ler
2Escreva
1executar

Esses números são usados ​​porque qualquer combinação desses três números será única. A tabela a seguir ilustra suas combinações exclusivas:

valor de leitura +escrever valor +execute value =valor combinado:equivalente simbólico:
0 00 00 00 0
0 00 011x
0 020 02W
0 0213wx
40 00 04r
40 015rx
420 06rw
4217rwx

Para cada classe de usuário, um dígito pode ser usado para representar suas permissões; usando o exemplo acima, poderíamos representar a permissão simbólica de rwxr-xr– usando o número octal de três dígitos 754 . A ordem dos dígitos é sempre a mesma: Usuário , Grupo , Outro .

O outro dígito de permissão

Nas representações octais de permissões de arquivo, na verdade existem quatro dígitos. Os três dígitos importantes que discutimos são os três últimos. O primeiro dígito é um indicador especial de permissão de arquivo e, para os fins desta discussão, pode ser considerado sempre zero. Portanto, a partir de agora, quando discutirmos a permissão de arquivo 777 , ela também poderá ser chamada de 0777 .

Então, como o umask realmente funciona?

umask mascara as permissões, restringindo-as por um determinado valor.

Essencialmente, cada dígito do umask é “subtraído” do valor padrão do sistema operacional para chegar ao valor padrão definido por você. Não é realmente subtração; tecnicamente, a máscara é negada (seu elogio bit a bit é obtido) e esse valor é aplicado às permissões padrão usando uma operação lógica AND . O resultado é que o umask informa ao sistema operacional quais bits de permissão serão “desativados” ao criar um arquivo.

No Linux, o valor padrão das permissões é 666 para um arquivo regular e 777 para um diretório. Ao criar um novo arquivo ou diretório, o kernel pega esse valor padrão, “subtrai” o valor umask e concede aos novos arquivos as permissões resultantes.

Esta tabela mostra como cada dígito do valor umask afeta as novas permissões de arquivo e diretório:

dígito umaskpermissões de arquivo padrãopermissões de diretório padrão
0 0rwrwx
1rwrw
2rrx
3rr
4Wwx
5WW
6xx
7(nenhuma permissão permitida)(nenhuma permissão permitida)

Portanto, se nosso valor umask for 022 , qualquer novo arquivo terá, por padrão, as permissões 644 (666 – 022). Da mesma forma, qualquer novo diretório será criado, por padrão, com as permissões 755 (777 – 022).

Exemplos

Para visualizar o valor umask atual do seu sistema , digite o comando:

umask

que retornará a umask do seu sistema como um número octal de quatro dígitos, por exemplo:

0002

Novamente, o primeiro zero é um dígito de permissão especial e pode ser ignorado; para nossos propósitos, 0002 é o mesmo que 002 .

Para visualizar isso como uma representação simbólica, use o sinalizador -S :

umask -S

O qual retornará o mesmo valor simbolicamente, por exemplo:

u = rwx, g = rwx, o = rx

onde u representa usuário , g representa grupo e o representa outro . Isso nos diz o seguinte: se criarmos um novo arquivo, ele terá as permissões padrão 664 , que são 666 (as permissões padrão para arquivos) mascaradas por 002 (nosso valor umask).

Vamos testar isso criando um novo arquivo com o comando touch :

touch testfile

E agora vamos obter uma listagem de diretório para esse arquivo:

ls -l testfile
-rw-rw-r-- 1 myusername myusername 0 7 de janeiro 14:29 testfile

Como esperado, o novo arquivo tem permissões -rw-rw-r– ou 0664 : o proprietário e o grupo podem ler ou gravar o arquivo e outros podem apenas lê-lo.

Agora vamos mudar o umask. Para definir uma umask de 022 , use o comando:

umask 022

É o mesmo que executar umask 0022 ; se você especificar apenas três dígitos, o primeiro dígito será assumido como zero. Vamos verificar se a alteração ocorreu:

umask
0022

E agora vamos criar um novo arquivo:

touch testfile2

E agora vamos ver sua lista de diretórios, junto com o primeiro arquivo que criamos, usando o curinga do asterisco (” * “) para exibir todos os arquivos cujo nome começa com ” testfile “:

ls -l testfile *
-rw-rw-r-- 1 myusername myusername 0 7 de janeiro 14:29 testfile
-rw-r - r-- 1 myusername myusername 0 7 de janeiro às 14:39 testfile2

Como você pode ver, testfile2 tem as permissões 644 .

Aqui estão alguns outros comandos umask de exemplo :

umask a + r

Define a máscara para que novos arquivos permitam a todos os usuários lê-los; outras permissões permanecerão inalteradas em relação ao padrão.

machado umask

Define a máscara para que novos arquivos não sejam inicialmente executáveis ​​por nenhum usuário; outras permissões padrão inalteradas dos padrões.

umask u = rw, vá =

Define a máscara para que os novos arquivos sejam legíveis e graváveis ​​pelo usuário que possui o arquivo, mas não podem ser executados; membros do grupo e outros não terão permissão para acessar o arquivo.

umask 777

Torne novos arquivos inacessíveis a todos – ninguém pode lê-los, gravá-los ou executá-los.

umask 000

Torne novos arquivos completamente acessíveis (leia, grave e execute) para absolutamente todos. No entanto, esta é uma má ideia. Não faça isso.

chmod – Altere as permissões de arquivos ou diretórios.
csh – O interpretador de comandos do shell C.
ksh – O interpretador de comandos do shell Korn.
sh – O interpretador de comandos do Bourne shell.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.