- Gerar link
- X
- Outros aplicativos
- Gerar link
- X
- Outros aplicativos
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 paraclear)dirr→ listagem detalhada de arquivos (equivalente als -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.
