#!/bin/sh
# scripte limitent l'access a la console ssh
#echo "$SSH_ORIGINAL_COMMAND" >> $HOME/log_command.txt

## on utilise des \ car on peut pas ajouter de "" ou '' pour les chaines case a tester.
## exemple 
## case "$var" in 
## commande\ part1\ part2\ part3)
##    ce que l'on fait dans ce cas
## ;;

# on teste la commande passer aux serveur ssh.
case "$SSH_ORIGINAL_COMMAND" in
## on autorise l'ajout de cléf public a authotized_keys ssh-copy-id
exec\ sh\ -c\ \'cd\ \;\ umask\ 077\ \;\ mkdir\ -p\ \.ssh\ \&\&\ \cat\ \>\>\ \.ssh\/authorized_keys\ \|\|\ exit\ 1\ \;\ if\ type\ restorecon\ \>\/dev\/null\ 2\>\&1\ \;\ then\ restorecon\ -F\ \.ssh\ \.ssh\/authorized_keys\ \;\ fi\')
   exec sh -c 'cd ; umask 077 ; mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi'
   exit 0
;;
exec\ sh\ -c\ \'cd\ \;\ umask\ 077\ \;\ mkdir\ -p\ \.ssh\ \&\&\ \{\ \[\ \-z\ \`tail\ \-1c\ \.ssh\/authorized_keys\ 2\>\/dev\/null\`\ \]\ \|\|\ echo\ \>\>\ \.ssh\/authorized_keys\ \;\ \}\ \&\&\ cat\ \>\>\ \.ssh\/authorized_keys\ \|\|\ exit\ 1\ \;\ if\ type\ restorecon\ \>\/dev\/null\ 2\>\&1\ \;\ then\ restorecon\ \-F\ \.ssh\ \.ssh\/authorized_keys\ \;\ fi\')
   exec sh -c 'cd ; umask 077 ; mkdir -p .ssh && { [ -z `tail -1c .ssh/authorized_keys 2>/dev/null` ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi'
   exit 0
;;
## on interdit toute les commandes contenant le caractaire & et ;
## si l'on veut autorisée une commande avec l'un de ces caractaires
## il faut l'incéret juste au dessus de ce commantaire 
## la commande doit aitre complette et sans le carractaire générique * . 
*\&*)
   exit 10
;;
*\;*)
   exit 10
;;
## on autorise le téléchargement rsync mais pas l'upload 
rsync\ --server\ --sender*)
   $SSH_ORIGINAL_COMMAND
   exit 0
;;
*)
   exit 10
;;
esac
