Saya memiliki layanan dalam bentuk aplikasi node.js yang diatur dengan Systemd di Raspbian Jessie dan menggunakan akun penggunanya sendiri. Namun, saya menemukan bahwa layanan tidak berjalan dengan benar karena tidak memiliki izin yang diperlukan. Salah satu modul simpul yang saya instal memerlukan akses root. Jika saya menjalankan aplikasi secara manual dengan sudo semuanya berfungsi dengan baik.
Apakah ada cara untuk memberitahu systemd untuk menjalankan layanan dengan sudo?
systemd
menjalankan file unit dengan hak root.Jawaban:
sudo
tidak ada hubungannya dengan itu.Biasanya Anda menginstruksikan systemd untuk menjalankan layanan sebagai pengguna / grup tertentu dengan a
User=
danGroup=
arahan di[Service]
bagian file unit.Atur agar root (atau hapus, menjalankan sebagai root adalah default).
sumber
User=root
. Lihat jawaban saya.Untuk menghapus,
systemd
layanan sistem berjalan sebagai root secara default, tetapi masih ada perbedaan antara perilaku default dan menjalankan layanan sistem denganUser=root
.Seperti yang didokumentasikan dalam variabel Lingkungan dalam proses spawned , variabel-variabel ini hanya ditetapkan jika
User=
diatur:Saya menguji untuk mengkonfirmasi temuan ini. Jadi jika Anda ingin menjalankan layanan systemd sebagai root yang membutuhkan salah satu dari variabel di atas, Anda perlu mengatur
User=root
.sumber
solusi sementara, tetapi berhasil dalam keadaan darurat:
Dapat dijalankan dengan pengguna yang memiliki hak sudo dalam file unit systemd seperti:
sumber
sudo
akan memperlambat startup sedikit. Dan itu tidak perlu.Jalankan sebagai pengguna sistem dalam hal ini secara default layanan berjalan sebagai root.
sumber