Gerenciar Permissões Especiais e umask no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar permissões especiais e a configuração umask em um ambiente Linux para garantir a segurança de um espaço de trabalho colaborativo. Você explorará como controlar as permissões padrão atribuídas a arquivos recém-criados e como utilizar bits de permissão especiais, como o sticky bit, para evitar que arquivos dentro de um diretório compartilhado sejam excluídos por outros usuários.

Você começará preparando um ambiente compartilhado simulado, o que envolve a criação de um novo grupo de usuários e um diretório, seguido da atribuição de propriedade e permissões adequadas. Em seguida, você modificará o valor do umask para aplicar permissões padrão mais rigorosas e verificará o efeito criando um novo arquivo. Por fim, você configurará o sticky bit no diretório compartilhado e confirmará sua aplicação, garantindo que apenas os proprietários dos arquivos possam excluir seus próprios documentos dentro desse espaço comum.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudar você a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Ele recebeu uma taxa de avaliação positiva de 99% dos alunos.

Preparar o Ambiente e Acessar o Diretório

Nesta etapa, você preparará o ambiente para gerenciar permissões especiais de arquivos. Isso envolve a criação de um diretório dedicado que simula um espaço de trabalho compartilhado para uma equipe de pesquisa. Você criará um novo grupo de usuários, um diretório e, em seguida, atribuirá a propriedade e as permissões apropriadas a ele. Todas as operações serão realizadas no seu diretório de projeto, ~/project.

Primeiro, vamos criar um novo grupo chamado research. Este grupo representará os membros da equipe que têm acesso ao diretório compartilhado. Use o comando sudo groupadd para criá-lo. O sudo é utilizado porque a criação de grupos é uma tarefa administrativa.

sudo groupadd research

Em seguida, crie um novo diretório chamado RandD dentro do seu diretório ~/project. Este será o nosso diretório de trabalho principal para este laboratório.

mkdir ~/project/RandD

Agora, altere o grupo proprietário do diretório RandD recém-criado para o grupo research. O comando chgrp é utilizado para este propósito.

sudo chgrp research ~/project/RandD

Para garantir que apenas o proprietário (usuário labex) e os membros do grupo research possam acessar este diretório, configure suas permissões. Usaremos o comando chmod com o código numérico 770. Este código concede permissões de leitura, escrita e execução (rwx, que é 4+2+1=7) para o usuário e para o grupo, e nenhuma permissão (---, que é 0) para outros.

chmod 770 ~/project/RandD

Você pode verificar as permissões e a propriedade do diretório usando o comando ls -ld. A opção -l fornece um formato de listagem longa e a opção -d lista o próprio diretório, não seu conteúdo.

ls -ld ~/project/RandD

Você deverá ver uma saída semelhante a esta, confirmando as permissões (drwxrwx---), o proprietário (labex) e o grupo (research).

drwxrwx--- 2 labex research 4096 Dec 12 10:30 /home/labex/project/RandD

Por fim, mude sua localização atual para o diretório RandD. É aqui que você executará as tarefas nas próximas etapas.

cd ~/project/RandD

Você configurou com sucesso o ambiente de trabalho.

Restringir Permissões Padrão de Arquivos com umask 027

Nesta etapa, você aprenderá como controlar as permissões padrão para arquivos recém-criados usando o comando umask. Quando você cria um arquivo, o sistema atribui a ele um conjunto padrão de permissões. Frequentemente, esses padrões são permissivos demais, permitindo, por exemplo, que "Outros" usuários leiam seus arquivos. Em um ambiente seguro como o nosso diretório RandD, queremos restringir isso.

O comando umask (máscara de criação de arquivo do usuário) especifica as permissões que devem ser removidas das permissões base quando um novo arquivo ou diretório é criado.

  • Para arquivos, a permissão base é 666 (rw-rw-rw-).
  • Para diretórios, a permissão base é 777 (rwxrwxrwx).

Configuraremos o umask para 027. Este valor instrui o sistema a remover as seguintes permissões:

  • Usuário (proprietário): 0 - Nenhuma permissão removida.
  • Grupo: 2 - Permissão de escrita removida.
  • Outros: 7 (4+2+1) - Permissões de leitura, escrita e execução removidas.

Isso significa que qualquer novo arquivo criado terá permissões 666 - 027 = 640 (rw-r-----), e qualquer novo diretório terá permissões 777 - 027 = 750 (rwxr-x---).

Primeiro, altere as permissões padrão para sua sessão de terminal atual digitando umask 027 no prompt do shell. Certifique-se de que ainda está no diretório ~/project/RandD.

umask 027

Em seguida, verifique o novo valor do umask digitando o comando sozinho.

umask

O comando deve exibir o novo valor do umask. O zero à esquerda indica que nenhuma permissão especial (como o sticky bit, sobre o qual você aprenderá mais tarde) faz parte da máscara.

027

Você alterou com sucesso as permissões padrão de criação de arquivos para sua sessão atual. Na próxima etapa, você criará um arquivo para observar o efeito deste novo umask.

Criar um Arquivo e Verificar as Novas Permissões do umask

Nesta etapa, você colocará a nova configuração de umask em prática criando um arquivo. Isso demonstrará como as permissões padrão que você configurou na etapa anterior são aplicadas automaticamente, protegendo seu novo documento contra acesso não autorizado. Você deve continuar no diretório ~/project/RandD.

Vamos criar um novo arquivo vazio chamado schedule.odt usando o comando touch. O comando touch é uma maneira simples de criar arquivos vazios ou atualizar o carimbo de data/hora de arquivos existentes.

touch schedule.odt

Agora que o arquivo foi criado, você precisa verificar suas permissões. Use o comando ls -l para exibir as informações detalhadas do schedule.odt.

ls -l schedule.odt

Você verá uma saída semelhante à seguinte. A parte mais importante é a primeira coluna, que mostra as permissões do arquivo.

-rw-r----- 1 labex research 0 Dec 12 10:35 schedule.odt

Vamos analisar a string de permissões -rw-r-----:

  • O primeiro caractere - indica que se trata de um arquivo.
  • Os três caracteres seguintes rw- são as permissões para o usuário (proprietário), que são leitura e escrita. Isso corresponde ao valor numérico 6.
  • Os três caracteres seguintes r-- são as permissões para o grupo, que são apenas leitura. Isso corresponde ao valor numérico 4.
  • Os últimos três caracteres --- são as permissões para outros, o que significa nenhuma permissão. Isso corresponde ao valor numérico 0.

Essas permissões (640) são o resultado direto da aplicação do umask de 027 às permissões de arquivo padrão do sistema de 666. O umask removeu com sucesso as permissões de escrita para o grupo e todas as permissões para outros, exatamente como pretendíamos.

Configurar o Sticky Bit em um Diretório com chmod 1771

Nesta etapa, você resolverá um problema comum em diretórios compartilhados. Atualmente, qualquer membro do grupo research pode excluir qualquer arquivo dentro do diretório ~/project/RandD, mesmo arquivos criados por outros usuários. Isso ocorre porque a permissão de escrita em um diretório permite a criação e exclusão de arquivos. Para evitar exclusões acidentais ou maliciosas, você configurará uma permissão especial conhecida como "sticky bit".

O sticky bit, quando aplicado a um diretório, modifica esse comportamento. Ele garante que um arquivo dentro do diretório só possa ser excluído ou renomeado pelo proprietário do arquivo, pelo proprietário do diretório ou pelo usuário root. Isso é ideal para ambientes colaborativos como o nosso diretório RandD.

Você usará o comando chmod com um número octal de quatro dígitos para configurar o sticky bit. O comando será chmod 1771 RandD.

  • O primeiro dígito, 1, representa o sticky bit.
  • Os três dígitos seguintes, 771, definem as permissões padrão: rwx para o usuário, rwx para o grupo e --x para outros.

Primeiro, você precisa estar no diretório pai de RandD para modificar suas permissões. Como você está atualmente em ~/project/RandD, use o comando cd .. para subir um nível para ~/project.

cd ..

Agora, a partir do diretório ~/project, aplique o sticky bit ao diretório RandD.

chmod 1771 RandD

O sticky bit agora está configurado no diretório RandD. Na etapa final, você usará o comando ls -l para ver como essa permissão especial é exibida e verificar seu efeito.

Verificar a Permissão do Sticky Bit com ls -l

Nesta etapa final, você verificará se o sticky bit foi aplicado corretamente ao diretório RandD. O comando ls -l fornece um indicador visual para permissões especiais como o sticky bit. Você deve continuar no diretório ~/project.

No prompt do shell, digite o comando ls -ld RandD para visualizar as permissões do próprio diretório.

ls -ld RandD

Examine a saída cuidadosamente. Ela deve ser semelhante a esta:

drwxrwx--t 2 labex research 4096 Dec 12 10:45 RandD

A mudança principal está na string de permissões: drwxrwx--t.

  • O d indica que é um diretório.
  • rwx mostra que o usuário (labex) tem permissões totais.
  • O segundo rwx mostra que o grupo research tem permissões totais.
  • A parte final, --t, é onde o sticky bit é mostrado. O t substitui o que normalmente seria a permissão de execução (x) para "outros". Um t minúsculo indica que tanto o sticky bit quanto a permissão de execução para "outros" estão configurados. Isso confirma que seu comando chmod 1771 foi bem-sucedido.

Parabéns! Você configurou com sucesso um diretório compartilhado com permissões padrão seguras usando umask e protegeu seu conteúdo contra exclusão não autorizada configurando o sticky bit.

Resumo

Neste laboratório, você aprendeu a preparar um diretório compartilhado seguro para um grupo de usuários. Isso envolveu a criação de um novo grupo com groupadd, a criação de um diretório e o uso de chgrp e chmod para atribuir a propriedade de grupo correta e permissões restritivas (770). Você também praticou a manipulação das permissões padrão para arquivos e diretórios recém-criados, definindo um valor de umask específico (027), e verificou seu efeito criando um novo arquivo e inspecionando suas permissões.

Além disso, você explorou permissões especiais ao aplicar o sticky bit ao diretório compartilhado usando o comando chmod 1771. Você aprendeu que o sticky bit é essencial para ambientes colaborativos, pois garante que os usuários só possam excluir ou renomear arquivos que eles próprios possuem, evitando a remoção acidental ou maliciosa do trabalho de terceiros. Por fim, você verificou que o sticky bit foi aplicado corretamente usando ls -l e identificando o t na string de permissão do diretório.