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

Exercícios

  1. Crie um diretório chamado devops dentro de /tmp e, dentro dele, crie um arquivo vazio chamado notas.txt. Liste o conteúdo do diretório.
  2. ✓ Resposta:
    mkdir -p /tmp/devops
    touch /tmp/devops/notas.txt
    ls -l /tmp/devops
  3. Altere as permissões do arquivo notas.txt para 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.
  4. ✓ Resposta:
    # 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
  5. 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.
  6. ✓ Resposta:
    # Para Debian/Ubuntu:
    sudo apt update
    sudo apt install tree
    tree /tmp/devops
  7. Explique o que significa a permissão drwxr-x--- em um diretório. Quem pode fazer o quê?
  8. ✓ Resposta:

    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 (---).

  9. Usando o comando find, localize todos os arquivos com extensão .txt dentro do diretório /tmp e exiba seus nomes.
  10. ✓ Resposta:
    find /tmp -type f -name "*.txt" -print