Tampaknya tidak ada orang lain yang membahas masalah nyata di sini. Menempatkan di sudo
dalam skrip Anda yang kemudian Anda bagikan mempromosikan kebiasaan pengguna yang buruk . (Saya berasumsi Anda mendistribusikannya karena Anda menyebut "dari sudut pandang pengguna.")
Yang benar adalah bahwa ada pedoman dalam menggunakan aplikasi dan skrip yang mirip dengan prinsip keamanan di perbankan: Jangan pernah memberikan informasi pribadi Anda kepada seseorang yang memanggil Anda dan mengatakan mereka memanggil "dari bank Anda" , dan yang ada untuk alasan yang sama.
Aturan untuk aplikasi adalah:
Jangan pernah mengetik kata sandi Anda ketika diminta kecuali Anda yakin apa yang sedang dilakukan dengannya. Ini berlaku tiga kali lipat bagi siapa pun yang memiliki sudo
akses.
Jika Anda mengetik kata sandi karena Anda menjalankan sudo
perintah, bagus. Jika Anda mengetiknya karena Anda menjalankan perintah SSH, baiklah. Jika Anda mengetiknya saat Anda masuk ke komputer, tentu saja bagus.
Jika Anda hanya menjalankan skrip asing atau yang dapat dieksekusi dan memasukkan kata sandi Anda ketika diminta, Anda tidak tahu apa yang dilakukan skrip itu. Bisa jadi menyimpannya dalam file temp di plaintext, untuk semua yang Anda tahu, dan bahkan mungkin gagal untuk membersihkan sendiri.
Jelas ada kekhawatiran terpisah dan tambahan tentang menjalankan seperangkat perintah yang tidak diketahui root
, tetapi yang saya bicarakan di sini adalah menjaga keamanan kata sandi itu sendiri . Bahkan dengan anggapan aplikasi / skrip tidak berbahaya, Anda masih ingin kata sandi Anda ditangani dengan aman untuk mencegah aplikasi lain menggunakannya dan menggunakannya dengan jahat.
Jadi, tanggapan pribadi saya terhadap hal ini adalah, hal terbaik untuk dimasukkan ke dalam naskah Anda jika perlu di-root, adalah:
#!/bin/bash
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1;}
# do privileged stuff, etc.
exec
- panggilan itu sendiri tetapi pada saat yang sama mengganti proses, jadi kami tidak menelurkan banyak contoh skrip