Pular para o conteúdo principal

Lab 3.5 - Gerenciamento de Permissões

Objetivos​

Ao final deste lab, você será capaz de:

  • Compreender a importância das permissões em um sistema Linux
  • Criar usuários e configurar arquivos compartilhados
  • Aplicar permissões adequadas com chmod e chown
  • Utilizar a notação simbólica do chmod (u, g, o, a)
  • Verificar e testar as permissões
  • Entender as diferenças entre useradd e adduser

Pré-requisitos​

  • Ubuntu 24.04 instalado e funcional
  • Acesso root ou sudo
  • Terminal aberto

Revisão sobre Gerenciamento de Permissões​

O gerenciamento de permissões é um aspecto essencial da administração de sistemas Linux. Ele permite controlar quem pode acessar, modificar ou executar arquivos e diretórios. Uma configuração incorreta de permissões pode causar falhas graves de segurança, comprometendo a confidencialidade, integridade e disponibilidade dos dados.

Nesta seção, vamos explorar as diferentes etapas necessárias para criar usuários, configurar arquivos e diretórios compartilhados e aplicar permissões adequadas para garantir um acesso controlado. Também veremos como verificar essas permissões para garantir que estejam corretamente aplicadas.

Os exercícios apresentados permitirão entender como os comandos chown, chmod e su podem ser usados para gerenciar acessos de forma eficiente, bem como os riscos potenciais associados a uma configuração inadequada.


Exercício 1: Configuração Inicial das Permissões​

Etapa 1: Conexão como Superusuário​

# No Ubuntu 24.04, utilize sudo ao invés de su
sudo su
# Ou utilize diretamente sudo para cada comando

Etapa 2: Criação dos Usuários​

# No Ubuntu 24.04, utilize adduser (mais amigável) ou useradd
sudo adduser albert
sudo adduser bernard
sudo adduser claude
sudo adduser danielle

# Se adduser não estiver disponível, utilize useradd com -m para criar o home
# sudo useradd -m albert
# sudo passwd albert # Definir a senha

Nota: No Ubuntu 24.04, adduser é preferido pois é interativo e configura automaticamente o diretório home e outros parâmetros.

Etapa 3: Criação da Pasta e dos Arquivos​

# Criar a pasta shared_data e os subdiretórios/arquivos necessários
sudo mkdir -p /home/shared_data
sudo mkdir -p /home/shared_data/dossier1

sudo touch /home/shared_data/file1.txt
sudo touch /home/shared_data/file2.txt
sudo touch /home/shared_data/dossier1/script1.sh
sudo touch /home/shared_data/dossier1/script2.sh

# Adicionar conteúdo aos scripts para testes
echo '#!/bin/bash
echo "Script 1 executado"' | sudo tee /home/shared_data/dossier1/script1.sh

echo '#!/bin/bash
echo "Script 2 executado"' | sudo tee /home/shared_data/dossier1/script2.sh

Etapa 4: Atribuição de Proprietários e Permissões​

# Configuração inicial de permissões e proprietários

# Albert - proprietário de file1.txt com permissões 644 (rw-r--r--)
sudo chown albert:albert /home/shared_data/file1.txt
sudo chmod 644 /home/shared_data/file1.txt

# Albert - proprietário de file2.txt com permissões 444 (r--r--r--) - somente leitura
sudo chown albert:albert /home/shared_data/file2.txt
sudo chmod 444 /home/shared_data/file2.txt

# Bernard - proprietário de file2.txt com permissões 664 (rw-rw-r--)
sudo chown bernard:bernard /home/shared_data/file2.txt
sudo chmod 664 /home/shared_data/file2.txt

# Bernard - proprietário de script1.sh com permissões 751 (rwxr-x--x)
sudo chown bernard:bernard /home/shared_data/dossier1/script1.sh
sudo chmod 751 /home/shared_data/dossier1/script1.sh

# Claude - proprietário recursivo de dossier1 com permissões 766 (rwxrw-rw-)
sudo chown -R claude:claude /home/shared_data/dossier1
sudo chmod 766 /home/shared_data/dossier1
sudo chmod 666 /home/shared_data/dossier1/script1.sh
sudo chmod 666 /home/shared_data/dossier1/script2.sh

# Danielle - proprietário recursivo de shared_data com permissões 777 (rwxrwxrwx) - TODOS OS DIREITOS
sudo chown -R danielle:danielle /home/shared_data
sudo chmod -R 777 /home/shared_data

Etapa 5: Verificação dos Diretórios Home dos Usuários​

# Verifique se os diretórios dos usuários estão corretamente configurados
ls -l /home

# Verifique as permissões da pasta shared_data
ls -lR /home/shared_data

Exercício 2: Testes de Permissões​

Tabela de Testes de Permissão​

Segue uma tabela que descreve as ações que cada usuário tentará realizar e os resultados esperados com base nas permissões definidas:

Ação/TesteUsuárioComandoResultado Esperado
Ler file1.txtAlbertcat /home/shared_data/file1.txtSucesso
Escrever em file1.txtAlbertecho "Test" >> /home/shared_data/file1.txtSucesso
Ler file2.txtAlbertcat /home/shared_data/file2.txtSucesso
Escrever em file2.txtAlbertecho "Test" >> /home/shared_data/file2.txtFalha (Permissão negada)
Ler e escrever em file2.txtBernardecho "Bernard" >> /home/shared_data/file2.txtSucesso
Executar script1.sh em dossier1Bernardbash /home/shared_data/dossier1/script1.shSucesso
Ler e escrever em dossier1Claudeecho "Claude" >> /home/shared_data/dossier1/test.txtSucesso
Executar script1.sh em dossier1Claudebash /home/shared_data/dossier1/script1.shFalha (Permissão negada)
Executar todas as ações em todos os arquivos/pastasDanielleecho "Danielle" >> /home/shared_data/file1.txtSucesso (acesso total)

Realização dos Testes​

# Execute os testes para verificar as permissões

# Teste 1: Albert lê file1.txt
sudo su albert -c 'cat /home/shared_data/file1.txt'

# Teste 2: Albert escreve em file1.txt
sudo su albert -c 'echo "Test Albert" >> /home/shared_data/file1.txt'

# Teste 3: Albert lê file2.txt
sudo su albert -c 'cat /home/shared_data/file2.txt'

# Teste 4: Albert tenta escrever em file2.txt (deve falhar)
sudo su albert -c 'echo "Test" >> /home/shared_data/file2.txt' || echo "Falha esperada: Permissão negada"

# Teste 5: Bernard escreve em file2.txt
sudo su bernard -c 'echo "Bernard" >> /home/shared_data/file2.txt'

# Teste 6: Bernard executa script1.sh
sudo su bernard -c 'bash /home/shared_data/dossier1/script1.sh'

# Teste 7: Claude escreve em dossier1
sudo su claude -c 'echo "Claude" >> /home/shared_data/dossier1/test.txt'

# Teste 8: Claude tenta executar script1.sh (deve falhar)
sudo su claude -c 'bash /home/shared_data/dossier1/script1.sh' || echo "Falha esperada: Permissão negada"

# Teste 9: Danielle escreve em file1.txt (acesso total)
sudo su danielle -c 'echo "Danielle" >> /home/shared_data/file1.txt'

# Verificar os resultados
cat /home/shared_data/file1.txt
cat /home/shared_data/file2.txt
ls -l /home/shared_data/dossier1/

Exercício 3: Notação Simbólica com chmod​

Neste exercício, você vai explorar as permissões de execução e como concedê-las a usuários, grupos e outros utilizando a notação simbólica do chmod.

Objetivos pedagógicos​

  • Compreender a notação simbólica (u, g, o, a) com chmod
  • Adicionar dinamicamente a permissão de execução sem alterar outros direitos
  • Verificar os efeitos com ls -l

Etapa 1: Criação de um arquivo de script simples​

# Criar um script de teste
touch mon_script.sh
echo -e "#!/bin/bash\necho 'Script lançado!'" > mon_script.sh

# Verificar o conteúdo
cat mon_script.sh

Etapa 2: Exibição das permissões atuais​

ls -l mon_script.sh

Verifique que o arquivo não é executável (sem x nas permissões).

Etapa 3: Adição da permissão de execução para o usuário (proprietário)​

chmod u+x mon_script.sh
ls -l mon_script.sh

Em seguida, tente executar o script com:

./mon_script.sh

Etapa 4: Adição da permissão de execução para o grupo​

chmod g+x mon_script.sh
ls -l mon_script.sh

Etapa 5: Adição da permissão de execução para todos os usuários (a = all)​

chmod a+x mon_script.sh
ls -l mon_script.sh

Etapa 6: Remoção de todas as permissões de execução​

chmod a-x mon_script.sh
ls -l mon_script.sh

Resumo dos comandos utilizados​

ComandoAção
chmod u+x arquivoAdiciona permissão de execução para o usuário
chmod g+x arquivoAdiciona permissão de execução para o grupo
chmod o+x arquivoAdiciona permissão de execução para outros usuários
chmod a+x arquivoAdiciona permissão de execução para todos
chmod a-x arquivoRemove permissão de execução para todos

Perguntas para reflexão​

  1. Por que às vezes usamos u+x ao invés de chmod 744?
  2. É possível adicionar uma permissão sem alterar as outras? Explique.
  3. Qual a diferença entre chmod a+x e chmod 755?

Anexo 1: useradd vs adduser​

Criação de Usuários com useradd e adduser​

O gerenciamento de usuários é uma tarefa fundamental na administração de sistemas Linux. Dois comandos principais são comumente utilizados para criar usuários: useradd e adduser. Embora tenham nomes semelhantes, eles funcionam de maneiras diferentes.

useradd: O Comando Básico​

O comando useradd é um utilitário padrão disponível em todas as distribuições Linux. Ele permite criar um novo usuário sem interação humana, o que o torna ideal para scripts de automação. No entanto, o useradd não solicita senha nem informações adicionais por padrão.

# Criar um usuário sem senha
sudo useradd -m albert

Após criar o usuário, você deve definir uma senha manualmente com o comando passwd:

# Adicionar uma senha para o usuário
sudo passwd albert

adduser: A Versão Amigável​

Em algumas distribuições Linux, como Debian e Ubuntu, adduser é um comando mais amigável, que na verdade é um script Perl que envolve o useradd. Este comando guia o administrador por um processo interativo onde é possível configurar vários aspectos da conta do usuário, incluindo senha, nome completo e outras informações opcionais.

# Criar um usuário com processo interativo
sudo adduser albert

O sistema fará uma série de perguntas:

  1. Senha: Você será solicitado a digitar e confirmar a senha do usuário.
  2. Nome completo: Você pode fornecer um nome completo para o usuário (opcional).
  3. Número do quarto, Telefone comercial, Telefone pessoal, Outras informações: Estes campos são opcionais e podem ser deixados em branco pressionando Enter.
  4. Confirmação: Você deverá confirmar as informações antes que o usuário seja criado.

Quando Usar useradd ou adduser?​

  • useradd: Use este comando quando precisar criar usuários via script ou quando não quiser ser solicitado a inserir informações adicionais.
  • adduser: Use este comando quando preferir um processo interativo e quiser configurar vários detalhes da conta do usuário em uma única etapa.

Anexo 2: Gerenciamento de Senhas​

Adicionar uma senha após a criação com useradd​

Quando você utiliza o comando useradd, por padrão ele não solicita a criação de uma senha para o usuário. Para adicionar uma senha imediatamente após criar um usuário, você pode usar o comando passwd.

# Criar os usuários
sudo useradd -m pierre
sudo useradd -m marie
sudo useradd -m luc
sudo useradd -m sophie

# Adicionar uma senha para cada usuário
sudo passwd pierre
sudo passwd marie
sudo passwd luc
sudo passwd sophie

Com cada comando passwd, o sistema solicitará que você digite uma senha para o usuário especificado. Certifique-se de que a senha esteja de acordo com as regras de segurança do sistema (por exemplo, comprimento mínimo, complexidade, etc.).

Alterar a senha de um usuário​

Para alterar a senha do usuário luc, utilize o seguinte comando:

sudo passwd luc

Após executar este comando, o sistema solicitará que você digite uma nova senha para o usuário luc e depois confirme digitando novamente.


Perguntas para Reflexão​

Objetivo​

Compreender melhor o gerenciamento de permissões no Linux e o impacto dessas configurações na segurança geral do sistema.

  1. Explique a importância das permissões em um sistema Linux. Como permissões incorretas podem afetar a segurança de um sistema?

    • Esta questão visa levá-lo a refletir sobre as implicações de segurança e o gerenciamento de acessos em um ambiente Linux.
  2. Quais são as diferenças entre as permissões de leitura, escrita e execução? Por que é crucial configurar corretamente essas permissões em um ambiente multiusuário?

    • Esta questão foi criada para ajudá-lo a entender e explicar a importância de cada tipo de permissão na segurança e funcionalidade de um sistema.
  3. Qual é o papel do arquivo sudoers no gerenciamento de permissões do sistema? Como uma configuração incorreta deste arquivo pode comprometer um sistema Linux?

    • Esta questão incentiva você a explorar o papel crítico do arquivo sudoers no gerenciamento de privilégios administrativos e os riscos associados ao seu mau uso.
  4. Por que é importante limitar as permissões de execução em certos arquivos ou scripts? Dê um exemplo onde essa limitação poderia prevenir uma falha de segurança.

    • Esta questão permite discutir a importância da restrição de permissões de execução e refletir sobre cenários onde tais restrições são essenciais para a segurança.
  5. Como os comandos chmod e chown influenciam a segurança de arquivos e pastas em um servidor Linux? Quais são as boas práticas para sua utilização?

    • Esta questão pede que você descreva como esses comandos afetam a segurança de arquivos e pastas e reflita sobre as melhores práticas para seu uso eficiente e seguro.
  6. Analise um cenário em que um usuário obteve acidentalmente permissões excessivas em arquivos críticos. Quais poderiam ser as consequências e como esse problema poderia ser resolvido?

    • Esta questão visa fazê-lo refletir sobre os impactos potenciais da atribuição excessiva de permissões e as possíveis medidas corretivas.
  7. O que é o "sticky bit" e como ele pode ser usado para melhorar a segurança de diretórios compartilhados?

    • Esta questão incentiva você a explorar o conceito de sticky bit, sua utilidade e aplicação na proteção de ambientes onde vários usuários acessam os mesmos diretórios.
  8. Discuta a importância da separação dos direitos de usuário e administrador em um sistema Linux. Como isso influencia a segurança geral do sistema?

    • Esta questão permite refletir sobre a importância da separação de privilégios na prevenção de abusos de direitos e erros acidentais.

Resumo​

Neste lab, você aprendeu a:

  • Criar usuários com adduser e useradd
  • Configurar arquivos e diretórios compartilhados
  • Aplicar permissões com chmod (notação numérica e simbólica)
  • Alterar proprietários com chown
  • Testar e verificar permissões
  • Compreender a importância da segurança das permissões

Próximos Passos​

  • Lab 3.2: Gerenciamento de Permissões (conceitos básicos)
  • Módulo 5: Usuários e Permissões (aprofundamento)
  • Módulo 9: Segurança de Sistema (segurança avançada)

Lab criado em: Dezembro de 2024