En esta entrada realizaremos una configuración de SFTP enjaulado en el cual tanto el propietario como el grupo podrán realizar modificaciones en el directorio enjaulado.
Realizamos dicha modificación dado que en mi casó un usuario que gestiona un aplicativo necesita poder procesar los ficheros alojados en el sftp.
Configuración usuario y directorios
Creamos el grupo
groupadd sftp
Creamos el usuario y lo añadimos al grupo sftp
useradd -g sftp -s /bin/false -d /home/usersftp/ usersftp
Asignamos una contraseña al usuario
passwd usersftp
Creamos la estructura de carpetas y asignamos los permisos correspondientes
mkdir -p /home/usersftp/public/response
mkdir -p /home/usersftp/public/request
mkdir -p /home/usersftp/public/.processed
chmod 755 /home/usersftp/public/.processed
chown root:root /home/usersftp/
chown usersftp:sftp /home/usersftp/public/*
Accedemos al directorio donde van a transferir los ficheros
cd /home/usersftp/public
Asignamos los siguientes permisos y ACL para que el grupo tenga permisos:
chmod -R g+srwX response/
chmod -R g+rwX request/
chmod -R g+rwX .processed/chown -R :sftp response/
chmod -R g+s response/
setfacl -d -m g::rwx responsechown -R :sftp request/
chmod -R g+s request/
setfacl -d -m g::rwx requestchown -R :sftp .processed/
chmod -R g+s .processed/
setfacl -d -m g::rwx .processed
Añadimos al final del fichero .bashrc del usuario que queremos que acceda la siguiente linea:
cat /home/rokitoh/.bashrc
umask 002
Añadimos al usuario al grupo correspondiente
usermod -a -G sftp rokitoh
Configuración SSH
Añadimos en el fichero /etc/pam.d/sshd la siguiente linea al final:
session optional pam_umask.so umask=0002
Accedemos al /etc/ssh/sshd_config y debemos modificar la siguiente linea:
Subsystem sftp /usr/lib/openssh/sftp-server
Por esta:
Subsystem sftp /bin/sh -c ‘umask 0002; /usr/lib/openssh/sftp-server’
También tenemos que añadir la siguiente configuración al final del fichero:
Match user usersftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -u 2
KbdInteractiveAuthentication yes
Reiniciamos el servicio ssh
service sshd restart
Probamos acceder mediante nuestro cliente ftp al servidor y crear un fichero.
También mediante el usuario que hemos configurado en el grupo sftp (en mi caso rokitoh) ya podría crear o modificar un archivo en el servidor sftp mediante una shell.
Un saludo
:wq!
Una respuesta a “Configurar servidor SFTP enjaulado con permisos de escritura en el grupo GNU/Linux”