No Linux, todos os diretórios e arquivos têm permissões de acesso . Você pode usar chmod
para definir seus direitos de acesso preferidos para diferentes usuários. Mas o que decide suas permissões padrão? Vamos conversar sobre umask
.
Índice
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 ls
comando e o
-l
opção (formato longo).
ls -l qualquer*
Também veremos um diretório adicionando a -d
opção (diretório). Sem esta opção, ls
olharíamos os arquivos dentro do diretório, não o diretório em si.
ls -ld
No início de cada entrada na ls
listagem, há uma coleção de 10 caracteres. Aqui está um close desses caracteres para um arquivo e um diretório.
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.
Para nosso diretório de exemplo, os 10 caracteres significam:
- d : Este é um diretório.
- rwx : O proprietário pode ler, escrever e executar (
cd
dentro) deste diretório. - rwx : Outros membros do mesmo grupo podem ler, gravar e
cd
neste diretório. - rx : Todos os outros podem
cd
entrar 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 stat
comando.
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 grep
a 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: ("
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 umask
comando.
umask
E para raiz:
umask
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: ("
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: ("
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.
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
Adicione sua configuração umask próximo ao topo do arquivo.
Salve o arquivo e feche o editor. abra uma nova janela de terminal e verifique o valor umask com o umask
comando.
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 umask
comando. 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
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
As únicas permissões são para o proprietário do diretório.
mkdir arquivo seguro.txt
ls -ld arquivo seguro.txt
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, useradd
usa 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
Neste computador, o sistema de arquivos “/boot/efi” possui uma configuração umask de 077 aplicada a ele.
Observando o ponto de montagem do sistema de arquivos, ls
podemos verificar se o valor umask removeu todas as permissões de todos, exceto o proprietário, root .
ls /boot/efi -ld
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 .