Untuk alasan apa pun, kita tidak perlu lagi menjadi root (atau menggunakan sudo
) untuk menjalankan /sbin/shutdown
, /sbin/reboot
dll.
Ini sepertinya karena executable tersebut sekarang merupakan symlink /bin/systemctl
yang menangani semuanya sebagai pengguna normal.
Namun, bagaimana jika saya ingin shutdown
dan reboot
memerlukan otentikasi root lagi? Bagaimana saya bisa mencapai ini?
pkaction | grep login1
untuk aturan menarik lainnya)sudo visudo
dan memeriksa apakah ada garis dengan jalur ke executable ini.Jawaban:
Systemd memang menangani
shutdown
,reboot
dan perintah-perintah lain, dan hak-hak default yang diberikan bersifat permisif. Untuk mengubah ini, Anda perlu membuat aturan Polkit. Buat.pkla
file di/etc/polkit-1/localauthority/50-local.d
(katakanlahconfirm-shutdown.pkla
) yang berisi:Berbagai shutdown, reboot, dll perintah yang, dalam hal Polkit, tindakan dalam
org.freedesktop.login1
, misalnya,org.freedesktop.login1.power-off
,org.freedesktop.login1.reboot
, dll Masalah spesifik di sini adalah konfigurasi default, yang dalam/usr/share/polkit-1/actions/org.freedesktop.login1.policy
:Perhatikan bahwa ini memungkinkan pengguna aktif untuk mematikan, me-reboot, dll.
sumber
Anda bisa menggunakan
chmod
perintah.Jika Anda ingin memberikan akses ke root saja, Anda dapat menulis:
Jika Anda ingin memberikan permisson ke root dan grup sudo maka Anda dapat menulis:
Jika Anda ingin mengubah grup file dari sudo ke yang lain (seperti pengguna atau admin), Anda perlu mengetik:
Jika Anda ingin kembali, jalankan:
Catatan : Anda mungkin harus menggunakan
sudo
perintah ini, atau telah login di akun rootsumber
/bin/systemctl
) sehingga menjalankan chmod / sbin / shutdown akan memengaruhi semua tautan yang menunjuk/bin/systemctl
saat izin untukbin/systemctl
akan diubah sebagaimana dikonfirmasi oleh perintah $ll /bin/systemct
l -rwx ------ 1 root root 659848 18 Jan 16:04 / bin / systemctl *-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
Karena mengubah izin symlink pada sistem Linux tidak mengubah izin tautan melainkan file yang ditunjuknya (setidaknya di Ubuntu). Saya pikir cara teraman untuk mencapai ini adalah dengan menghapus tautan, dan membuatnya kembali dengan umask yang diperlukan untuk mendapatkan hasil yang Anda inginkan.
Pos terkait lainnya dapat ditemukan di sini
sumber
Anda dapat membuat skrip yang memeriksa apakah pengguna menjalankannya dengan izin root atau tidak.
Maka itu akan menjalankan perintah systemctl atau mengembalikan kesalahan.
Sumber
sumber
Cobalah untuk mengubah izinnya di terminal. Anda bisa membuatnya hanya dapat dijalankan oleh grup tertentu, seperti roda atau admin. Sayangnya (atau mungkin untungnya), sebuah file hanya dapat memiliki satu kepemilikan grup sehingga chown tidak akan bekerja dengan sendirinya. Coba "sudo chown root: wheel / sbin / shutdown" lalu "sudo chmod g + x / sbin / shutdown". Ini akan membuat file hanya dapat dieksekusi oleh root dan admin (bergetar) dan sudoers akan diminta untuk memasukkan kata sandi mereka.
sumber