O que é umask no Linux e como você o usa?

Laptop Linux mostrando um prompt do bash

No Linux, todos os diretórios e arquivos têm permissões de acesso . Você pode usar chmodpara definir seus direitos de acesso preferidos para diferentes usuários. Mas o que decide suas permissões padrão? Vamos conversar sobre umask.

Permissões de acesso

Todos os diretórios e arquivos possuem sinalizadores chamados bits de modo que decidem se eles podem ser lidos, gravados ou executados. Executar um arquivo significa executá-lo como um programa ou script. Para um diretório, você deve ser capaz de “executar” um diretório nele cd. Coletivamente, as configurações do modo de bit são chamadas de permissões do diretório ou arquivo.

Existem três conjuntos de permissões. Um conjunto é para o proprietário do diretório ou arquivo. A menos que a propriedade tenha sido alterada com

 chown 

, o proprietário é a pessoa que criou o diretório ou arquivo.

O segundo conjunto de permissões é para os membros do grupo de usuários ao qual o diretório ou arquivo foi atribuído. Normalmente, este é o grupo de usuários do proprietário.

Há um terceiro e último conjunto de permissões para “outros”. É um resumo para todos que não estão contidos nos dois primeiros conjuntos.

Ao separar as permissões desta forma, diferentes capacidades podem ser atribuídas às três categorias. É assim que o acesso a diretórios e arquivos é controlado no Linux. Embora seja um esquema simples, ele fornece uma maneira flexível e robusta de determinar quem pode fazer o quê com qualquer diretório ou arquivo.

Os bits de modo

Você pode ver as permissões dos arquivos usando o lscomando e o

 -l 

opção (formato longo).

ls -l qualquer*

Também veremos um diretório adicionando a -dopção (diretório). Sem esta opção, lsolharíamos os arquivos dentro do diretório, não o diretório em si.

ls -ld

Usando ls para ver as permissões em diretórios e arquivos

No início de cada entrada na lslistagem, há uma coleção de 10 caracteres. Aqui está um close desses caracteres para um arquivo e um diretório.

As permissões de um arquivo e diretório, close-up

O arquivo é a linha superior, o diretório é a linha inferior. O primeiro caractere nos diz se estamos olhando para um diretório ou arquivo. Um “d” indica um diretório e um traço ” -” indica um arquivo.

Os três conjuntos de permissões são indicados por cada grupo de três caracteres. Da esquerda para a direita, essas são as permissões do proprietário, do grupo e de outros. Em cada conjunto de permissões os três caracteres, da esquerda para a direita, indicam a configuração da permissão de leitura “r”, da permissão de gravação “w” e da permissão de execução “x”. Uma carta significa que a permissão está definida. Um traço ” -” significa que a permissão não está definida.

Para nosso arquivo de exemplo, os 10 caracteres significam:

  • : Este é um arquivo, não um diretório.
  • rwx : O proprietário pode ler, escrever e executar este arquivo.
  • rw- : Outros membros do mesmo grupo ao qual este arquivo está atribuído podem ler e gravar no arquivo, mas não podem executá-lo.
  • r– : Todos os outros só podem ler o arquivo.
Recomendado:  Como conectar sua Nest Cam a uma nova rede Wi-Fi

Para nosso diretório de exemplo, os 10 caracteres significam:

  • d : Este é um diretório.
  • rwx : O proprietário pode ler, escrever e executar ( cddentro) deste diretório.
  • rwx : Outros membros do mesmo grupo podem ler, gravar e cdneste diretório.
  • rx : Todos os outros podem cdentrar neste diretório, mas só podem ler arquivos. Eles não podem excluir arquivos, editar arquivos ou criar novos arquivos.

As permissões são armazenadas em bits de modo nos metadados do diretório ou arquivo. Cada bit de modo possui um valor numérico. Todos eles têm um valor zero se não estiverem definidos.

  • r : O bit de leitura tem um valor de 4 se definido.
  • w : O bit de gravação tem um valor de 2 se definido.
  • x : O bit de execução tem o valor 1 se definido.

Um conjunto de três permissões pode ser representado pela soma dos valores dos bits. O valor máximo é 4+2+1=7, o que definiria todas as três permissões em um conjunto como “ativadas”. Isso significa que todas as permutações de todos os três conjuntos podem ser capturadas em um valor octal de três dígitos (base 8) .

Tomando nosso arquivo de exemplo acima, o proprietário tem permissões de leitura, gravação e execução, que são 4+2+1=7. Outros membros do grupo em que o arquivo está têm permissões de leitura e gravação, que é 4+2=6. A categoria outras possui apenas a permissão de leitura definida, que é simplesmente 4.

Portanto, as permissões para esse arquivo podem ser expressas como 764.

Usando o mesmo esquema, as permissões para o diretório seriam 775. Você pode ver a representação octal das permissões usando o statcomando.

O comando chmod( ch ange  mod e bits) é a ferramenta usada para definir as permissões em diretórios e arquivos. Mas isso não determina quais permissões serão definidas em um diretório ou arquivo quando você o criar. Um conjunto padrão de permissões é usado para isso.

As permissões padrão e umask

As permissões padrão para um diretório são 777 e as permissões padrão para um arquivo são 666. Isso dá a cada usuário acesso total a todos os diretórios e a capacidade de ler e gravar qualquer arquivo. O bit de execução não está definido nos arquivos. Você não pode criar um arquivo que já tenha o bit de execução definido. Isso pode dar origem a riscos de segurança.

No entanto, se você criar um novo diretório e um novo arquivo e observar suas permissões, eles não serão definidos como 777 e 666. Criaremos um arquivo e um diretório e, em seguida, usaremos o canal parastat extrair grepa linha com o Octal representação de suas permissões.

toque em umask-article.txt

mkdir howtogeek

stat umask-artigo.txt | grep "Acesso: ("

stat howtogeek | grep "Acesso: ("

permissões padrão para um diretório e arquivo e a saída estatística para cada um deles

Eles estão definidos como 775 para o diretório e 664 para o arquivo. Eles não estão definidos com as permissões padrão globais porque outro valor os modifica, chamado valor umask.

O valor umask

O valor umask é definido globalmente com um valor para root e outro diferente para todos os outros usuários. Mas pode ser definido com um novo valor para qualquer pessoa. Para ver qual é a configuração atual do umask, use o umaskcomando.

Recomendado:  O Android 12 já chegou ... Se você tem um smartphone Pixel

umask

O valor umask para um usuário normal

E para raiz:

umask

O valor umask para o usuário root

As permissões em um diretório ou arquivo recém-criado são o resultado da modificação do valor umask das permissões padrão globais.

Assim como os bits de modo, o valor umask representa os mesmos três conjuntos de permissões – proprietário, grupo e outros – e os representa como três dígitos octais. Às vezes, você os verá escritos como quatro dígitos, sendo o primeiro dígito um zero. Essa é uma forma abreviada de dizer “este é um número octal”. São os três dígitos mais à direita que contam.

O valor umask não pode adicionar permissões. Ele só pode remover — ou mascarar — permissões. É por isso que as permissões padrão são tão liberais. Eles foram projetados para serem reduzidos a níveis sensatos pela aplicação do valor umask.

Um conjunto de permissões padrão não será adequado para todos os usuários, nem para todos os cenários. Por exemplo, diretórios e arquivos criados pelo root precisarão de permissões mais restritivas do que o usuário médio. E mesmo um usuário comum não deseja que todos na categoria outros possam ver e alterar seus arquivos.

Como umask mascara permissões

Subtrair o valor da máscara das permissões padrão fornece as permissões reais. Em outras palavras, se uma permissão for definida no valor umask, ela não será definida nas permissões aplicadas ao diretório ou arquivo.

Os valores umask funcionam como o inverso dos valores de permissão usuais.

  • 0 : Nenhuma permissão é removida.
  • 1 : O bit de execução não está definido nas permissões.
  • 2 : O bit de gravação não está definido nas permissões.
  • 4 : O bit de leitura não está definido nas permissões.

As permissões padrão de 777 para diretórios e 666 para arquivos foram modificadas pelo valor umask de 002 para gerar as permissões eventuais de 775 e 664 em nosso diretório e arquivo de teste.

stat umask-artigo.txt | grep "Acesso: ("

stat howtogeek | grep "Acesso: ("

As eventuais permissões em um diretório e arquivo

Isso remove a permissão de gravação da categoria outros no diretório e no arquivo.

se root criar um diretório, seu valor umask de 022 será aplicado. A permissão de gravação é removida para a categoria outros e também para a categoria grupo.

sudo mkdir root-dir

stat howtogeek | grep "Acesso: ("

A permissão quando o root cria um diretório

Podemos ver que as permissões padrão de 777 foram reduzidas para 755.

Alterando o valor umask padrão

Existem diferentes valores umask para shells de login e shells sem login. Shells de login são os shells que permitem fazer login, local ou remotamente por SSH . Um shell sem login é um shell dentro de uma janela de terminal quando você já está logado.

Recomendado:  Como verificar manualmente se há atualizações do sistema em um telefone Android

Tenha muito cuidado se você alterar o umask do shell de login. Não aumente as permissões e diminua sua segurança. Na verdade, você deve estar inclinado a reduzi-los e torná-los mais restritivos.

No Ubuntu e Manjaro, as configurações do umask podem ser encontradas nestes arquivos:

  • Login Shell umask : Para o valor umask padrão do shell de login: /etc/profile
  • Shell sem login : para o valor umask padrão do shell sem login: /etc/bash.bashrc

No Fedora, as configurações do umask podem ser encontradas nestes arquivos:

  • Login Shell umask : Para o valor umask padrão do shell de login: /etc/profile
  • Shell sem login : para o valor umask padrão do shell sem login: /etc/bashrc

Se você não tiver necessidade urgente de alterá-los, é melhor deixá-los em paz.

A maneira preferida é definir um novo valor umask para qualquer conta de usuário individual que precise ser diferente do padrão. Uma nova configuração umask pode ser colocada no arquivo “.bashrc” de um usuário em seu diretório inicial.

gedit.bashrc

Abrindo o arquivo .bashrc em um editor

Adicione sua configuração umask próximo ao topo do arquivo.

Adicionando o valor umask ao arquivo .bashrc

Salve o arquivo e feche o editor. abra uma nova janela de terminal e verifique o valor umask com o umaskcomando.

umask

Verificando o novo valor umask

O novo valor está ativo.

Mudanças de curto prazo no umask

Se você tiver um requisito de curto prazo para um valor de umask diferente, poderá alterá-lo para sua sessão atual usando o umaskcomando. Talvez você vá criar uma árvore de diretórios e alguns arquivos e queira aumentar a segurança deles.

Você pode definir o valor umask como 077 e verificar se o novo valor está ativo.

umask 077

umask

Configurando um valor umask temporário

Definir a máscara para ter um valor 7 no grupo e outras categorias significa que todas as permissões serão retiradas dessas categorias. Ninguém além de você (e do root) poderá entrar nos novos diretórios e ler e editar seus arquivos.

mkdir diretório seguro

ls -ld diretório seguro

Criando um novo diretório em uma sessão com um valor umask temporário

As únicas permissões são para o proprietário do diretório.

mkdir arquivo seguro.txt

ls -ld arquivo seguro.txt

Criando um novo arquivo em uma sessão com um valor umask temporário

O arquivo é seguro contra espionagem de qualquer outro usuário. Fechar a janela do terminal descarta a configuração temporária de umask.

Outras maneiras de usar umask

O Linux permite que alguns processos herdem valores de umask do sistema ou recebam suas próprias configurações de umask. Por exemplo, useraddusa uma configuração umask para criar diretórios iniciais de novos usuários.

Um valor umask também pode ser aplicado a um sistema de arquivos.

menos /etc/fstab

Olhando para o arquivo /etc/fstab com menos

Neste computador, o sistema de arquivos “/boot/efi” possui uma configuração umask de 077 aplicada a ele.

A configuração umask no arquivo /etc/fstab

Observando o ponto de montagem do sistema de arquivos, lspodemos verificar se o valor umask removeu todas as permissões de todos, exceto o proprietário, root .

ls /boot/efi -ld

Usando ls para ver as permissões no

umask e permissões precisam uma da outra

As permissões padrão são aplicadas a um diretório ou arquivo depois de serem transformadas pelo valor umask. Será muito raro que você precise alterar o valor umask permanentemente para um usuário, mas definir temporariamente seu valor umask para fornecer um conjunto mais restrito de permissões enquanto você cria uma coleção de diretórios ou documentos confidenciais é uma maneira rápida e fácil de reforçar seu segurança .