Ingressando Servidores Ubuntu em um Active Directory

Tweak Linux - Script de Ajustes para Ubuntu Server

De onde surgiu a ideia...

Este projeto nasceu da necessidade de automatizar ajustes essenciais que normalmente são realizados após a instalação de um servidor Ubuntu Server. Durante a administração de ambientes de laboratório e testes, percebi que tarefas simples — como ajustar aliases, prolongar o tempo do sudo ou desativar o IPv6 — são repetitivas e consomem tempo.

Assim, decidi criar o LinuxNinjaTweak.sh, um script que aplica de forma automática e segura vários aprimoramentos para tornar o ambiente mais prático, limpo e funcional.


1. Criação de Aliases Globais

Os aliases permitem atalhos para comandos usados com frequência, tornando o uso do terminal mais produtivo. O script cria os seguintes aliases:

  • cls → limpa a tela (atalho para clear)
  • dirr → listagem detalhada de arquivos (equivalente a ls -lsha)
  • firewall-listen → lista as portas em escuta (sudo ss -tuln state listening)
  • services → lista todos os serviços ativos e inativos do systemd

# Criacao de aliases globais
ALIASES_FILE="/etc/bash.bashrc"
declare -A ALIASES=(
    [cls]="clear"
    [dirr]="ls -lsha"
    [services]="systemctl list-units --type=service --all --no-pager"
    [firewall-listen]="sudo ss -tuln state listening"
)

for alias in "${!ALIASES[@]}"; do
    if ! grep -Eq "^[[:space:]]*alias[[:space:]]+$alias=" "$ALIASES_FILE"; then
        echo "alias $alias='${ALIASES[$alias]}'" >> "$ALIASES_FILE"
    fi
done


2. Timeout do Sudo Ajustado para 120 Minutos

Por padrão, o sudo mantém a autorização do usuário por 15 minutos. O script aumenta esse tempo para 120 minutos, evitando reautenticação frequente durante longas sessões administrativas.


# Ajuste do timeout do sudo
SUDOERS_TIMEOUT_FILE="/etc/sudoers.d/timeout"
if [[ ! -f "$SUDOERS_TIMEOUT_FILE" ]]; then
    echo "Defaults timestamp_timeout=120" > "$SUDOERS_TIMEOUT_FILE"
    chmod 440 "$SUDOERS_TIMEOUT_FILE"
fi


3. Permitir Usuários com Ponto no Nome

Por segurança, o Ubuntu normalmente impede nomes de usuário com ponto (ex: bill.gates). Este tweak ajusta a expressão regular no arquivo /etc/adduser.conf para permitir esse formato.


# Permitir criacao de usuarios com ponto
sed -i 's/^NAME_REGEX.*/NAME_REGEX="^[a-z][-a-z0-9_.]*$"/' /etc/adduser.conf


4. Desativar IPv6 via GRUB

Em ambientes de teste, o IPv6 pode causar conflitos de rede ou atrasos no DNS. Este trecho adiciona o parâmetro ipv6.disable=1 ao kernel via GRUB, desativando completamente o IPv6 após o reboot.


# Desativar IPv6 via GRUB
GRUB_FILE="/etc/default/grub"
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"/' "$GRUB_FILE"
update-grub


5. Verificação de Dependências

Antes de executar os ajustes, o script garante que o utilitário ss esteja disponível, instalando automaticamente o pacote iproute2 se necessário.


# Verificar dependencias
if ! command -v ss >/dev/null; then
    apt-get update -qq && apt-get install -y -qq iproute2
fi


6. Feedback Visual com Checklist

Ao final, o script exibe um checklist colorido informando o status de cada tweak aplicado, além de perguntar se o usuário deseja reiniciar o sistema.


# Feedback Visual com Checklist
sleep 0.5; echo "[OK] - Aliases criados: cls, dirr, firewall-listen, services."
sleep 0.5; echo "[OK] - Timeout do sudo ajustado para 120 minutos."
sleep 0.5; echo "[OK] - Permitido nomes de usuarios com ponto."
sleep 0.5; echo "[OK] - IPv6 desativado via GRUB."


Script Completo

Abaixo está o script completo pronto para uso. Basta copiar e colar o conteúdo, no seu editor de texto preferido (o nano, por exemplo). Em seguida é só salvar como LinuxNinjaTweak.sh, e depois concedender permissão de execução. Abaixo está a sequência:


nano LinuxNinjaTweak.sh
sudo chmod +x LinuxNinjaTweak.sh
sudo ./LinuxNinjaTweak.sh

E caso deseje que seu script esteja disponivel a todos os usuarios você pode copiar/salvar para o diretório bin:

cp LinuxNinjaTweak.sh /usr/local/bin/LinuxNinjaTweak.sh


Eis o código:


#!/bin/bash

# =====================================================================
# Filename: LinuxNinjaTweak.sh 
# Funcao: Script de ajustes no Ubuntu Server (apenas para Laboratorio)
# Created by: Weverton Lima <wevertonjlima@gmail.com>
# Powered IA by: ChatGPT IA Agent Linux Server Expert
# Date: 2025-10-06 14h23 America/Maceio
# Compatibilidade: Ubuntu 22.04 / 24.04 / 24.10
# =====================================================================

main_banner() {
    clear
    cat <<'EOF'

    ===============================================================                  
          _   _ _       _         _      _                  
         | \ | (_)     (_)       | |    (_)                 
         |  \| |_ _ __  _  __ _  | |     _ _ __  _   ___  __
         | . ` | | '_ \| |/ _` | | |    | | '_ \| | | \ \/ /
         | |\  | | | | | | (_| | | |____| | | | | |_| |>  < 
         |_|_\_|_|_| |_| |\__,_| |______|_|_| |_|\__,_/_/\_\
          / ____|     _/ |(_)     | |                       
         | (___   ___|__/_ _ _ __ | |_                      
          \___ \ / __| '__| | '_ \| __|                     
          ____) | (__| |  | | |_) | |_                      
         |_____/ \___|_|  |_| .__/ \__|                     
                            | |                             
                            |_|                                                   
    ===============================================================
EOF
    printf "%s\n\n" "Carregando ..."
    sleep 2
}

main_tweak() {
    set -euo pipefail
    
    GREEN=$(tput setaf 2)
    RED=$(tput setaf 1)
    YELLOW=$(tput setaf 3)
    RESET=$(tput sgr0)
    
    if [[ "$(id -u)" -ne 0 ]]; then
        echo "${RED}[ERRO] Este script deve ser executado com sudo/root.${RESET}"
        exit 1
    fi
    
    echo "${YELLOW}[1/6] Verificando dependencias...${RESET}"
    if ! command -v ss >/dev/null; then
        apt-get update -qq && apt-get install -y -qq iproute2
    fi
    
    echo "${YELLOW}[2/6] Criando aliases globais...${RESET}"
    ALIASES_FILE="/etc/bash.bashrc"
    declare -A ALIASES=(
        [cls]="clear"
        [dirr]="ls -lsha"
        [services]="systemctl list-units --type=service --all --no-pager"
        [firewall-listen]="sudo ss -tuln state listening"
    )
    for alias in "${!ALIASES[@]}"; do
        if ! grep -Eq "^[[:space:]]*alias[[:space:]]+$alias=" "$ALIASES_FILE"; then
            echo "alias $alias='${ALIASES[$alias]}'" >> "$ALIASES_FILE"
        fi
    done
    
    echo "${YELLOW}[3/6] Ajustando timeout do sudo para 120 minutos...${RESET}"
    SUDOERS_TIMEOUT_FILE="/etc/sudoers.d/timeout"
    if [[ ! -f "$SUDOERS_TIMEOUT_FILE" ]]; then
        echo "Defaults timestamp_timeout=120" > "$SUDOERS_TIMEOUT_FILE"
        chmod 440 "$SUDOERS_TIMEOUT_FILE"
    fi
    
    echo "${YELLOW}[4/6] Permitindo nomes de usuario com ponto...${RESET}"
    sed -i 's/^NAME_REGEX.*/NAME_REGEX="^[a-z][-a-z0-9_.]*$"/' /etc/adduser.conf
    
    echo "${YELLOW}[5/6] Desativando IPv6 via GRUB...${RESET}"
    GRUB_FILE="/etc/default/grub"
    if grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=' "$GRUB_FILE"; then
        sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"/' "$GRUB_FILE"
        update-grub
    fi
    
    echo "${YELLOW}[6/6] Limpando cache de comandos...${RESET}"
    hash -r
    
    echo "-----------------------------------------------------------"
    echo "Script Finalizado:"
    echo "-----------------------------------------------------------"
    sleep 0.5; echo "${GREEN}[OK]${RESET} - Aliases criados: cls, dirr, firewall-listen, services."
    sleep 0.5; echo "${GREEN}[OK]${RESET} - Timeout do sudo ajustado para 120 minutos."
    sleep 0.5; echo "${GREEN}[OK]${RESET} - Permitido nomes de usuarios com ponto."
    sleep 0.5; echo "${GREEN}[OK]${RESET} - IPv6 desativado via GRUB."
    sleep 0.5; echo "${GREEN}[OK]${RESET} - Dependencias verificadas e satisfeitas."
    echo "-----------------------------------------------------------"
    
    read -rp "Deseja reiniciar o servidor agora? [S/N]: " resposta
    resposta=${resposta^^}
    
    if [[ "$resposta" == "S" ]]; then
        echo "${YELLOW}[INFO] Reiniciando o sistema...${RESET}"
        reboot
    else
        echo "${YELLOW}[INFO] Por favor, reinicie o sistema manualmente.${RESET}"
    fi
}

main_banner
main_tweak "$@"


💡 Dica: este script é voltado para fins de laboratório e homologação. Use-o com cautela em ambientes de produção.

Comentários