Je voudrais désactiver la shutdown
commande pour tous les utilisateurs, même root, sur une installation d'Ubuntu Server.
La raison pour laquelle je veux le faire est de m'assurer que je n'ai pas l'habitude d'arrêter la machine de cette façon, car je SSH dans beaucoup de machines de production en même temps que celle-ci, et je ne le fais pas souhaitez arrêter accidentellement l'une des autres machines en tapant la commande dans la mauvaise fenêtre.
Le serveur sur lequel je veux désactiver l'arrêt fonctionne uniquement dans VirtualBox sur mon bureau Windows, et je ne l'utilise que pour les tests locaux, donc ce n'est 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 évidemment si je suis dans la sudo
`` fenêtre '' sur l'une des machines de production, je pourrais quand même l'arrêter accidentellement.
Mes questions sont:
- Comment désactiver la commande d'arrêt?
- 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, cela désactivera-t-il la prise en charge de l'arrêt ACPI, qui équivaut à appuyer sur le bouton d'alimentation d'une machine physique? Cela pourrait-il affecter d'autres applications génériques?
Pour information, j'utilise juste cette image VirtualBox pour essayer des scripts shell, exécuter Tomcat et Java, et ce genre de choses.
Réponses:
Si vous exécutez généralement la commande en tant que
sudo shutdown
, plutôt quesudo /sbin/shutdown
, alors vous pouvez simplement configurer un alias de shell global pour "shutdown" pour simplement renvoyer un message au terminal à la place. Le véritable exécutable sera toujours là à toutes autres fins.la source
alias shutdown=sl
) n'aura aucun effet sur les arguments de sudo. Dans zsh, vous pouvez définir des alias qui correspondent aux arguments, mais je ne pense pas dans bash. Vous pouvez créersudo
un alias pour un script shell qui refuse de faire quoi que ce soit si le premier argument estshutdown
.Une meilleure approche à ce problème est d'installer le garde molly programme sur les cases que vous ne voulez arrêter, plutôt que d' essayer de vous entraîner à ne jamais exécuter l' arrêt.
La configuration typique est qu'il vous demande de taper le nom d'hôte de la machine pour confirmer que vous êtes vraiment sur la bonne.
Il est possible d'ajouter de nouveaux scripts à
/etc/molly-guard/run.d
(comme indiqué sur la page de manuel , les fichiers de script doivent suivre la dénomination attendue parrun-parts
.Si vous voulez vraiment désactiver
shutdown
(et c'est une idée tellement bizarre), faites simplementpuis si vous avez besoin de l'utiliser, remettez-le à 0755.
la source
Pour désactiver la commande d'arrêt, il suffit de rendre le binaire non exécutable, c'est-à-dire que
sudo chmod a-x /sbin/shutdown
je ne pense pas que cela affectera toute autre méthode d'arrêt car, comme le dit l'entrée man pour l'arrêtAinsi, toute autre commande / script peut le faire même après avoir désactivé la commande d'arrêt, par exemple, je peux toujours arrêter mon système à l'aide de l'arrêt du menu GNOME. Vous pouvez également redémarrer votre ordinateur à partir de la ligne de commande à l'aide de la commande de redémarrage
la source
La
shutdown
commande est entrée/sbin/shutdown
. Vous pouvez le désactiver en procédant comme suit:Mais : cela signifie que presque aucune des méthodes habituelles d'arrêt du système ne fonctionnera plus. L'arrêt de gnome sur ma machine de test pour cette réponse le fait simplement vous déconnecter et vous renvoyer à GDM.
Si vous souhaitez arrêter votre système par la suite, vous devez faire
L'arrêt de "désactivation" affectera toutes les applications qui utilisent la commande pour quoi que ce soit. Étant donné que ce
init 0
n'est pas la méthode recommandée pour arrêter un système, tous les programmes qui doivent arrêter le système l'utilisentshutdown
, ce qui ne fonctionnera plus.Les applications peuvent également lever des exceptions en raison du fichier manquant ou du fait que le fichier n'est pas exécutable , ce qui peut entraîner leur blocage même si un arrêt n'est pas nécessaire. Il s'agit d'un cas périphérique que vous pouvez contourner en déplaçant à sa place un fichier binaire, idéalement exécutable (pas un script shell - qui ne fonctionnera pas). Par exemple:
C'est après que vous ayez déplacé l'original en toute sécurité.
Maintenant, tout cela est assez hacky, et je le déconseille , pour les raisons décrites dans le commentaire de João Pinto. Mais je ne vous empêcherai pas de le faire. :-)
Ne faites pas seulement une sauvegarde de / sbin / shutdown, ayez également un plan de récupération en place au cas où cela causerait des problèmes. Ne faites pas cela sur un serveur auquel vous ne pouvez pas accéder, par exemple. Et tester votre plan de relance à l' avance, en supposant que le système ne démarre pas du tout (il démarre bien sûr - je l' ai testé - mais s'il vous plaît être du bon côté).
la source
Je pense que cela devrait être prendre une autre solution, les serveurs devraient avoir une politique ssh pour désactiver l'arrêt et init 0 sur ssh, ou il doit y avoir une boîte de dialogue spéciale affichée sur la console comme sous 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 mot de passe lors de l'utilisation du serveur.
À l'heure actuelle, nous utilisons un "interrupteur à clé physique = 4Euros" au lieu d'un bouton-poussoir.
la source
Si vous souhaitez désactiver la
shutdown
commande.c'est parce que si quelqu'un essaie de forcer à vouloir utiliser cette commande, alors il ne peut pas non plus
maintenant, personne ne pourra utiliser la commande d'arrêt.
il affichera une commande de message introuvable. installez-le.
Ajouter une ligne en dernier de bash.bashrc
si vous le souhaitez (activé). il suffit de le recopier
la source