memungkinkan pengguna untuk menjalankan layanan systemctl / systemd tanpa kata sandi


25

Saya ingin pengguna default, ubuntuuntuk dapat menjalankan layanan tertentu tanpa diminta kata sandi.

Khusus systemctl restart unicorn_my_app.service.

Telah mengikuti instruksi di sini untuk menambahkan pengguna ubuntuke grup yang baru dibuat LimitedAdmins, yang dikonfirmasi dengan:

$ getent group LimitedAdmins
LimitedAdmins:x:1001:ubuntu

Membuat file baru, limitedadmins(menggunakan sudo vim) di /etc/sudoers.ddirektori yang berisi teks berikut:

%LimitedAdmins ALL=NOPASSWD: /etc/init.d/unicorn_ofn_america restart, /etc/init.d/unicorn_ofn_america start

Saya juga sudah mencoba:

%LimitedAdmins ALL=NOPASSWD: /bin/systemctl/unicorn_ofn_america restart, /bin/systemctl/unicorn_ofn_america start

(Dan /bin/systemd)

Konten /etc/sudoers/adalah default sebagaimana dikonfirmasi dengan sudo visudo(atau sudo cat /etc/sudoers):

    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults    env_reset
    Defaults    mail_badpass
    Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

    # Host alias specification

    # User alias specification

    # Cmnd alias specification

    # User privilege specification
    root    ALL=(ALL:ALL) ALL

    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL

    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL

    # See sudoers(5) for more information on "#include" directives:

    #includedir /etc/sudoers.d

(Tanda pagar #includedirbukan komentar, tetapi bagian dari sintaks arahan #include ).

Namun masih ada prompt kata sandi yang berjalan systemctl restart unicorn_my_app.service

Layanan ada di init.ddirektori:

$ ls -l /etc/init.d | grep unicorn
-rwxr--r-- 1 ubuntu ubuntu 1874 Oct 29 06:47 unicorn_my_app

Sudah mencoba chmodding 755pada aplikasi, tetapi jangan berpikir itu akan membuat perbedaan, karena ubuntumemilikinya.

Bahkan mencoba me-reboot sistem tanpa perbedaan. Apakah saya melewatkan langkah, seperti memulai ulang / memuat ulang)? Mengkonfigurasi sesuatu yang salah?

Saya juga harus menyebutkan bahwa saya dulu vimmembuat file baru di dalamnya /etc/sudoers.d, karena sepertinya visudoperintah itu hanya untuk mengedit /etc/sudoers.


Jawaban:


38

File sudoers cukup fleksibel, dan dengan itu muncul kompleksitas. Yang Anda inginkan di sini adalah mengizinkan akses ke perintah /bin/systemctl, dengan parameter khusus:

%LimitedAdmins ALL=NOPASSWD: /bin/systemctl restart unicorn_my_app.service

Pada dasarnya Anda hanya mengambil baris perintah persis yang akan Anda ketik, hard-code nama path demi keselamatan, dan memasukkannya ke file sudoers Anda (atau /etc/sudoers.d). Dan perhatikan bahwa 'mulai' dan 'mulai ulang' sama sekali berbeda sejauh menyangkut sudo; mengizinkan satu tidak akan memberikan akses ke yang lain.


1
Sepertinya tidak berfungsi. Saya bisa menyalin /bin/systemctl restart unicorn_my_app.servicelangsung dari /etc/sudoers.d/limitedadminsfile dan menjalankannya di CLI, dan saya diminta kata sandi. Apakah pengguna ubuntuperlu ditentukan di suatu tempat atau tidak ALLmembukanya untuk semua pengguna untuk semua domain?
— MikeiLL

5
Anda akan menjalankan sudo /bin/systemctl restart unicorn_my_app.servicedan kemudian harus berjalan tanpa kata sandi. (memposting sebagai komentar jika jawaban PsiOps terpisah dari yang ini)
— rosuav

1
@rosuav Apakah ada cara agar kita dapat menjalankannya langsung seperti systemctl restart myapp.servicetanpa menggunakan sudo.
— kabirbaidhya

Tidak juga, tetapi Anda bisa memasukkan perintah ke dalam skrip (lengkap dengan awalan sudo), dan kemudian letakkan skrip itu ke $ PATH. Atau menjadikannya shell alias.
— rosuav

3
Perhatian: Di distro lain systemctl ada di /usr/bin:-(.
— guettli
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.