Poweroff atau Reboot sebagai Pengguna normal

17

Untuk menjalankan perintah poweroffatau rebootorang harus menjadi pengguna super. Adakah saya bisa menjalankan ini sebagai pengguna biasa? Saya hanya tidak mau sudodan memasukkan kata sandi setiap kali saya reboot atau matikan.

Stormvirux
sumber
2
Jawabannya tergantung pada sistem init yang digunakan oleh distro Anda ... Sebagai contoh, dengan systemddan logindsesi aktif Anda dapat reboot atau mematikan tanpa hak yang lebih tinggi asalkan tidak ada pengguna lain yang masih masuk ...
jasonwryan
@jasonwryan Saat ini saya menggunakan Ubuntu yang tidak digunakan systemdsecara default. Jadi maksud Anda, Distro lain seperti Arch dapat reboot tanpa hak istimewa yang telah diperluas?
Stormvirux
Ya: sesuai kondisi di komentar pertama saya.
jasonwryan

Jawaban:

22

Saya berubah /etc/sudoerssehingga setiap pengguna yang ada di grup admin dapat menjalankan perintah berikut tanpa diminta kata sandi.

sudo halt
sudo reboot
sudo poweroff

Anda hanya perlu menambahkan baris berikut ke /etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

dan tambahkan diri Anda ke grup admin.

Jika Anda ingin hanya satu pengguna yang dapat melakukan ini, hapus saja %admindan ganti dengan yang usernameseperti ini

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Anda dapat mengetahui lebih lanjut tentang /etc/sudoersdengan man sudoersatau halaman manual online

Raphael Ahrens
sumber
4

Anda juga dapat membuat file baru di bawah /etc/sudoers.dnama itu sesuai keinginan (saya beri nama 'shutdown'), dan letakkan baris berikut di dalam:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Cukup ganti "yourUserName" untuk Nama Pengguna ANDA, dan tambahkan atau hapus perintah untuk digunakan, secara pribadi saya hanya menggunakannya untuk shutdown. Salah satu perbedaan utama membuat file tertentu di bawah sudoers.dadalah bahwa file ini akan bertahan Upgrade Sistem

Racu
sumber
1
Jika Anda memilih pendekatan ini, pastikan /etc/sudoersada #includearahan yang sesuai untuk membaca file /etc/sudoers.d/.
patricktokeeffe
2

Anda juga dapat mencapai ini dengan trik dengan setuid. Saya tidak tahu apakah ini akan bekerja pada semua sistem, karena mereka kadang-kadang mengabaikan bit setuid / setgid.

Anda dapat menentukan grup pengguna yang dapat melakukan perubahan status sistem dalam kasus saya sebelumnya adm. Kemudian tambahkan pengguna yang sesuai ke grup ini.

gpasswd -a $USER adm

Tentukan izin:

chmod 4550 /usr/bin/reboot

ls -l outpus akan terlihat seperti ini:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

Setelah itu Anda cukup mengetik:

reboot
hurufu
sumber
1

Solusi paling sederhana:

sudo echo $USER >> /etc/shutdown.allow

Maka Anda dapat menggunakan salah satu dari perintah ini:

shutdown -ah now   // halt
shutdown -ar now   // reboot

Menurut man shutdown ada opsi -a untuk penggunaan non-root:

Jika shutdowndipanggil dengan argumen -a (tambahkan ini ke doa shutdown di / etc / inittab ), ia memeriksa untuk melihat apakah file /etc/shutdown.allow ada. Itu kemudian membandingkan nama login di file itu dengan daftar orang yang login di konsol virtual ...

Ini bekerja di Debian Linux. Dan ada batasan untuk 32 nama pengguna di /etc/shutdown.allow.

Alexander Yancharuk
sumber
4
Tidak ada opsi seperti itu di Fedora, CentOS atau RHEL.
fpmurphy
1
Ini juga tidak berfungsi untuk Ubuntu, setidaknya itulah yang saya dapatkan dari dokumen. Akan sangat membantu untuk melihat apakah ini hanya fitur Debian.
Raphael Ahrens
Masih belum di Ubuntu (18.04) pada tahun 2020 =}
tink