Linux essencial para DevOps
Esta aula aborda os fundamentos do Linux essenciais para DevOps, explicando por que ele domina servidores, comandos de navegação e manipulação de arquivos, sistema de permissões e gerenciamento de pacotes. O conteúdo é prático, com exemplos de código e exercícios para fixação.
O Linux é o sistema operacional mais utilizado em servidores e ambientes de nuvem, sendo a espinha dorsal da infraestrutura de TI moderna. Para um profissional DevOps, dominar os conceitos e comandos básicos do Linux é indispensável para gerenciar servidores, automatizar tarefas e garantir a segurança e eficiência dos sistemas. Nesta aula, exploraremos os motivos da hegemonia do Linux, os comandos essenciais de navegação e arquivos, o sistema de permissões e uma visão geral do gerenciamento de pacotes.
Por que Linux domina servidores
O Linux é o sistema operacional preferido para servidores por várias razões. Primeiramente, ele é gratuito e de código aberto, o que reduz custos e permite personalização profunda. Além disso, sua estabilidade e segurança são lendárias: o Linux pode ficar meses ou anos sem reinicialização e sofre menos com malware devido ao seu modelo de permissões e à comunidade ativa que corrige vulnerabilidades rapidamente.
Outro fator crucial é a eficiência. O Linux consome menos recursos que outros sistemas, permitindo que servidores rodem com hardware modesto. Ele também oferece suporte nativo a virtualização, contêineres (Docker, Kubernetes) e uma vasta gama de ferramentas de automação (Ansible, Terraform). A flexibilidade do Linux, combinada com sua adoção maciça em nuvens públicas (AWS, GCP, Azure), torna o conhecimento desse sistema um requisito fundamental para qualquer profissional DevOps.
Navegação e arquivos
A navegação no terminal Linux é feita por meio de comandos simples. O comando pwd mostra o diretório atual, ls lista o conteúdo de um diretório, e cd muda de diretório. Exemplos:
pwd
/home/user
ls
Documentos Downloads projetos
cd Documentos/
pwd
/home/user/Documentos
Para manipular arquivos, usamos cp (copiar), mv (mover/renomear), rm (remover) e mkdir (criar diretório). É importante lembrar que o Linux diferencia maiúsculas de minúsculas e que arquivos ocultos começam com ponto (.). O comando cat exibe o conteúdo de um arquivo, enquanto head e tail mostram o início e o fim.
mkdir novo_dir
cp arquivo.txt novo_dir/
mv arquivo.txt novo_dir/renomeado.txt
rm -rf novo_dir/ # Remove recursivamente e com força
cat /etc/passwd | head -5
Outros comandos úteis: find para buscar arquivos, grep para filtrar texto, wc para contar linhas/palavras e sort para ordenar. Dominar esses comandos é essencial para navegar e gerenciar arquivos com eficiência.
Permissões
No Linux, cada arquivo e diretório possui permissões que definem quem pode ler, escrever ou executar. As permissões são divididas em três grupos: dono (user), grupo (group) e outros (others). O comando ls -l exibe as permissões no formato -rwxr-xr--, onde o primeiro caractere indica o tipo (- para arquivo, d para diretório), e os próximos três conjuntos representam as permissões do dono, grupo e outros, respectivamente.
ls -l script.sh
-rwxr-xr-- 1 user group 1024 Jan 1 12:00 script.sh
O dono tem permissão de leitura (r), escrita (w) e execução (x); o grupo tem leitura e execução; outros têm apenas leitura. Para alterar permissões, usamos chmod com números octais (ex.: 755 para rwxr-xr-x) ou símbolos (u+x adiciona execução ao dono). O comando chown altera o dono e o grupo.
chmod 755 script.sh
chmod u+x script.sh
chown user:group script.sh
Entender permissões é vital para a segurança: arquivos de configuração sensíveis devem ter permissões restritas (ex.: 600 para chaves SSH), e scripts executáveis devem ter permissão de execução apenas para quem precisa.
Pacotes (visão geral)
Gerenciadores de pacotes simplificam a instalação, atualização e remoção de software. No Ubuntu/Debian, usamos apt; no CentOS/RHEL, yum ou dnf. Exemplos com apt:
sudo apt update # Atualiza a lista de pacotes
sudo apt upgrade # Atualiza todos os pacotes instalados
sudo apt install nginx # Instala o nginx
sudo apt remove nginx # Remove o nginx
No CentOS, os comandos equivalentes são sudo yum update, sudo yum install nginx e sudo yum remove nginx. O gerenciamento de pacotes também inclui repositórios: arquivos em /etc/apt/sources.list (Debian) ou /etc/yum.repos.d/ (RHEL) definem de onde os pacotes são baixados.
Além dos gerenciadores nativos, ferramentas como Snap e Flatpak oferecem pacotes isolados. Para DevOps, é comum usar Docker para evitar conflitos de dependências, mas entender o gerenciamento de pacotes do sistema é fundamental para provisionar servidores.
Boas práticas e observações finais
Sempre use sudo com cautela e apenas quando necessário. Mantenha o sistema atualizado com atualizações de segurança. Prefira usar caminhos absolutos em scripts para evitar ambiguidades. E lembre-se: o terminal é seu aliado; pratique regularmente para ganhar fluência.
Referências
- GNU Bash Manual
- Linux man pages online
- TutorialsPoint - Unix / Linux
- Ubuntu Server Documentation
- Red Hat Enterprise Linux Documentation
- nixCraft - Linux FAQ
Exercícios
-
Crie um diretório chamado
projetoe dentro dele um arquivoREADME.mdcom o texto "Meu primeiro projeto". Em seguida, liste o conteúdo do diretório.✓ Resposta:mkdir projeto cd projeto echo "Meu primeiro projeto" > README.md ls -l -
Altere as permissões do arquivo
script.shpara que o dono possa ler, escrever e executar; o grupo possa ler e executar; e outros não tenham nenhuma permissão.✓ Resposta:chmod 750 script.sh # ou simbolicamente: chmod u=rwx,g=rx,o= script.sh -
Use o gerenciador de pacotes para instalar o servidor web Apache (httpd) em uma distribuição baseada em Red Hat.
✓ Resposta:
sudo yum install httpd # ou sudo dnf install httpd -
Encontre todos os arquivos com extensão .log no diretório
/var/logque contenham a palavra "error" (ignore maiúsculas/minúsculas).✓ Resposta:grep -ril "error" /var/log/*.log -
Explique a diferença entre permissões 755 e 700 para um diretório.
✓ Resposta:
755 (rwxr-xr-x): dono tem todas as permissões; grupo e outros têm leitura e execução (podem listar e acessar o diretório). 700 (rwx------): apenas o dono tem acesso total; grupo e outros não têm nenhuma permissão. 700 é mais seguro para diretórios confidenciais.