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
chmodechown - Utilizar a notação simbólica do
chmod(u, g, o, a) - Verificar e testar as permissões
- Entender as diferenças entre
useraddeadduser
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/Teste | Usuário | Comando | Resultado Esperado |
|---|---|---|---|
Ler file1.txt | Albert | cat /home/shared_data/file1.txt | Sucesso |
Escrever em file1.txt | Albert | echo "Test" >> /home/shared_data/file1.txt | Sucesso |
Ler file2.txt | Albert | cat /home/shared_data/file2.txt | Sucesso |
Escrever em file2.txt | Albert | echo "Test" >> /home/shared_data/file2.txt | Falha (Permissão negada) |
Ler e escrever em file2.txt | Bernard | echo "Bernard" >> /home/shared_data/file2.txt | Sucesso |
Executar script1.sh em dossier1 | Bernard | bash /home/shared_data/dossier1/script1.sh | Sucesso |
Ler e escrever em dossier1 | Claude | echo "Claude" >> /home/shared_data/dossier1/test.txt | Sucesso |
Executar script1.sh em dossier1 | Claude | bash /home/shared_data/dossier1/script1.sh | Falha (Permissão negada) |
| Executar todas as ações em todos os arquivos/pastas | Danielle | echo "Danielle" >> /home/shared_data/file1.txt | Sucesso (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) comchmod - 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
| Comando | Ação |
|---|---|
chmod u+x arquivo | Adiciona permissão de execução para o usuário |
chmod g+x arquivo | Adiciona permissão de execução para o grupo |
chmod o+x arquivo | Adiciona permissão de execução para outros usuários |
chmod a+x arquivo | Adiciona permissão de execução para todos |
chmod a-x arquivo | Remove permissão de execução para todos |
Perguntas para reflexão
- Por que às vezes usamos
u+xao invés dechmod 744? - É possível adicionar uma permissão sem alterar as outras? Explique.
- Qual a diferença entre
chmod a+xechmod 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:
- Senha: Você será solicitado a digitar e confirmar a senha do usuário.
- Nome completo: Você pode fornecer um nome completo para o usuário (opcional).
- Número do quarto, Telefone comercial, Telefone pessoal, Outras informações: Estes campos são opcionais e podem ser deixados em branco pressionando
Enter. - 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.
-
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.
-
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.
-
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.
-
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.
-
Como os comandos
chmodechowninfluenciam 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.
-
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.
-
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.
-
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
addusereuseradd - 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