Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

molly-guard(8) [debian man page]

MOLLY-GUARD(8)							  [FIXME: manual]						    MOLLY-GUARD(8)

NAME
molly-guard - guard against accidental shutdowns/reboots SYNOPSIS
shutdown [-hV] [--molly-guard-do-nothing] [-- script_options] halt [-hV] [--molly-guard-do-nothing] [-- script_options] reboot [-hV] [--molly-guard-do-nothing] [-- script_options] poweroff [-hV] [--molly-guard-do-nothing] [-- script_options] DESCRIPTION
molly-guard attempts to prevent you from accidentally shutting down or rebooting machines. It does this by injecting a couple of checks before the existing commands: halt, reboot, shutdown, and poweroff. This happens via scripts with the same names in /usr/sbin, so it only works if you have /usr/sbin before /sbin in your PATH! Before molly-guard invokes the real command, all scripts in /etc/molly-guard/run.d/ have to run and exit successfully; else, it aborts the command. run-parts(1) is used to process the directory. molly-guard passes any script_options to the scripts, and also populates the environment with the following variables: o MOLLYGUARD_CMD - the actual command invoked by the user. o MOLLYGUARD_DO_NOTHING - set to 1 if this is a demo-run. o MOLLYGUARD_SETTINGS - the path to a shell script snippet which scripts can source to obtain settings. molly-guard prints the contents of /etc/molly-guard/messages.d/COMMAND or /etc/molly-guard/messages.d/default to the console, if either exists. This is due to /etc/molly-guard/run.d/10-print-message. GUARDING SSH SESSIONS
molly-guard was primarily designed to shield SSH connections. This functionality (which should arguably be provided by the openssh-server package) is implemented in /etc/molly-guard/run.d/30-query-hostname. This script first tests whether the command is being executed from a tty which has been created by sshd. It also checks whether the variable SSH_CONNECTION is defined. If any of these tests are successful, test script queries the user for the machine's hostname, which should be sufficient to prevent the user from doing something by accident. You can pass the --pretend-ssh script option to molly-guard to pretend that those tests succeeds. Alternatively, setting ALWAYS_QUERY_HOSTNAME in /etc/molly-guard/rc causes the script to always query. The following situations are still UNGUARDED. If you can think of ways to protect against those, please let me know! o running sudo within screen or screen within sudo; sudo eats the SSH_CONNECTION variable, and screen creates a new pty. o executing those command in a remote terminal window, that is a XTerm started on a remote machine but displaying on the local X server. You have been warned. You can use the --molly-guard-do-nothing switch to prevent anything from happening, e.g. halt --molly-guard-do-nothing. OPTIONS
--molly-guard-do-nothing Cause molly-guard to print the command which would be executed, after processing all scripts, instead of executing it. -h, --help Display usage information. -V, --version Display version information. SEE ALSO
shutdown(8), halt(1), reboot(8), poweroff(8). LEGALESE
molly-guard is copyright by martin f. krafft. Andrew Ruthven came up with the idea of using the scripts directory and submitted a patch, which I modified a bit. This manual page was written by martin f. krafft madduck@madduck.net. Permission is granted to copy, distribute and/or modify this document under the terms of the Artistic License 2.0 COPYRIGHT
Copyright (C) 2008 martin f. krafft [FIXME: source] Apr 19, 2008 MOLLY-GUARD(8)

Check Out this Related Man Page

Scope::Guard(3) 					User Contributed Perl Documentation					   Scope::Guard(3)

NAME
Scope::Guard - lexically-scoped resource management SYNOPSIS
my $guard = guard { ... }; # or my $guard = scope_guard &handler; # or my $guard = Scope::Guard->new(sub { ... }); $guard->dismiss(); # disable the handler DESCRIPTION
This module provides a convenient way to perform cleanup or other forms of resource management at the end of a scope. It is particularly useful when dealing with exceptions: the "Scope::Guard" constructor takes a reference to a subroutine that is guaranteed to be called even if the thread of execution is aborted prematurely. This effectively allows lexically-scoped "promises" to be made that are automatically honoured by perl's garbage collector. For more information, see: <http://www.drdobbs.com/cpp/184403758> METHODS
new my $guard = Scope::Guard->new(sub { ... }); # or my $guard = Scope::Guard->new(&handler); The "new" method creates a new "Scope::Guard" object which calls the supplied handler when its "DESTROY" method is called, typically at the end of the scope. dismiss $guard->dismiss(); # or $guard->dismiss(1); "dismiss" detaches the handler from the "Scope::Guard" object. This revokes the "promise" to call the handler when the object is destroyed. The handler can be re-enabled by calling: $guard->dismiss(0); EXPORTS
guard "guard" takes a block and returns a new "Scope::Guard" object. It can be used as a shorthand for: Scope::Guard->new(...) e.g. my $guard = guard { ... }; Note: calling "guard" anonymously, i.e. in void context, will raise an exception. This is because anonymous guards are destroyed immediately (rather than at the end of the scope), which is unlikely to be the desired behaviour. scope_guard "scope_guard" is the same as "guard", but it takes a code ref rather than a block. e.g. my $guard = scope_guard &handler; or: my $guard = scope_guard sub { ... }; or: my $guard = scope_guard $handler; As with "guard", calling "scope_guard" in void context will raise an exception. VERSION
0.20 SEE ALSO
o B::Hooks::EndOfScope o End o Guard o Hook::Scope o Object::Destroyer o Perl::AtEndOfScope o ReleaseAction o Scope::local_OnExit o Scope::OnExit o Sub::ScopeFinalizer o Value::Canary AUTHOR
chocolateboy <chocolate@cpan.org> COPYRIGHT
Copyright (c) 2005-2010, chocolateboy. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself. perl v5.16.2 2010-05-16 Scope::Guard(3)
Man Page