web-dev-qa-db-fra.com

Désactivation de la commande d'arrêt pour tous les utilisateurs, même racine - conséquences?

Je souhaite désactiver la commande shutdown pour tous les utilisateurs, même root, sur une installation de serveur Ubuntu.

La raison pour laquelle je veux faire cela est de m'assurer que je n'ai pas l'habitude de fermer la machine de cette façon, car je SSH utilise beaucoup de machines de production en même temps que celle-ci, et je ne le fais pas. vouloir arrêter accidentellement l’une des autres machines en tapant la commande dans la mauvaise fenêtre.

Le serveur que je veux ne désactive désactivé que sous s'exécute uniquement dans VirtualBox sur mon bureau Windows. Je ne l'utilise que pour les tests locaux. Ce n'est donc pas un problème si je ne peux pas l'arrêter à partir de la ligne de commande.

J'ai déjà un peu atténué le problème en m'assurant d'avoir un mot de passe différent sur l'image VirtualBox, mais il est évident que si je suis dans la fenêtre Sudo de l'une des machines de production, je pourrais toujours la fermer accidentellement.

Mes questions sont:

  1. Comment désactiver la commande d'arrêt?
  2. Si je désactive la commande d'arrêt, y a-t-il des conséquences dont je devrais être informé? Plus précisément, désactivera-t-il la prise en charge de l'arrêt d'ACPI équivaut à appuyer sur le bouton d'alimentation sur une machine physique? Cela pourrait-il affecter d'autres applications génériques?

Pour information, je viens d'utiliser cette image VirtualBox pour essayer des scripts Shell, exécuter Tomcat et Java, etc.

11
Rich

Si vous exécutez habituellement la commande en tant que Sudo shutdown, plutôt que Sudo /sbin/shutdown, vous pouvez simplement configurer un alias de shell global pour "shutdown" afin de renvoyer un message au terminal. Le véritable exécutable sera toujours là à toutes autres fins.

3
Dave Jennings

Une meilleure solution à ce problème consiste à installer le programme molly-guard sur les boîtes que vous ne pas vouloir arrêter, plutôt que d'essayer de vous entraîner à ne jamais exécuter l'arrêt.

molly-guard tente de vous empêcher d’arrêter ou de redémarrer accidentellement des machines. Pour ce faire, il injecte quelques contrôles avant les commandes existantes: arrêt, redémarrage, arrêt et mise hors tension.

La configuration typique est qu’il vous est demandé de taper le nom d’hôte de la machine pour confirmer que vous êtes vraiment sur le bon.

Il est possible d’ajouter de nouveaux scripts à _/etc/molly-guard/run.d_ (comme indiqué à la page de manuel , les fichiers de script doivent respecter le nom attendu par run-parts .

Si vous voulez vraiment désactiver shutdown (et que c'est une idée tellement bizarre), faites simplement

_chmod 0 /sbin/shutdown
_

si vous avez besoin de l’utiliser, retournez-le à 0755.

13
poolie

Pour désactiver la commande d'arrêt, il suffit de rendre le fichier non exécutable binaire, c'est-à-dire Sudo chmod a-x /sbin/shutdown De plus, je ne pense pas que cela affectera une autre méthode d'arrêt car

shutdown envoie une demande au démon init pour amener le système au niveau d'exécution approprié

ainsi, toute autre commande/script peut le faire même après avoir désactivé la commande shutdown. Par exemple, je peux toujours éteindre mon système à l'aide de shutdown à partir du menu GNOME. Aussi, vous pouvez toujours redémarrer votre ordinateur à partir de la ligne de commande en utilisant la commande de redémarrage

1
binW

La commande shutdown est dans /sbin/shutdown. Vous pouvez le désactiver en procédant comme suit:

Sudo mv /sbin/shutdown /sbin/really-do-shutdown

Mais : Cela signifie que presque aucune des méthodes habituelles d'arrêt du système ne fonctionnera plus longtemps. Couper Gnome sur ma machine de test pour cette réponse a pour effet de vous déconnecter et de vous renvoyer à GDM.

Si vous voulez éteindre votre système par la suite, vous devez faire

Sudo init 0

La "désactivation" de l'arrêt affectera toutes les applications qui utilisent la commande pour quoi que ce soit. Comme init 0 n'est pas la méthode recommandée pour éteindre un système, tous les programmes devant l'éteindre utilisent shutdown, ce qui ne fonctionnera plus.

  • Les applications peuvent également générer des exceptions en raison de fichier manquant, ou du fichier en cours non exécutable, ce qui peut provoquer leur blocage, même si un arrêt n'est pas nécessaire. Il s'agit d'un cas Edge sur lequel vous pouvez travailler en déplaçant un fichier binaire, idéalement exécutable (et non un script Shell - cela ne fonctionnera pas) à sa place. Par exemple:

    Sudo cp /bin/ps /sbin/shutdown
    

    C'est après vous avez déplacé l'original hors du chemin en toute sécurité.

Maintenant, tout cela est assez hacky, et je le déconseille, pour les raisons exposées dans le commentaire de João Pinto. Mais je ne t'empêcherai pas de le faire. :-)

Ne sauvegardez pas seulement/sbin/shutdown, en plus, ayez un plan de récupération en place au cas où cela poserait un problème. Ne faites pas cela sur un serveur auquel vous ne pouvez pas accéder, par exemple. Et testez votre plan de récupération au préalable, en supposant que le système ne démarre pas du tout (il démarrera bien sûr - je l'ai testé - mais s'il vous plaît etre sur le cote securitaire).

1
Stefano Palazzo

Si vous souhaitez désactiver la commande shutdown.

cp/sbin/shutdown/sbin/shutdown-backup

rm/sbin/shutdown

c'est parce que si quelqu'un essaie de vouloir utiliser cette commande avec force, alors il ne peut pas

maintenant personne ne pourra utiliser la commande shutdown.

il affichera une commande de message non trouvée l'installer.

vim /etc/bash.bashrc

Ajouter une ligne en dernier de bash.bashrc

alias shutdown = "echo 'Vous n'êtes pas autorisé à utiliser cette commande'"

si vous voulez le récupérer (activé). il suffit de le recopier

cp/sbin/shutdown-backup/sbin/shutdown

0
Dishank Jindal

Je pense que cela devrait être prendre une autre solution, les serveurs devraient avoir une politique ssh pour désactiver shutdown et init 0 over ssh, ou il doit y avoir une boîte de dialogue spéciale affichée sur la console comme celle de Windows pour entrer le "pourquoi" et le "mot de passe d'arrêt" spécial . Pour cela, le bouton d'alimentation doit être protégé par un mot de passe lors de l'utilisation du serveur.

À l'heure actuelle, nous utilisons un "commutateur à clé physique = 4 euros" au lieu d'un bouton poussoir.

0
user12646