GNU/Linux >> Tutoriels Linux >  >> Linux

Meilleur moyen de supprimer la commande d'arrêt, mais de continuer à redémarrer

Solution 1 :

Vous devriez utiliser une distribution Linux basée sur systemd. Dans ce cas, vous devriez pouvoir masquer la cible de mise hors tension, de sorte que systemd refusera de l'exécuter (et de s'éteindre). par exemple :

systemctl mask poweroff.target

Cela rend tout à fait impossible d'arrêter le système, autrement qu'en redémarrant. Assurez-vous que rien ne se passe :

Dans ce cas, le commutateur d'alimentation virtuel de cette machine virtuelle ne fonctionne même plus pour arrêter le système. Mais il redémarre toujours parfaitement.

Pour annuler le changement, bien sûr, il suffit de démasquer la cible. Ensuite, vous pouvez arrêter le système.

systemctl unmask poweroff.target

Solution 2 :

Il existe plusieurs façons d'y parvenir. L'un travaillerait avec un compte régulier non privilégié qui nécessitera l'exécution de la commande avec sudo et la saisie d'un mot de passe. Ensuite, vous pouvez ajouter ce qui suit à /etc/sudoers (en exécutant visudo) :

## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *

De plus, pour désactiver la mise en cache des informations d'identification sudo, ajoutez également ce qui suit :

Defaults timestamp_timeout=0

Cela empêchera la mise en cache des informations d'identification au cas où vous auriez invoqué une commande avec sudo auparavant.

Exemple :

[[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:

Remarquez que dans l'exemple ci-dessus, je n'étais pas obligé de saisir mon mot de passe lors de l'exécution de sudo shutdown -r +10 , mais pour le reste j'étais . Si vous souhaitez supprimer la nécessité de taper sudo avant la commande (sudo shutdown -r +10 ), ajoutez ce qui suit à votre .bash_profile ou .bashrc :

alias shutdown="sudo shutdown"

Exemple :

[[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:

Notez qu'il est préférable de travailler avec un compte non privilégié et d'escalader avec sudo si nécessaire.

Solution 3 :

Il existe un outil appelé molly-guard qui vous oblige à indiquer le nom d'hôte de la machine que vous souhaitez arrêter ou redémarrer.

Si vous n'utilisez pas Debian, il devrait être facile de compiler ceci à partir des sources, étant donné que le programme est plutôt primitif.

Solution 4 :

Pour éviter les accidents, les distributions basées sur RHEL ont déjà configuré des alias pour rm , cp et mv qui peut être un peu plus destructeur lorsqu'il est exécuté par l'utilisateur root.

Vous pouvez ajouter le vôtre, par exemple :

#/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."'

Solution 5 :

Renommez l'exécutable d'arrêt en quelque chose d'impossible à appeler accidentellement.

Puis alias shutdown avoir (whatever) -r


Linux
  1. Comment arrêter ou redémarrer Linux à l'aide de la ligne de commande

  2. Meilleur moyen de rechercher dans l'historique de Shell ?

  3. La meilleure façon de faire un crochet d'arrêt ?

  4. rechercher et supprimer des fichiers avec de l'espace à l'aide de la commande find sous Linux

  5. Supprimer le référentiel Git, mais conserver tous les fichiers

Commande d'arrêt de Linux

Commande Sudo sous Linux

Comment redémarrer (redémarrer) Linux à partir de la ligne de commande

Comment arrêter ou redémarrer Debian 10

Comment arrêter ou redémarrer Linux à l'aide de la ligne de commande

Comment arrêter ou redémarrer Debian 11