Setup SUDO_PASSWORD
Masalah
Saat menjalankan skrip otomatis yang butuh sudo, kita
sering terkendala password prompt. Tools seperti AI agent, cron job,
atau skrip background tidak punya akses ke terminal interaktif - sehingga perintah sudo gagal di tengah jalan.
Contoh skenario:
- AI agent perlu
sudo systemctl restart nginx - Cron job perlu
sudo cp file /etc/ - Skrip backup perlu
sudo rsyncke direktori sistem
Solusi: SUDO_PASSWORD via .env
Simpan password sudo di file environment (~/.env) - aman, rapi, dan tidak hardcode di skrip.
Langkah 1: Buat file .env
nano ~/.env
Isi dengan satu baris:
SUDO_PASSWORD="password_sudo_kamu_disini"
Ganti password_sudo_kamu_disini dengan password
sudo asli kamu.
Langkah 2: Proteksi file
chmod 600 ~/.env
Ini memastikan hanya user kamu yang bisa membaca
file tersebut. User lain - termasuk www-data atau
service lain - tidak bisa mengaksesnya.
Langkah 3: Cara pakai di skrip
Bash script:
#!/bin/bash
set -a
source ~/.env 2>/dev/null
set +a
echo "$SUDO_PASSWORD" | sudo -S apt update
Python:
import os
from dotenv import load_dotenv
load_dotenv(os.path.expanduser("~/.env"))
password = os.getenv("SUDO_PASSWORD")
# Gunakan subprocess dengan input
import subprocess
proc = subprocess.run(
["sudo", "-S", "systemctl", "restart", "nginx"],
input=password,
capture_output=True,
text=True
)
Verifikasi
Coba jalankan skrip sederhana:
#!/bin/bash
set -a
source ~/.env
set +a
echo "🔑 Testing SUDO_PASSWORD..."
echo "$SUDO_PASSWORD" | sudo -S whoami
# Output harus: root
️ Catatan Penting
- Jangan commit
.envke git! - pastikan sudah masuk.gitignore - Ganti password - jika password sudo
berubah, update file
.env - Multi-user - setiap user punya file
.envsendiri di~/.env - Security first - file ini adalah satu-satunya tempat password disimpan; jangan pernah copy ke tempat lain
Alternatif
| Metode | Kelebihan | Kekurangan |
|---|---|---|
.env file |
Sederhana, portable | Password plaintext di disk |
sudo NOPASSWD di sudoers |
Paling aman otomatis | Butuh akses sudo untuk setup |
ansible-vault |
Encrypted | Overkill untuk 1 password |
pass (password-store) |
GPG encrypted | Setup lebih kompleks |
Kesimpulan
Metode .env + sudo -S adalah keseimbangan
terbaik antara keamanan dan
kemudahan untuk otomatisasi. Cocok untuk
development server, lab, atau personal machine yang tidak shared
dengan orang lain.
Dibuat oleh: TDCTF Security Academy - Cybersecurity Indonesia