83 votes

Comment désactiver les commandes effrayantes du terminal ?

Comment désactiver les commandes effrayantes du terminal ?

J'utilisais SSH pour accéder à un serveur Ubuntu distant sans avoir accès au serveur physique. Je pensais que je devais taper ' shutdown dans le serveur NoSQL fonctionnant sur le système d'exploitation Ubuntu, mais en fait j'ai demandé au serveur Ubuntu de s'arrêter. J'ai ensuite dû dire à l'administrateur du serveur ce que j'avais fait pour qu'il puisse démarrer le serveur physique pour moi. C'était embarrassant !

Comment puis-je éviter que cela ne se reproduise ?

203voto

gmatht Points 2279

La réponse standard est "ne vous connectez pas en tant que root". Toutes les commandes exécutées en tant que root sont effrayantes. Si ce n'est pas possible, vous pouvez ajouter des commandes alias dans votre fichier .bashrc pour désactiver les commandes que vous trouvez particulièrement effrayantes. Par exemple :

for scary in shutdown halt  reboot rm
do
    alias $scary="echo If you really want to do that, type: `which $scary`"
done

Ensuite, si vous tapez shutdown, vous obtiendrez le message suivant :

If you really want to do that, type: /sbin/shutdown

( Assurez-vous que votre .bashrc a été chargé en premier, avant d'essayer ceci sur un serveur de production)

Quitter son emploi actuel ssh et se reconnecter, ou en utilisant . ~/.bashrc devrait charger/exécuter .bashrc. Essayez peut-être d'exécuter rm sans aucun argument pour s'assurer que votre serveur n'a pas désactivé le chargement automatique des données. .bashrc sur les connexions ou autre.

Notez que si vous êtes principalement concerné par l'arrêt et la fermeture, vous pourriez envisager d'installer molly-guard qui vous fera taper le nom d'hôte avant d'éteindre la machine. Ceci est plus utile si vous arrêtez régulièrement des systèmes d'exploitation entiers en ligne de commande, mais que vous voulez vous assurer que vous arrêtez le bon système.

Vous pouvez aussi essayer avec une commande moins effrayante comme logout ou exit.

73voto

Attie Points 18031

sudo existe pour une raison - utilisez-la. Lorsque votre commande (dans ce cas, une CLI interactive) est terminée, vous êtes renvoyé à votre Shell de niveau utilisateur, et non à un Shell de niveau racine. Il y a très peu de raisons valables pour être dans un Shell de niveau utilisateur. (Je suis surpris que ce ne soit pas déjà une réponse...)

Cela dit, ne soyez pas une muppet qui utilise sudo para tout . Comprenez ce que vous faites, et comprenez pourquoi cela nécessite/ne nécessite pas les privilèges root.


De plus, vous pouvez différencier votre invite pour les shells root/utilisateur. Cela rend également plus évident le fait que vous êtes de retour à l'invite Shell et non " un autre CLI ". Le mien est très coloré et contient beaucoup d'informations utiles (comme le nom de l'hôte), ce qui en fait un outil très utile. muy simple pour savoir sur quel hôte la commande sera exécutée, et facilite également la consultation de votre historique et la localisation des invites - une Shell racine utilise l'invite par défaut.

My PS1

Il est plus approprié de l'utiliser sur " votre "Mais si vous prenez la sécurité et l'administration système au sérieux, alors vous ne partagerez pas les mots de passe et les comptes, et vous ne serez pas assis dans un Shell racine sans en être pleinement conscient.


Comme les gens l'ont dit encore et encore, et encore " L'aliasing des commandes pour créer un environnement sûr est une mauvaise idée. ". Vous allez vous sentir à l'aise dans votre environnement sûr, en tapant ces commandes " effrayantes " là où vous ne devriez pas. Puis un jour, vous changerez de travail, ou vous vous connecterez à une nouvelle machine, et là, boum " whoopsy, je ne voulais pas, je suis désolé. "...

44voto

CSM Points 1154

Le paquet 'molly-guard' (au moins sur les systèmes dérivés de Debian) installera une enveloppe autour de shutdown, halt, poweroff, et reboot. S'il détecte que le terminal est un terminal distant, il demandera le nom de l'hôte. S'il ne correspond pas, alors la commande est annulée.

4voto

MelodiousFires Points 963

J'ai accepté une réponse qui me plaît beaucoup, mais si quelqu'un d'autre lit et souhaite une réponse plus simple, voici la mienne.

Trouvez le fichier .bashrc et mettez-le comme dernière ligne :

alias shutdown=notforuse

Ensuite, lorsque vous tapez shutdown, vous obtenez quelque chose comme ~bash: notforuse is not a command

C'est peut-être idiot, mais c'est simple et ça marche. J'apprécierais cependant des réponses avec de meilleures façons de faire !

1voto

Giacomo Catenazzi Points 746

Pour shutdown ( reboot , halt et autres) : J'ai une copie avec me demander si je suis vraiment sûr (et ça ne fait rien de toute façon). Je stocke de tels scripts dans dans /usr/local/sbin . Sous Debian, cette priorité est autre /sbin (c'est le premier répertoire de PATH).

Les scripts du système utilisent le chemin complet, donc de telles pirater m'empêcher d'arrêter un serveur distant au lieu de la machine locale (un mauvais comportement de la part de Génial WM), mais n'a pas d'autre effet indirect, et je peux toujours les utiliser comme /sbin/shutdown quand c'est vraiment nécessaire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X