Solusi 1:
beri tahu systemd untuk menjalankan layanan dengan
sudo
?
sudo
tidak ada hubungannya dengan itu.
Biasanya Anda menginstruksikan systemd untuk menjalankan layanan sebagai pengguna/grup tertentu dengan User=
dan Group=
direktif dalam [Service]
bagian dari file unit.
Setel itu ke root (atau hapus, karena menjalankan sebagai root adalah default).
Solusi 2:
Untuk menghapus, systemd
layanan sistem dijalankan sebagai root secara default, tetapi masih ada perbedaan antara perilaku default dan menjalankan layanan sistem dengan User=root
.
Seperti yang didokumentasikan dalam variabel Lingkungan dalam proses pemijahan, variabel ini hanya disetel jika User=
diatur:
$USER, $LOGNAME, $HOME, $SHELL
Saya diuji untuk mengkonfirmasi temuan ini. Jadi jika Anda ingin menjalankan layanan systemd sebagai root yang membutuhkan salah satu variabel di atas, Anda perlu mengatur User=root
.
Solusi 3:
solusi sementara, tetapi berhasil dalam keadaan darurat:
/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Dapat berjalan dengan pengguna yang memiliki hak istimewa sudo di file unit systemd seperti:
[Unit]
Description=Rails Webserver
After=syslog.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT
[Install]
WantedBy=multi-user.target