Frasa “jalankan di latar belakang” menyembunyikan dua pertanyaan. Yang pertama adalah apakah pengguna ini boleh memulai proses istimewa sama sekali; yang kedua adalah apakah sesi dapat berlanjut tanpa ada yang mengetik di terminal. Ampersand shell tidak menjawab keduanya, dan skrip yang menyimpan kata sandi sudo dalam variabel menjawab pertanyaan pertama dengan buruk sambil membiarkan yang kedua tak tersentuh. Pisahkan keduanya dan pilihannya menjadi mudah dibandingkan.

Bandingkan ketiga kandidat berdasarkan kepemilikan, bukan kenyamanan.

Tiga cara meninggalkan terminal, tiga pemilik berbeda

Menambahkan ampersand pada perintah meminta shell menjalankannya sebagai tugas latar belakang, dan tugas itu tetap milik shell tersebut. sudo dapat meminta masukan bahkan sebelum program dimulai, dan OpenVPN dapat meminta setelahnya untuk frasa sandi kunci atau login. Menjalankan di latar belakang perintah yang menunggu masukan menghasilkan proses yang menunggu terminal yang tidak diawasi siapa pun. Terminal dibebaskan; interaksinya tidak.

Itu opsi termurah dan yang gagal paling membingungkan, karena prompt muncul di tempat yang sudah ditinggalkan operator.

sudo -b bukan penangan kredensial

sudo -b menjalankan perintah di latar belakang dari sudut pandang sudo sendiri, yang terdengar seperti fitur yang hilang dan ternyata bukan. Menurut manual sudo, perintah interaktif umumnya berperilaku buruk dalam mode itu, dan kontrol tugas shell tidak dapat mengelola proses yang dibuatnya. Ia memindahkan proses tanpa memberinya cara menjawab pertanyaan. Tidak ada yang menyediakan frasa sandi kunci privat atau login gateway.

Jika koneksi membutuhkan interaksi, solusinya adalah pengaturan autentikasi non-interaktif yang didukung, bukan cara lain meluncurkan prompt yang sama.

--daemon mengubah program, bukan login

--daemon meminta OpenVPN sendiri untuk melepaskan diri setelah inisialisasi. Manual versi 2.6 mencatat bahwa pengalihan syslog terjadi saat opsi diurai, meskipun pelepasan terjadi lebih lambat, sehingga pesan dapat berhenti muncul di terminal lebih awal dari yang diperkirakan. Keheningan setelah titik itu tidak membuktikan apa pun tentang terowongan. Tambahkan --log atau --log-append secara eksplisit agar keluarannya mendarat di tempat yang dapat Anda baca.

Mode daemon juga menghapus konsol secara permanen. Kunci privat yang dilindungi membutuhkan askpass dalam mode itu, dan kredensial yang dimasukkan lewat konsol digabung dengan opsi cache dapat meninggalkan autentikasi ulang berikutnya tanpa tempat bertanya. Periksa model autentikasi terhadap versi yang terpasang sebelum menganggap start latar belakang akan bertahan melewati pembaruan kunci pertamanya.

Apa yang dibeli validasi sudo dan apa yang tidak

sudo -v memvalidasi atau menyegarkan kredensial lokal yang di-cache, melakukan autentikasi jika kebijakan mensyaratkannya. Ia tidak memulai OpenVPN, tidak melakukan autentikasi ke gateway, dan tidak menjamin perintah berikutnya dalam skrip diizinkan. sudo -n berarti sebaliknya: jangan bertanya, gagal saja. Itu membuat kegagalan otorisasi lokal menjadi eksplisit, yang berguna, dan tidak mengatakan apa pun tentang apa yang akan diminta OpenVPN nanti.

Tidak ada dari kedua opsi itu yang menjadi alasan memberi perintah tanpa kata sandi secara menyeluruh atau menyalurkan kata sandi administrator ke dalam skrip.

Utamakan pemilik yang dapat diamati

Untuk terowongan milik mesin, gunakan instans layanan yang didukung distribusi. Pemilik semacam itu menyediakan start, stop, status, dan log, serta bertahan setelah sesi Anda berakhir. Merangkai latar belakang shell, daemonisasi, dan loop mulai ulang satu di sekitar yang lain menciptakan tiga pemilik untuk satu terowongan dan tidak ada jawaban jelas mana yang berjalan.

Apa pun yang Anda pilih, verifikasi sumber daya yang menjadi alasan terowongan itu ada. Permintaan start yang berhasil adalah peristiwa proses, bukan bukti koneksi yang berfungsi.

Artikel terkait