Saya ingin memulai layanan menggunakan file unit systemd. Layanan ini memerlukan kata sandi untuk memulai. Saya tidak ingin menyimpan kata sandi dalam plaintext di file systemd unit, karena itu dapat dibaca dunia. Saya juga tidak ingin memberikan kata sandi ini secara interaktif.
Jika saya menulis skrip normal untuk ini, saya akan menyimpan kredensial dalam file yang dimiliki oleh root dengan izin terbatas (400 atau 600), dan kemudian membaca file sebagai bagian dari skrip. Apakah ada cara gaya-sistem tertentu untuk melakukan ini, atau haruskah saya mengikuti proses yang sama seperti yang saya lakukan dalam skrip shell biasa?
shell-script
permissions
systemd
password
Kode Saus
sumber
sumber
Jawaban:
Ada dua pendekatan yang mungkin di sini, tergantung pada kebutuhan Anda. Jika Anda tidak ingin dimintai kata sandi saat layanan diaktifkan, gunakan
EnvironmentFile
arahan. Dariman systemd.exec
:Jika Anda tidak ingin diminta, Anda akan menggunakan salah satu
systemd-ask-password
arahan. Dariman systemd-ask-password
:sumber
ps ajxewww
) sehingga seseorang mungkin dapat ambil dari sana.EnvironmentFile
entri dengan jalur absolut ke file dengan 400 izin berfungsi dengan baik.Saya dapat menawarkan alternatif tambahan yang mungkin sesuai dengan kebutuhan Anda tetapi membutuhkan beberapa prasyarat yang harus dipenuhi:
Langkah selanjutnya adalah sebagai berikut:
Gunakan
secret-tool
darilibsecret
untuk menyimpan kata sandi Anda. Sebagai contoh:Jika dukungan Anda yang dapat dieksekusi membaca kata sandi dari variabel lingkungan, lebih baik:
Jika executable Anda menerima kata sandi sebagai argumen, Anda masih dapat menggunakan
secret-tool
seperti:Perhatian : kata sandi akan terlihat jelas ketika Anda akan menjalankan
systemctl --user status myUnit.service
karena itu menunjukkan argumen sedang dijalankan di baris perintah. Ini berarti ini juga akan terlihat bagi pengguna yang menjalankantop
ataups -aux
.sumber
Ada alternatif ketiga untuk ini serta saran 2 oleh @jasonwryan.
kutipan dari jawaban Michael Hampton di ServerFault - Bagaimana cara mengatur variabel lingkungan dalam layanan systemd?sumber