DIA 04: O Guardião da Fortaleza

LinuxBeginner
Pratique Agora

Introdução

Bem-vindo ao Dia 4 na LabEx Corporation, Guardião da Fortaleza! Após seu brilhante trabalho de detetive ontem ao resolver os problemas críticos do Projeto Phoenix, o Diretor de Tecnologia (CTO) da empresa designou você pessoalmente para liderar a segurança de todo o projeto.

"Não podemos permitir outro incidente de segurança", explica o CTO durante o briefing matinal. "Sua investigação revelou que nossa configuração de segurança anterior era inadequada. Sarah Chen e a equipe de desenvolvimento precisam de um ambiente à prova de balas para concluir o Projeto Phoenix dentro do cronograma."

A crise recente destacou a necessidade de medidas de segurança robustas. Um novo prestador de serviços se juntará à equipe para ajudar a acelerar o desenvolvimento, e você deve garantir que os controles de acesso estejam perfeitamente configurados. Você precisará criar sistemas de arquivos seguros, atribuir propriedades precisas, definir permissões detalhadas e estabelecer espaços de trabalho colaborativos que protejam a propriedade intelectual da TechNova.

O sucesso do Projeto Phoenix — e o futuro da empresa — depende agora da fortaleza digital que você construirá hoje. Vamos proteger este sistema!

Criando um Arquivo Seguro para um Novo Projeto

Sua primeira tarefa é criar um arquivo que armazenará chaves sensíveis do projeto. Este arquivo deve ser estritamente confidencial e acessível apenas pelo seu proprietário.

Tarefas

  • Crie um novo arquivo vazio chamado project_keys.txt dentro do diretório ~/project/phoenix_project.
  • Defina as permissões para este arquivo de modo que apenas o proprietário tenha acesso de leitura e escrita, e ninguém mais (nem mesmo usuários do mesmo grupo) tenha qualquer tipo de acesso.

Requisitos

  • O arquivo deve se chamar project_keys.txt.
  • O arquivo deve estar localizado em ~/project/phoenix_project/project_keys.txt.
  • Use o comando chmod com notação numérica para definir as permissões.

Dicas

  • Você pode criar um arquivo vazio usando o comando touch.
  • Lembre-se dos valores numéricos para permissões: leitura (4), escrita (2) e execução (1).
  • A permissão final deve ser 600 (leitura+escrita para o proprietário, nada para o grupo e outros).

Exemplos

Após concluir esta tarefa, você deverá ver algo como:

$ ls -l ~/project/phoenix_project/
-rw------- 1 labex labex 0 Sep 3 16:03 project_keys.txt

As permissões do arquivo mostram -rw-------, indicando:

  • O proprietário tem permissões de leitura e escrita
  • O grupo não tem permissões
  • Outros não têm permissões
✨ Verificar Solução e Praticar

Atribuindo a Propriedade dos Recursos do Projeto

O Projeto Phoenix é liderado pela equipe de desenvolvimento de Sarah Chen, com o líder técnico dev_lead gerenciando o trabalho principal de desenvolvimento. Este usuário pertence ao grupo developers com o qual você trabalhou durante a semana. Você precisa transferir a propriedade de todos os arquivos e diretórios do projeto para garantir o controle de acesso adequado.

Tarefas

  • Altere o proprietário do diretório ~/project/phoenix_project e de todo o seu conteúdo para o usuário dev_lead.
  • Altere o grupo proprietário do diretório ~/project/phoenix_project e de todo o seu conteúdo para o grupo developers.

Requisitos

  • O usuário proprietário deve ser dev_lead.
  • O grupo proprietário deve ser developers.
  • A alteração de propriedade deve ser aplicada recursivamente a todos os arquivos e subdiretórios dentro de ~/project/phoenix_project.
  • Você deve usar o comando chown.

Dicas

  • O comando chown pode alterar tanto o usuário quanto o grupo ao mesmo tempo usando a sintaxe user:group.
  • Procure por uma opção no comando chown que permita operar em arquivos e diretórios recursivamente. O comando man chown é seu aliado.
  • Como os arquivos pertencem atualmente ao root, você precisará usar sudo para alterar a propriedade.

Exemplos

Após concluir esta tarefa, você deverá ver algo como:

$ ls -ld ~/project/phoenix_project/
drwxrwxr-x 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

$ ls -l ~/project/phoenix_project/
total 0
drwxrwxr-x 2 dev_lead developers 27 Sep 3 16:00 docs
-rw------- 1 dev_lead developers 0 Sep 3 16:03 project_keys.txt
drwxrwxr-x 2 dev_lead developers 6 Sep 3 16:00 src

Todos os arquivos e diretórios devem agora pertencer a:

  • Usuário: dev_lead
  • Grupo: developers
✨ Verificar Solução e Praticar

Protegendo o Diretório Principal do Projeto

Agora que a propriedade está correta, você precisa definir as permissões base para o diretório principal do projeto, ~/project/phoenix_project. A política é a seguinte: o proprietário deve ter controle total, o grupo deve ser capaz de listar arquivos e entrar no diretório, e pessoas de fora não devem ter acesso algum.

Tarefas

  • Defina as permissões para o diretório ~/project/phoenix_project.

Requisitos

  • O proprietário (dev_lead) deve ter permissões de leitura, escrita e execução.
  • O grupo (developers) deve ter permissões de leitura e execução.
  • Outros não devem ter permissões.
  • Use o comando chmod para aplicar essas permissões ao diretório ~/project/phoenix_project em si (não recursivamente).
  • Como o diretório pertence ao dev_lead, você pode precisar usar sudo para alterar as permissões.

Dicas

  • A permissão de "Execução" em um diretório permite que você use o comando cd para entrar nele.
  • Calcule o valor numérico da permissão para proprietário, grupo e outros.
  • Proprietário (rwx) = 4+2+1 = 7
  • Grupo (r-x) = 4+0+1 = 5
  • Outros (---) = 0+0+0 = 0

Exemplos

Após concluir esta tarefa, você deverá ver algo como:

$ ls -ld ~/project/phoenix_project/
drwxr-x--- 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

As permissões do diretório mostram drwxr-x---, indicando:

  • O proprietário (dev_lead) tem permissões de leitura, escrita e execução
  • O grupo (developers) tem permissões de leitura e execução
  • Outros não têm permissões

Isso significa que:

  • dev_lead pode acessar totalmente o diretório
  • Membros do grupo developers podem listar o conteúdo e entrar no diretório
  • Pessoas de fora não têm acesso ao diretório
✨ Verificar Solução e Praticar

Configurando Permissões Colaborativas para a Equipe de Desenvolvimento

Nota: Certifique-se de ter concluído o Passo 2 primeiro, que define a propriedade de todos os diretórios do projeto (incluindo src) para dev_lead:developers. Este passo baseia-se nessas configurações de propriedade.

A equipe de desenvolvimento precisa colaborar de forma eficaz dentro do diretório ~/project/phoenix_project/src. Para garantir uma colaboração fluida, qualquer novo arquivo ou diretório criado dentro de src deve pertencer automaticamente ao grupo developers, e não ao grupo primário do usuário que o criou.

Tarefas

  • Defina uma permissão especial no diretório ~/project/phoenix_project/src que force todos os novos arquivos e subdiretórios criados dentro dele a herdar a propriedade de grupo do próprio diretório src (que é developers).

Requisitos

  • A solução deve garantir que novos arquivos em ~/project/phoenix_project/src sejam automaticamente de propriedade do grupo developers.
  • Você deve usar o comando chmod para definir esta permissão especial.
  • Você pode precisar usar sudo para definir permissões em diretórios de propriedade de outros usuários.

Dicas

  • Esta permissão especial é chamada de "set group ID" ou bit setgid.
  • Você pode aplicar o bit setgid usando notação simbólica (g+s) ou numérica.
  • Na notação numérica, o bit setgid tem o valor 2. Ele é colocado antes dos três dígitos de permissão padrão (ex: 2770).

Exemplos

Após concluir esta tarefa, você deverá ver algo como:

$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/

O s na posição de execução do grupo indica que o bit setgid está ativado e o grupo tem permissão de execução. Agora, ao criar um novo arquivo:

$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw---- 1 dev_lead developers 0 Sep 3 16:05 new_file.txt

Observe que o novo arquivo pertence automaticamente ao grupo developers, mesmo que você esteja logado como um usuário diferente. Isso garante o trabalho colaborativo dentro da equipe de desenvolvimento, mantendo a propriedade de grupo correta.

As permissões mostram:

  • O proprietário (dev_lead) tem permissões de leitura e escrita
  • O grupo (developers) tem permissões de leitura e escrita
  • Outros não têm permissões
  • O s minúsculo na posição de execução do grupo indica que o bit setgid está ativado e o grupo tem permissão de execução
✨ Verificar Solução e Praticar

Resumo

Trabalho excepcional, Guardião da Fortaleza! Você construiu com sucesso uma base de segurança impenetrável para o Projeto Phoenix. O CTO e Sarah Chen estão impressionados com sua implementação abrangente de segurança. O diretório do projeto agora é uma fortaleza que protegerá a propriedade intelectual da TechNova, permitindo ao mesmo tempo uma colaboração perfeita.

Ao longo deste desafio, você dominou habilidades críticas de segurança no Linux:

  • Criação de Arquivos e Permissões Básicas: Você protegeu chaves sensíveis do projeto com controles de permissão precisos.
  • Gerenciamento de Propriedade: Você atribuiu com maestria a propriedade à equipe de desenvolvimento de Sarah e à liderança técnica.
  • Segurança de Diretórios: Você equilibrou acesso e segurança para a infraestrutura principal do projeto.
  • Permissões Avançadas: Você configurou permissões setgid para garantir espaços de trabalho colaborativos com herança automática de propriedade de grupo.
  • Espaços de Trabalho Colaborativos: Você configurou espaços de colaboração em equipe que mantêm a segurança enquanto permitem a produtividade.

Essas habilidades avançadas de segurança provaram que você está pronto para responsabilidades de administração de sistemas sênior. Amanhã, você enfrentará seu desafio final como o Guardião das Chaves, gerenciando o elemento humano da segurança do Projeto Phoenix ao controlar o acesso de usuários ao sistema!