He decidido convertir el PC de casa (Ubuntu) en un pequeño servidor de datos y quiero evitar hacer uso de la triste carpeta/unidad de red compartida de toda la vida y montar algo mejor. Lo que pretendo es poder acceder con conexiones seguras sFTP (FTP+SSH) a un espacio delimitado para cada usuario y con los permisos justos, de manera que ni los datos del resto de usuarios ni los del servidor corran peligro. En mi caso serán tres usuarios los que crearé, pero aquí solo lo haré con uno, ya que para más basta con repetir el procedimiento una y otra vez. En primer lugar instalamos el servidor SSH.
$apt-get install openssh-server
Podemos comprobamos que ha funcionado la instalación conectándonos a nosotros mismos (#ssh 127.0.0.1). En este punto ya podríamos acceder al sistema desde cualquier otro ordenador de la red indicando tan solo un nombre de usuario y la IP del servidor, como por ejemplo #sftp terminal1@ipservidor. Lógicamente el usuario en este caso "terminal1" debería existir en el equipo remoto para que nos acepte la conexión. Vamos a ver como crear ahora un usuario (para el caso usaré ´terminal1´, solo tenéis que sustituir este por el nombre real que queráis usar) con permisos concretos y con acceso delimitado a una zona del servidor, o lo que se conoce como una jaula. Creamos el usuario.
$useradd terminal1
Creamos la carpeta o jaula donde enviaremos al usuario cuando se loguee.
$mkdir /jaula/terminal1
Modificamos esta carpeta para que pertenezca a root y con los permisos justos para que este pueda operar.
$chown root:terminal1 /jaula/terminal1 $chmod 755 /jaula/terminal1
Dentro de esta si es necesario podemos crear una carpeta en la que el usuario ya tenga permisos de lectura y escritura.
#cd terminal1 $mkdir datos $chown terminal1:terminal1 datos $chmod 755 datos
Asignamos la jaula al directorio del usuario terminal1.
$usermod -d /jaula/terminal1 terminal1
Le asignamos una shell.
$usermod -s /bin/false terminal1
Y le definimos un password.
$passwd terminal1
Por último vamos a modificar el archivo de configuración del servidor SSH.
$nano /etc/ssh/sshd_config
Es recomendable editar la siguiente linea para impedir que se pueda acceder con una cuenta root.
PermitRootLogin no
Buscamos la linea Subsystem sftp y la eliminamos o comentamos para en su lugar dejarla como la siguiente:
Subsystem sftp internal-sftp
Y añadimos al final del archivo...
Match User terminal1 ChrootDirectory /jaula/terminal1 ForceCommand internal-sftp
Reinicamos el servidor de SSH ¡y listos!
$/etc/init.d/ssh restart
Hecho esto ya podemos acceder a nuestro espacio con el usuario terminal1.
#sftp terminal1@ipservidor
Como veréis el usuario una vez logueado es enviado a su espacio, donde dispone de permisos para leer y escribir, pero sin poder salir de ahí. Por último solo nos queda dar de alta la conexión sFTP en los equipos donde vayamos a querer conectarnos, por medio de LUGARES > CONECTAR CON EL SERVIDOR, o en Windows usando Filecilla o cualquier otro programa que permita conectar a servidores sFTP. Una vez hecho esto ya podremos trabajar remotamente con los archivos del servidor como si de una unidad más se tratara, o loguearnos desde un terminal y trabajar desde ahí.
27-03-2009
¿A que puede ser debido?
http://wiki.lapipaplena.org/index.php/Como_montar_accesos_SFTP
(con especial cuidado sobre usuarios y permisos)