Solusi 1:
Anda harus menggunakan distribusi Linux berbasis systemd. Dalam hal ini, Anda harus dapat menutupi target poweroff, sehingga systemd akan menolak untuk mengeksekusinya (dan matikan). mis.:
systemctl mask poweroff.target
Ini membuatnya sangat tidak mungkin untuk mematikan sistem, selain dengan me-reboot. Pastikan tidak ada yang terjadi:
Dalam hal ini, sakelar daya virtual VM ini bahkan tidak lagi berfungsi untuk mematikan sistem. Tapi itu masih melakukan boot ulang dengan sangat baik.
Untuk membatalkan perubahan, tentu saja, cukup unmask targetnya. Kemudian Anda dapat mematikan sistem.
systemctl unmask poweroff.target
Solusi 2:
Ada beberapa cara untuk mencapai hal ini. Seseorang akan bekerja dengan akun non-istimewa biasa yang mengharuskan menjalankan perintah dengan sudo dan memasukkan kata sandi. Kemudian Anda dapat menambahkan berikut ke /etc/sudoers (dengan menjalankan visudo):
## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *
Juga, untuk menonaktifkan caching kredensial sudo, tambahkan yang berikut ini juga :
Defaults timestamp_timeout=0
Ini akan mencegah caching kredensial seandainya Anda menjalankan perintah dengan sudo sebelumnya.
Contoh:
[[email protected] ~]# su - jdoe
[[email protected] ~]$ sudo shutdown -c
[sudo] password for jdoe:
[[email protected] ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[[email protected] ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[[email protected] ~]$ sudo shutdown -c
[sudo] password for jdoe:
Perhatikan bagaimana dalam contoh di atas saya tidak diharuskan memasukkan kata sandi saya saat menjalankan sudo shutdown -r +10
, tapi untuk sisanya aku . Jika Anda ingin menghilangkan kebutuhan untuk mengetik sudo sebelum perintah (sudo shutdown -r +10
), tambahkan berikut ini ke .bash_profile atau .bashrc:
alias shutdown="sudo shutdown"
Contoh:
[[email protected] ~]$ source ~/.bash_profile
[[email protected] ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[[email protected] ~]$ shutdown -c
[sudo] password for jdoe:
Perhatikan bahwa praktik terbaik adalah bekerja dengan akun yang tidak memiliki hak istimewa dan eskalasikan dengan sudo jika diperlukan.
Solusi 3:
Ada alat yang disebut molly-guard yang mengharuskan Anda menyebutkan nama host mesin yang ingin Anda matikan atau reboot.
Jika Anda tidak menggunakan Debian, mengompilasi ini dari sumber seharusnya mudah, mengingat programnya agak primitif.
Solusi 4:
Untuk mencegah kecelakaan, distribusi berbasis RHEL sudah menyiapkan alias untuk rm
, cp
dan mv
yang bisa lebih merusak bila dilakukan oleh pengguna root.
Anda dapat menambahkan milik Anda sendiri, misalnya:
#/root/.bashrc
alias poweroff='echo "poweroff: Command disabled - THINK before you type.
Use /usr/sbin/poweroff if you really want to drive to the DC to restore power."'
Solusi 5:
Ubah nama shutdown yang dapat dieksekusi menjadi sesuatu yang tidak mungkin dipanggil secara tidak sengaja.
Lalu alias shutdown
menjadi (whatever) -r