Saya mencoba mengatur pekerjaan pemula untuk dijalankan pada startup sistem, dan itu juga dapat dimulai / dihentikan oleh anggota grup selain sudo
. Dengan versi sebelumnya, saya menggunakan update-rc.d
dan skrip disimpan /etc/init.d/
untuk mendapatkan ini bekerja dengan menambahkan %Group ALL = NOPASSWD: /etc/init.d/scriptname
ke file sudoers saya, tetapi saya sepertinya tidak bisa mendapatkan yang setara bekerja untuk pemula.
Saya mencoba menambahkan %Group ALL = NOPASSWD: /sbin/initctl start jobname
ke file sudoers, tetapi mencoba menjalankan perintah start jobname
menghasilkan kesalahan ini:
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.21" (uid=1000 pid=5148 comm="start jobname " interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
Sejauh yang saya tahu, itu adalah keluhan tentang bagaimana akun pengguna saya tidak diberi kekuatan untuk mengirim pesan 'Mulai' dalam file konfigurasi D-Bus untuk Pemula. Saya belum dapat menemukan informasi tentang cara mengedit file itu untuk memberikan izin grup untuk mengakses layanan tertentu - apakah ada opsi seperti itu? Apakah ada cara untuk mengedit file Sudoers sehingga saya dapat menjalankan pekerjaan tanpa mengedit file konfigurasi? Apakah saya lebih baik hanya bertahan dengan versi sebelumnya?
Saya pribadi menggunakan baris berikut di file /etc/sudoers.d/jobname_myuser:
seperti yang dijelaskan di sini: /server//a/390723/68608
sumber
Opsi semacam itu tidak ada di sudo.
Perbedaan antara skrip Sysv dan file konfigurasi Pemula adalah hanya: Skrip Sysv adalah skrip, dapat dieksekusi dengan haknya sendiri dan Anda dapat memberi tahu sudo untuk mengizinkan beberapa grup untuk mengeksekusi mereka. Di sisi lain, file konfigurasi Pemula hanyalah file konfigurasi, bukan file yang dapat dieksekusi, jadi eksekusi
start
(symlink toinitctl
) adalah hal yang dimungkinkan oleh sudo. Masalah Anda di sini adalah memungkinkan orang untuk menjalankaninitctl
Anda mengizinkan mereka untukinitctl
segalanya.Solusi itu sederhana jika kekhawatiran Anda hanya dalam satu pekerjaan. Buat skrip, katakan
/usr/bin/jobname.sh
denganlalu
chmod 755 /usr/bin/jobname.sh
dan akhirnya tambahkan file executable itu ke file sudoers Anda:Dengan cara ini, semua orang dapat menelepon
jobname.sh start
ataujobname.sh stop
mengontrol pekerjaan tertentu ini. Anda mungkin ingin menambahkan beberapa pemeriksaan untuk hanya mengizinkanstart
danstop
parameter dll.sumber
initctl
, tetapi Upstart menolak sinyal yang dikirim oleh pengguna / grup yang tidak secara eksplisit diberi entri kebijakan Izinkan di Upstart.conf? Dan tidak ada cara untuk memberikan rincian lebih dari pengaturan semua pekerjaan-atau-tidak ada dalam file konfigurasi?com.ubuntu.Upstart0_6.<JOB>
bagian) di Upstart.conf. Tergantung pada kebutuhan Anda, mungkin lebih mudah untuk membuat skrip seperti ini daripada menulis kebijakan dbus dan memulai ulang dbus dll. Kebijakan Dbus jelas merupakan hal yang "benar" untuk dilakukan, tetapi tergantung pada suatu kasus, skrip sederhana mungkin menjadi jauh dengan sedikit kesulitan.com.ubuntu.Upstart0_6.jobname
sebagaisend_interface
menghasilkan pesan kesalahan yang sama seperti sebelumnya. Jika saya benar menebak bahwa output kesalahan berisi informasi sinyal, sepertinya antarmuka atau tujuan tidak mencerminkan layanan pemula yang merujuk sinyal. Saya pikir informasi layanan hanyalah argumen dalam pesan panggilan metode D-Bus, dan saya tidak yakin saya bisa mengedit kebijakan D-Bus untuk pemula untuk membuat keputusan berdasarkan nilai argumen.sudo jobname.sh start
, sehingga Upstart melihat permintaan datang dari pengguna.root
Saya berupaya untuk mencoba melakukan ini cara yang "benar" (sehingga menjauh dari skrip Sys-V di tempat pertama), jadi saya ingin ini bekerja melalui kebijakan D-Bus atau opsi konfigurasi Pemula lainnya, tetapi jika saya tidak bisa Agar berhasil, saya akan menerima jawaban ini."$1"
. Dengan[ "$1" = "start" -o "$1" = "stop" ]
pengujian Anda, saya yakin$1
ekspansi skrip berjalan aman tetapi tidak dikutip karena root adalah kebiasaan yang tidak sehat (kecuali jika pemisahan kata sengaja diinginkan) ...Seperti yang ditunjukkan di atas, dbus daemon memiliki file konfigurasi yang mengkhususkannya untuk aplikasi tertentu.
File konfigurasi juga menetapkan batas sumber daya, parameter keamanan, dan sebagainya.
Untuk detailnya lihat dbus-daemon-1 (1) - halaman manual Linux
Untuk mengizinkan grup memulai / menghentikan Pekerjaan pemula, tambahkan kebijakan berikut ke /etc/dbus-1/system.d/Upstart.conf
Anda harus mempertimbangkan implikasi keamanan dari kebijakan tersebut sebelum mengubah kebijakan default. Anggota YourGroupName akan dapat memulai / menghentikan semua pekerjaan pemula.
sumber
start: You do not have permission to modify job: jobname
ketika saya mencoba memulai layanan.