Portal IDEA

Linux Intermediário

 LINUX INTERMEDIÁRIO

 

Automação, Segurança e Rede

Introdução a Shell Scripts 

 

Os shell scripts são ferramentas essenciais para automatização de tarefas no ambiente Linux. Utilizando a shell do sistema (em especial o Bash – Bourne Again Shell), os scripts permitem executar comandos em sequência, processar informações, tomar decisões lógicas e interagir com o usuário. Essa capacidade de automação é fundamental para administradores de sistemas, desenvolvedores e qualquer usuário que deseje aumentar sua produtividade no terminal.

1. Sintaxe Básica de um Shell Script

Um shell script é um arquivo de texto que contém comandos do terminal organizados em sequência lógica. Para que o sistema reconheça o arquivo como script executável, a primeira linha deve conter o shebang:

#!/bin/bash

Essa linha informa ao sistema que o script será interpretado pelo Bash. Após isso, os comandos podem ser escritos como seriam no terminal.

Exemplo básico:

#!/bin/bash

echo "Olá, mundo!"

O script deve ter permissão de execução:

chmod +x script.sh

E pode ser executado com:

./script.sh

2. Variáveis no Shell

Variáveis armazenam valores temporários que podem ser usados ao longo do script. Atribuições não têm espaços entre o nome da variável, o sinal de igual e o valor.

Exemplo:

nome="Maria"

echo "Bem-vinda, $nome"

Para capturar o resultado de um comando:

hoje=$(date)

Variáveis de ambiente como $HOME, $USER, $PATH são amplamente utilizadas em scripts para referenciar diretórios e configurações do sistema.

3. Estruturas Condicionais

As estruturas condicionais permitem decisões baseadas em testes. O Bash oferece o if e o case.

a) if

if [ condição ]; then

    comandos

elif [ outra condição ]; then

    outros comandos

else

    comandos alternativos

fi

Exemplo:

if [ $USER == "root" ]; then

    echo "Você é o administrador"

else

    echo "Você não tem privilégios de root"

fi

b) case

Útil quando há múltiplas opções possíveis.

case $variavel in

    valor1)

        comando1 ;;

    valor2)

        comando2 ;;

    *)

        comando_default ;;

esac

Exemplo:

echo "Escolha uma opção: [a/b]"

read opcao

case $opcao in

    a) echo "Você escolheu A" ;;

    b) echo "Você escolheu B" ;;

    *) echo "Opção inválida" ;;

esac

4. Estruturas de Repetição

Laços permitem executar comandos repetidamente. Os principais são for e while.

a) for

Usado para iterar sobre listas ou intervalos.

for i in 1 2

i in 1 2 3 4 5; do

    echo "Número $i"

done

Ou:

for i in $(seq 1 5); do

    echo "Contador: $i"

done

b) while

Executa enquanto uma condição for verdadeira.

contador=1

while [ $contador -le 5 ]; do

    echo "Linha $contador"

    contador=$((contador + 1))

done

O laço pode ser interrompido com break, e pular iterações com continue.

5. Entrada do Usuário com read

O comando read permite capturar dados diretamente do usuário durante a execução do script.

echo "Digite seu nome:"

read nome

echo "Olá, $nome"

Também é possível ler múltiplas variáveis:

read nome idade

E ocultar a digitação (ex: senhas):

read -s senha

6. Criação e Execução de Scripts Simples

Exemplo prático – Verificador de Usuário Root:

#!/bin/bash

if [ "$USER" != "root" ]; then

    echo "Este script deve ser executado como root"

    exit 1

fi

echo "Usuário root confirmado. Continuando..."

Exemplo – Calculadora simples:

#!/bin/bash

echo "Digite o primeiro número:"

read n1

echo "Digite o segundo número:"

read n2

echo "Soma: $((n1 + n2))"

echo "Subtração: $((n1 - n2))"

echo "Multiplicação: $((n1 * n2))"

echo "Divisão: $((n1 / n2))"

Esses exemplos mostram como shell scripts podem facilitar tarefas do dia a dia, como automatizar backups, configurar permissões, processar logs e mais.

Boas Práticas

  • Use #!/bin/bash para garantir compatibilidade com o Bash.
  • Comente trechos importantes usando # para facilitar manutenção.
  • Faça validações de entrada sempre que usar read.
  • Use set -e no início do script para interromper em caso de erro.
  • Utilize nomes de variáveis legíveis e coerentes.
  • Teste scripts em ambiente seguro antes de executá-los em produção.

Considerações Finais

A introdução ao shell scripting oferece ao usuário de Linux um recurso valioso para simplificar, repetir e automatizar tarefas administrativas e operacionais. Compreender a sintaxe, o uso de variáveis, estruturas condicionais, laços e entrada do usuário é suficiente para desenvolver scripts úteis e robustos. À medida que o domínio sobre scripting cresce, o Bash se torna uma ferramenta poderosa para controle e personalização do sistema.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • COOPER, Mendel. Advanced Bash-Scripting Guide. The Linux Documentation Project. Disponível em: https://tldp.org/LDP/abs/html/
  • GNU Bash Manual.
  • Bash Manual. Disponível em: https://www.gnu.org/software/bash/manual/
  • The Linux Documentation Project (TLDP). Disponível em: http://www.tldp.org/


Agendadores e Tarefas Automatizadas no Linux

 

Automatizar tarefas é uma das atividades mais poderosas e produtivas em sistemas Linux. Através de agendadores como o cron e o at, é possível programar a execução de comandos e scripts de forma recorrente ou única, otimizando rotinas administrativas, backups, monitoramento de sistemas e demais processos repetitivos. Este texto aborda os principais mecanismos de agendamento disponíveis no Linux: o comando crontab e seus arquivos associados, o agendador de execuções únicas at, bem como a verificação dos logs de execução dessas tarefas.

1. O Agendador cron e o Comando crontab

O cron é um daemon que executa tarefas automaticamente com base em uma agenda predefinida. Ele verifica constantemente os arquivos de agendamento e dispara os comandos especificados nas datas e horários configurados.

O comando crontab (abreviação de "cron table") permite aos usuários criar, visualizar e editar suas próprias listas de tarefas agendadas. Cada usuário no sistema pode manter seu próprio arquivo crontab.

Sintaxe básica:

A estrutura de uma linha do crontab é composta por cinco campos de tempo seguidos do comando a ser executado:

minuto hora dia-do-mês mês dia-da-semana comando

Significado dos campos:

  • minuto (0–59)
  • hora (0–23)
  • dia do mês (1–31)
  • mês (1–12)
  • dia da semana (0–7) (0 e 7 representam o domingo)

Exemplos:

  • Executar às 2h todos os dias:

0 2 * * * /home/usuario/backup.sh

Executar toda segunda-feira às 8h30:

30 8 * * 1 /home/usuario/script.sh

Gerenciamento:

  • Listar agendamentos:

crontab -l

·        Editar o crontab do usuário:

crontab -e

·        Remover o crontab:

crontab -r

Ao editar com crontab -e, o arquivo específico de agendamento do usuário é alterado, geralmente armazenado em /var/spool/cron/crontabs.

2. Arquivos de Cron do Sistema

Além do crontab de usuário, o sistema possui arquivos globais e diretórios especiais para organização das tarefas.

a) /etc/crontab

Este arquivo permite especificar tarefas com um campo adicional: o usuário responsável por executar o comando. A sintaxe é:

min hora dia-mês mês dia-semana usuário comando

Exemplo:

0 5 * * * root /usr/bin/apt update

b) Diretórios especiais:

  • /etc/cron.hourly/
  • /etc/cron.daily/
  • /etc/cron.weekly/
  • /etc/cron.monthly/

Scripts colocados nesses diretórios são

executados automaticamente com base na periodicidade indicada. O agendamento desses diretórios é definido no /etc/crontab ou em arquivos relacionados do sistema.

c) /etc/cron.d/

Permite criar arquivos de configuração separados, úteis para aplicações que precisam registrar seus próprios agendamentos de forma modular.

3. Comando at: Execução Única Agendada

Diferentemente do cron, o comando at executa comandos uma única vez, em data e hora determinadas. É útil para tarefas pontuais que não precisam se repetir.

a) Verificar se o serviço está ativo:

sudo systemctl status atd

b) Agendar um comando:

at 15:00

O terminal aguardará a inserção do comando desejado. Após inserir o comando, finalize com Ctrl+D.

Exemplo:

at now + 10 minutes

c) Visualizar tarefas pendentes:

atq

d) Cancelar uma tarefa:

atrm <job-id>

O at utiliza a fila do serviço atd, cujos arquivos ficam normalmente em /var/spool/at.

4. Logs de Execução de Tarefas

Monitorar a execução das tarefas agendadas é essencial para garantir que tudo está funcionando corretamente.

a) Logs do cron

Em muitas distribuições, os logs são registrados em:

/var/log/syslog      # Ubuntu e derivados

/var/log/cron        # CentOS, RHEL

É possível filtrar os logs com grep:

grep CRON /var/log/syslog

Ou, para ver a última execução:

journalctl -u cron.service

b) Logs do at

O at registra a execução de tarefas no log do sistema. Use:

journalctl -u atd.service

Boas Práticas

  • Teste comandos manualmente antes de agendá-los.
  • Redirecione saídas para arquivos de log, por exemplo:

/caminho/script.sh >> /var/log/script.log 2>&1

  • Use absolute paths em comandos no crontab, pois o ambiente pode ser limitado.
  • Evite duplicações revisando regularmente o conteúdo com crontab -l ou /etc/cron*.

Considerações Finais

O domínio de agendadores como cron e at representa um importante passo para a automação e gestão eficaz de sistemas Linux. Essas ferramentas permitem configurar desde simples execuções pontuais até tarefas complexas e regulares, sem a necessidade de supervisão humana. Por meio dos arquivos de configuração, comandos intuitivos e registros detalhados em log, o Linux fornece uma base sólida e confiável para o controle temporal de atividades.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • COOPER, Mendel. Advanced Bash-Scripting
  • Guide. The Linux Documentation Project.
  • Ubuntu Documentation. CronHowto. Disponível em: https://help.ubuntu.com/community/CronHowto
  • Red Hat. Scheduling Tasks Using Cron and At. Disponível em: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/


Noções de Redes e Segurança no Linux

 

A administração de redes e a aplicação de práticas seguras são pilares fundamentais da gestão de sistemas Linux. Este ambiente, amplamente utilizado em servidores e infraestruturas críticas, demanda conhecimento técnico para configuração e manutenção de conexões de rede, além de mecanismos de controle de acesso, firewall e gerenciamento de usuários. Este texto explora os principais comandos de rede, arquivos de configuração essenciais, práticas de segurança em permissões e atualizações, além do uso do firewall ufw e a gestão segura de usuários e grupos.

1. Comandos de Rede no Linux

a) ip

O comando ip substitui o antigo ifconfig e permite configurar e exibir interfaces de rede.

Exemplos:

  • Ver interfaces ativas:

ip a

Adicionar IP estático temporariamente:

sudo ip addr add 192.168.1.100/24 dev eth0

Ativar interface:

sudo ip link set eth0 up

b) ping

Utilizado para verificar a conectividade entre hosts.

ping google.com

O ping envia pacotes ICMP e exibe estatísticas de latência e perda de pacotes.

c) netstat (obsoleto) e ss

netstat era amplamente utilizado para visualizar conexões de rede, portas e estatísticas, mas foi substituído pelo ss (socket statistics), que é mais rápido e eficiente.

Exemplos:

  • Ver conexões ativas:

ss -tuln

  • Onde:
    • -t: TCP
    • -u: UDP
    • -l: escutando (listening)
    • -n: não resolve nomes

d) nmap

Ferramenta de varredura de rede usada para identificar hosts ativos, serviços, portas abertas e possíveis vulnerabilidades.

Exemplo:

nmap -sS 192.168.1.0/24

O uso do nmap exige cautela, pois pode ser interpretado como atividade suspeita em redes monitoradas.

2. Arquivo /etc/hosts e Configuração de IP Estático

a) /etc/hosts

Esse arquivo local permite mapear nomes de host para endereços IP, independentemente do DNS.

Exemplo de entrada:

127.0.0.1   localhost

192.168.1.10 servidor.local

É útil em ambientes sem DNS ou para resolver nomes personalizados.

b) IP Estático

Em distribuições modernas, a configuração de IP fixo pode ser feita de várias formas. Em sistemas com Netplan (Ubuntu 18.04+), edita-se:

sudo nano /etc/netplan/01-netcfg.yaml

Exemplo de configuração:

network:

  version: 2

  ethernets:

    eth0:

      dhcp4: no

      addresses: [192.168.1.100/24]

      gateway4: 192.168.1.1

      nameservers:

        addresses: [8.8.8.8, 1.1.1.1]

Aplicar:

sudo netplan apply

Em distribuições com NetworkManager, o IP pode ser configurado via nmtui, nmcli ou arquivos do /etc/sysconfig/network-scripts.

3. Permissões Seguras, Atualizações e UFW

a) Permissões Seguras

Manter permissões corretas impede acessos indevidos a arquivos críticos. Boas práticas incluem:

  • Uso restrito de chmod 777.
  • Propriedade correta com chown.
  • Verificação periódica com:

find / -perm -o+w

b) Atualizações

Atualizações regulares são essenciais para corrigir vulnerabilidades:

  • Debian/Ubuntu:

sudo apt update && sudo apt upgrade

·        CentOS/RHEL:

sudo dnf update

Scripts de atualização automática podem ser configurados com unattended-upgrades (Debian) ou dnf-automatic (Red Hat).

c) UFW – Uncomplicated Firewall

O ufw é um firewall simplificado baseado no iptables, usado para controlar conexões de entrada e saída.

  • Ativar:

sudo ufw enable

·        Permitir porta:

sudo ufw allow 22/tcp

·        Negar:

sudo ufw deny 80

·        Ver status:

sudo ufw status

UFW facilita a configuração de regras e é ideal para ambientes pequenos ou servidores pessoais.

4. Usuários e Grupos: Práticas Seguras

O gerenciamento adequado de contas de usuários e grupos é fundamental para segurança.

a) Criação de usuários com privilégios mínimos:

sudo adduser nome

·        Evite conceder permissões de root desnecessariamente. Para adicionar um usuário ao grupo sudo:

sudo usermod -aG sudo nome

b) Gerenciamento de grupos:

  • Criar grupo:

sudo groupadd devs

·        Adicionar usuário:

sudo usermod -aG devs nome

c) Restrições de login:

  • Bloquear conta:

sudo usermod -L nome

·        Expirar senha:

d) Remoção segura:

sudo deluser nome

sudo delgroup grupo

A política de menor privilégio deve ser aplicada sempre que possível: os usuários só devem ter acesso ao necessário para executar suas funções.

Considerações Finais

A compreensão das ferramentas de rede e dos mecanismos de segurança no Linux é essencial para garantir a operação eficiente e protegida do sistema. Comandos como ip, ss e nmap oferecem controle e visibilidade sobre o tráfego de rede, enquanto a configuração cuidadosa de arquivos como /etc/hosts e o uso de firewalls como ufw ajudam a evitar acessos não autorizados.

Somado a isso, práticas seguras de gerenciamento de usuários e

atualizações constantes consolidam a postura de segurança indispensável em qualquer ambiente Linux, seja ele corporativo ou pessoal.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • Ubuntu Documentation. Basic Networking. Disponível em: https://help.ubuntu.com/community/NetworkConfiguration
  • NMAP Project. Nmap Reference Guide. Disponível em: https://nmap.org/book/man.html
  • UFW Manual. Disponível em: https://manpages.ubuntu.com/manpages/focal/man8/ufw.8.html
  • The Linux Documentation Project. Disponível em: http://www.tldp.org/

Quer acesso gratuito a mais materiais como este?

Acesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!

Matricule-se Agora