2015-02-09 11:42:44 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
2015-07-08 14:54:56 +02:00
|
|
|
set -e
|
|
|
|
set -u
|
|
|
|
|
2015-05-18 21:18:57 +02:00
|
|
|
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
2015-02-09 11:42:44 +01:00
|
|
|
|
2015-07-08 14:54:56 +02:00
|
|
|
enable_log=
|
|
|
|
if [ "$#" -ge 1 ] && [ "$1" = "-l" ]; then
|
2015-02-09 11:42:44 +01:00
|
|
|
enable_log=1
|
|
|
|
fi
|
|
|
|
|
2015-07-08 18:05:39 +02:00
|
|
|
log_cmd()
|
2015-02-09 11:42:44 +01:00
|
|
|
{
|
|
|
|
if [ -n "$enable_log" ]; then
|
2015-07-08 18:05:39 +02:00
|
|
|
logger -p $1 -t ssh_filter_btrbk.sh "$2 (Name: ${LOGNAME:-<unknown>}; Remote: ${SSH_CLIENT:-<unknown>}): $SSH_ORIGINAL_COMMAND"
|
2015-02-09 11:42:44 +01:00
|
|
|
fi
|
2015-07-08 18:05:39 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
reject_and_die()
|
|
|
|
{
|
|
|
|
log_cmd "auth.err" "btrbk REJECT"
|
|
|
|
/bin/echo "ERROR: ssh command rejected" 1>&2
|
|
|
|
exit 1
|
2015-02-09 11:42:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
run_cmd()
|
|
|
|
{
|
2015-07-08 18:05:39 +02:00
|
|
|
log_cmd "auth.info" "btrbk ACCEPT"
|
2015-02-09 11:42:44 +01:00
|
|
|
$SSH_ORIGINAL_COMMAND
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$SSH_ORIGINAL_COMMAND" in
|
|
|
|
*\$*) reject_and_die ;;
|
|
|
|
*\&*) reject_and_die ;;
|
|
|
|
*\(*) reject_and_die ;;
|
|
|
|
*\{*) reject_and_die ;;
|
|
|
|
*\;*) reject_and_die ;;
|
|
|
|
*\<*) reject_and_die ;;
|
|
|
|
*\>*) reject_and_die ;;
|
|
|
|
*\`*) reject_and_die ;;
|
|
|
|
*\|*) reject_and_die ;;
|
2015-05-18 21:18:57 +02:00
|
|
|
btrfs\ subvolume\ show\ *) run_cmd ;; # mandatory
|
|
|
|
btrfs\ subvolume\ list\ *) run_cmd ;; # mandatory
|
|
|
|
btrfs\ subvolume\ snapshot\ *) run_cmd ;; # mandatory if this host is backup source
|
|
|
|
btrfs\ send\ *) run_cmd ;; # mandatory if this host is backup source
|
|
|
|
btrfs\ receive\ *) run_cmd ;; # mandatory if this host is backup target
|
|
|
|
btrfs\ subvolume\ delete\ *) run_cmd ;; # mandatory if scheduling is active
|
|
|
|
btrfs\ subvolume\ find-new\ *) run_cmd ;; # needed for "btrbk diff"
|
|
|
|
btrfs\ filesystem\ usage\ *) run_cmd ;; # needed for "btrbk info"
|
2015-02-09 11:42:44 +01:00
|
|
|
*) reject_and_die ;;
|
|
|
|
esac
|