En esta ocasión vamos a ver un pequeño script el cual permite la creación de usuarios enjaulados en SFTP:
#!/bin/bash
usage()
{
cat << EOF
USO: $0 -G grupo -u usuario -f file system
Script para la creacion de usuarios enjaulados SFTP
OPCIONES:
-G Grupo
-u Usuario SFTP
-f file system
ejemplo de uso: /usr/bin/createuser.sh -G sftp -u usersftp -f /home/usersftp
EOF
}
#Declaramos todas las variables que se van a usar para guardar los parametros
inputgroup=
inputusuario=
inputfs=
#Usamos el getopts para guardar los parametros en variables
while getopts «hH:G:u:f:» OPTION
do
case $OPTION in
h)
usage
exit 1
;;
G)
inputgroup=$OPTARG
;;
u)
inputusuario=$OPTARG
;;
f)
inputfs=$OPTARG
;;
esac
done
#Comprobamos que se han introducido los parametros obligatorios
if [ -z $inputgroup ] || [ -z $inputusuario ] || [ -z $inputfs ]
then
usage
exit 1
fi
function SSHconfig (){
if [ -f «/etc/ssh/sshd_config-bck» ]
then
#Comentamos lineas
sed -i ‘s/Subsystem/#&/’ /etc/ssh/sshd_config
#Agregamos configuracion
cat << EOF >> /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match user $inputusuario
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
KbdInteractiveAuthentication yes
EOF
else
#Si no existe el fichero de backup muestra un error y sale del script
echo «No se encontro el fichero de configuracion /etc/ssh/sshd_config-bck»
exit 1
fi
}
# Creamos el grupo
groupadd $inputgroup
#Creamos el usuario
useradd -g $inputgroup -s /bin/false -d $inputfs $inputusuario
#Asignamos una contraseña al usuario
passwd $inputusuario
mkdir -p $inputfs/public
chmod 755 $inputfs
chown root:root $inputfs
chown $inputusuario:$inputgroup $inputfs/public
#Creamos backup del fichero de configuracion de SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config-bck
#Realizamos la configuracion de SSH
SSHconfig
#Reiniciamos el servicio
service sshd restart
Un saludo
:wq!