Saya ingin pengguna default, ubuntu
untuk dapat menjalankan layanan tertentu tanpa diminta kata sandi.
Khusus systemctl restart unicorn_my_app.service
.
Telah mengikuti instruksi di sini untuk menambahkan pengguna ubuntu
ke 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.d
direktori 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 #includedir
bukan 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.d
direktori:
$ ls -l /etc/init.d | grep unicorn
-rwxr--r-- 1 ubuntu ubuntu 1874 Oct 29 06:47 unicorn_my_app
Sudah mencoba chmodding 755
pada aplikasi, tetapi jangan berpikir itu akan membuat perbedaan, karena ubuntu
memilikinya.
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 vim
membuat file baru di dalamnya /etc/sudoers.d
, karena sepertinya visudo
perintah itu hanya untuk mengedit /etc/sudoers
.
Jawaban:
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.sumber
/bin/systemctl restart unicorn_my_app.service
langsung dari/etc/sudoers.d/limitedadmins
file dan menjalankannya di CLI, dan saya diminta kata sandi. Apakah penggunaubuntu
perlu ditentukan di suatu tempat atau tidakALL
membukanya untuk semua pengguna untuk semua domain?sudo /bin/systemctl restart unicorn_my_app.service
dan kemudian harus berjalan tanpa kata sandi. (memposting sebagai komentar jika jawaban PsiOps terpisah dari yang ini)systemctl restart myapp.service
tanpa menggunakansudo
.systemctl
ada di/usr/bin
:-(.