Enkele decennia geleden had de IBM 4341 computer een Big Red Switch als noodknop om de computer uit te schakelen als hij gecrasht was. Toen het kind van één van de programmeurs aan de University of Illinois twee keer op een dag per ongeluk de schakelaar induwde, werd al vlug een geïmproviseerd plexiglazen deksel geïnstalleerd om dit tegen te gaan. De bescherming werd molly-guard genoemd, naar de te nieuwsgierige peuter Molly die niet van de knop af kon blijven. Sindsdien heet dit soort bescherming, ook in andere contexten als noodhamers en brandalarmknoppen, een molly-guard.

Vergissen onmogelijk

Debian heeft een pakket met dezelfde naam: molly-guard bevat een verzameling scripts die voorkomen dat je per ongeluk je computer uitschakelt. Als je ingelogd bent via ssh en één van de commando's shutdown, halt, poweroff of reboot intypt, vraagt molly-guard je als bevestiging de hostnaam van de computer in te typen.

Daardoor word je verplicht om expliciet te instrueren welke computer je wil uitschakelen, waardoor een vergissing onmogelijk wordt: komt de hostnaam die u intypt niet overeen met de hostnaam van de computer, dan krijgt u de melding "Good thing I asked; I won't shutdown $HOSTNAME ..." Enkel als u de juiste hostnaam intypt, wordt de computer uitgeschakeld.

Als je wil dat molly-guard je altijd om bevestiging van de hostnaam vraagt, niet alleen als je via ssh ingelogd bent, dan kan dat ook: zet in het configuratiebestand /etc/molly-guard/rc de omgevingsvariabele ALWAYS_QUERY_HOSTNAME op true. Dit is bijvoorbeeld handig als je heel wat consolevensters van lokale virtuele machines hebt openstaan en er rechtstreeks op ingelogd bent. Molly-guard werkt echter niet in twee omstandigheden: als je sudo in screen of screen in sudo draait, en als je op een machine op afstand een xterm opstart die je op je lokale machine toont.

Extra scripts

Molly-guard implementeert zijn bescherming overigens eenvoudig: het plaatst in /usr/sbin scripts met dezelfde namen als de commando's shutdown, halt, poweroff en reboot, die in /sbin staan. De bescherming werkt dan ook enkel als /usr/sbin voorrang heeft op /sbin in uw omgevingsvariabele PATH. De test van je hostnaam is geïmplementeerd in het bestand /etc/molly-guard/run.d/30-query-hostname; je kunt je eigen tests toevoegen door extra scripts te schrijven die je in /etc/molly-guard/run.d/ plaatst. Lees de man-pagina voor de details hierover.