Linux essencial para DevOps
Esta aula apresenta o Linux como sistema operacional dominante em servidores, cobrindo desde a navegação básica em arquivos até o gerenciamento de permissões e pacotes, com exemplos práticos essenciais para o profissional DevOps.
O Linux é o sistema operacional mais utilizado em servidores ao redor do mundo, sendo a base de grande parte da infraestrutura de nuvem, contêineres e serviços web. Para um profissional DevOps, dominar os fundamentos do Linux é indispensável, pois é nele que rodam as aplicações, ferramentas de automação e pipelines de CI/CD. Esta aula aborda os conceitos essenciais: por que o Linux é tão popular, como navegar pelo sistema de arquivos, gerenciar permissões e instalar pacotes. Ao final, você terá uma base sólida para operar em ambientes Linux com confiança.
Por que Linux domina servidores
O Linux domina o mercado de servidores por várias razões. Primeiramente, é um sistema operacional de código aberto, o que significa que qualquer pessoa pode inspecionar, modificar e distribuir o código. Isso proporciona transparência e segurança, além de permitir que empresas e comunidades contribuam com melhorias constantes. Diferente de sistemas proprietários, o Linux não exige licenças caras, reduzindo custos operacionais.
Além disso, o Linux é conhecido por sua estabilidade e desempenho. Servidores Linux podem ficar meses ou até anos sem reinicialização, mantendo alta disponibilidade. Sua arquitetura modular e suporte a múltiplos processadores e memória fazem dele ideal para cargas de trabalho pesadas. Ferramentas como SSH, bash e cron são nativas, facilitando a administração remota e automação de tarefas. O ecossistema de software livre também oferece milhares de aplicações prontas para uso em servidores, como servidores web (Apache, Nginx), bancos de dados (MySQL, PostgreSQL) e linguagens de programação (Python, Node.js).
Navegação e arquivos
A navegação no sistema de arquivos Linux é feita principalmente pelo terminal, usando comandos como cd, ls, pwd e mkdir. O sistema de arquivos é hierárquico, começando pela raiz (/). Diretórios importantes incluem /home (diretórios pessoais), /etc (configurações do sistema), /var (dados variáveis, como logs) e /tmp (arquivos temporários).
Para listar arquivos, usa-se ls -l para detalhes, ls -a para incluir arquivos ocultos. Para criar diretórios, mkdir nome. Para copiar arquivos, cp origem destino; para mover/renomear, mv origem destino; para remover, rm arquivo (cuidado: não há lixeira). O comando cat exibe o conteúdo de um arquivo, enquanto less permite navegar por páginas. Exemplo:
# Navegar para /home/usuario
cd /home/usuario
# Listar arquivos com detalhes
ls -l
# Criar um diretório chamado projetos
mkdir projetos
# Copiar um arquivo para projetos
cp relatorio.txt projetos/
# Mover o arquivo para outro local
mv projetos/relatorio.txt /tmp/
Permissões
No Linux, cada arquivo e diretório possui permissões que determinam quem pode ler, escrever ou executar. As permissões são divididas em três grupos: dono (owner), grupo (group) e outros (others). O comando ls -l mostra as permissões no formato -rwxr-xr--. O primeiro caractere indica o tipo (- arquivo, d diretório). Os próximos três caracteres são permissões do dono, depois do grupo e, por fim, de outros. r = leitura (4), w = escrita (2), x = execução (1).
Para alterar permissões, usa-se chmod. Pode ser usado com notação octal (ex.: chmod 755 script.sh) ou simbólica (ex.: chmod u+x script.sh). Para alterar o dono, chown usuario:grupo arquivo. Exemplo prático:
# Ver permissões atuais
ls -l script.sh
# Saída: -rw-r--r-- 1 user user 0 Jan 1 00:00 script.sh
# Tornar o script executável para o dono
chmod u+x script.sh
# Usar octal: 755 = dono (rwx), grupo (r-x), outros (r-x)
chmod 755 script.sh
# Alterar dono para root
sudo chown root:root script.sh
Pacotes (visão geral)
Gerenciadores de pacotes simplificam a instalação, atualização e remoção de software. As distribuições Linux usam diferentes gerenciadores: Debian/Ubuntu usam apt (e dpkg), Red Hat/CentOS usam yum ou dnf, e Arch usa pacman. Comandos comuns incluem apt update (atualizar lista de pacotes), apt install nome (instalar), apt remove nome (remover) e apt upgrade (atualizar todos os pacotes).
Pacotes geralmente vêm de repositórios oficiais, mas também é possível instalar arquivos .deb ou .rpm manualmente. Para desenvolvedores, ferramentas como pip (Python), npm (Node.js) e gem (Ruby) também são usadas. Exemplo com apt:
# Atualizar lista de pacotes
sudo apt update
# Instalar o servidor web Nginx
sudo apt install nginx
# Verificar versão instalada
nginx -v
# Remover o pacote
sudo apt remove nginx
Boas práticas
Sempre use sudo com cuidado, apenas quando necessário. Mantenha o sistema atualizado com apt upgrade regularmente. Evite usar rm -rf sem verificar o diretório. Documente comandos importantes e crie scripts para tarefas repetitivas. Conheça os logs do sistema em /var/log para depuração.
Referências
- GNU Bash Manual
- Linux Command
- Unix / Linux Tutorial
- Ubuntu File Permissions
- Debian Package Management
- Red Hat System Administration
- Linux Kernel Documentation
Exercícios
- Crie um diretório chamado
devopsdentro de/tmpe, dentro dele, crie um arquivo vazio chamadonotas.txt. Liste o conteúdo do diretório. - Altere as permissões do arquivo
notas.txtpara que o dono tenha permissão de leitura e escrita, o grupo apenas leitura e outros nenhuma permissão. Use notação octal e simbólica. - Instale o pacote
tree(se disponível) usando o gerenciador de pacotes da sua distribuição e use-o para exibir a árvore de diretórios de/tmp/devops. - Explique o que significa a permissão
drwxr-x---em um diretório. Quem pode fazer o quê? - Usando o comando
find, localize todos os arquivos com extensão.txtdentro do diretório/tmpe exiba seus nomes.
mkdir -p /tmp/devops
touch /tmp/devops/notas.txt
ls -l /tmp/devops
# Notação octal: dono=6 (rw), grupo=4 (r), outros=0
chmod 640 /tmp/devops/notas.txt
# Notação simbólica: u=rw, g=r, o=
chmod u=rw,g=r,o= /tmp/devops/notas.txt
# Para Debian/Ubuntu:
sudo apt update
sudo apt install tree
tree /tmp/devops
O d indica que é um diretório. O dono tem permissão de leitura (r), escrita (w) e execução (x) – pode listar, criar/remover arquivos e entrar no diretório. O grupo tem permissão de leitura e execução (r-x) – pode listar e entrar, mas não criar/remover arquivos. Outros não têm nenhuma permissão (---).
find /tmp -type f -name "*.txt" -print