User Tools

Site Tools


informatica:linux:sftp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatica:linux:sftp [2013/10/14 10:48] – created javiinformatica:linux:sftp [2018/10/22 09:43] (current) – [Restringir sftp a un usuario con escritura] javi
Line 3: Line 3:
 sftp ftp ssl tls sftp ftp ssl tls
  
-===== Restringir sftp a un usuario y a una IP =====+Comentario comun a todos lo articulos: 
 + 
 +  * El directorio especificado en "ChrootDirectory" debe tener exactamente estos permisos: 
 + 
 +  drwxr-xr-x 4 root root 4096 Nov 17 12:02 www 
 + 
 +Es decir, pertenecer al usuario y grupo "root" y permisos 755. En caso contrario al intentar hacer el sftp se obtiene el siguiente error: 
 + 
 +<code>   
 +packet_write_wait: Connection to 172.17.0.2 port 22: Broken pipe 
 +Couldn't read packet: Connection reset by peer 
 +</code> 
 + 
 +===== Restringir sftp a un usuario y a una IP, solo lectura =====
  
 Queremos que el usuario "ftp_user" solo se pueda ejecutar sftp (y no iniciar una sesion ssh normal) en el servidor remoto y ademas que solo lo pueda hacer desde una IP conocida, en este ejemplo la 10.0.0.15 Queremos que el usuario "ftp_user" solo se pueda ejecutar sftp (y no iniciar una sesion ssh normal) en el servidor remoto y ademas que solo lo pueda hacer desde una IP conocida, en este ejemplo la 10.0.0.15
Line 35: Line 48:
     ForceCommand internal-sftp     ForceCommand internal-sftp
 </code> </code>
 +
 +===== Restringir sftp a un usuario con escritura =====
 +
 +**NOTA** Procedimiento revisado 22/10/2018. Sospecho que otras secciones en este artículo deben ser revisados
 +
 +1. Crear el usuario "ftp_user"
 +
 +  sudo adduser ftp_user
 +  
 +Contestar a todas las preguntas. Recordar la contrasenya
 +
 +2. Crear el punto de montaje:
 +
 +  sudo mkdir -p /srv/ftp/ftp_user/ftp
 +  sudo chmod 0755 /srv/ftp/ftp_user/
 +  
 +3. Crear el directorio al cual se podrá conectar:
 +
 +  sudo mkdir -p /home/ftp_user/ftp
 +  sudo touch /home/ftp_user/ftp/test_file_to_be_seen
 +  sudo chown ftp_user:ftp_user /home/ftp_user/*
 +  
 +4. Montarlo de forma persistente:
 +
 +  sudo cp /etc/fstab /etc/fstab.bak; sudo vim /etc/fstab
 +
 +Con la siguiente linea:
 +
 +  /home/ftp_user/ftp /srv/ftp/ftp_user/ftp       none    bind    0    0
 +
 +5. Editar:
 +
 +  sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 
 +  sudo vim /etc/ssh/sshd_config
 +  
 +Y anyadir o editar las siguientes lineas:
 +
 +<code>
 +Subsystem sftp internal-sftp
 +
 +Match User ftp_user
 +    PasswordAuthentication yes
 +    ChrootDirectory /srv/ftp/ftp_user
 +    AllowTCPForwarding no
 +    X11Forwarding no
 +    ForceCommand internal-sftp
 +</code>
 +
 +6. Reiniciar ssh
 +
 +  sudo service ssh restart
 +  
 +7. Probar desde el cliente:
 +
 +  sftp ftp_user@maquina_remota
 +  cd ftp
 +  put local_file.txt
 +  
 +**NOTA** Para que funcione, y esto hay que revisarlo, el directorio padre tiene que pertener a root y el hijo al usuario ftp:
 +
 +^ Directorio ^ Propietario ^
 +| /srv/ftp/ftp_user | root |
 +| /srv/ftp/ftp_user/dir1 | usuario |
 +
 +===== Acceso escritura usuario www-data =====
 +
 +Es un parche para que se puedan subir archivos vía SFTP o a través de la aplicación web (por ejemplo Wordpress) sin que haya colisión de permisos:
 +
 +1. Editar el archivo original:
 +
 +  sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 
 +  sudo vim /etc/ssh/sshd_config
 +  
 +Y anyadir al final:
 +
 +  AllowUsers www-data
 +
 +2. Editar:
 +
 +  sudo cp /etc/passwd /etc/passwd.bak 
 +  sudo vim /etc/passwd
 +  
 +Y dejar la linea del usuario 'www-data' así:
 +
 +  www-data:x:33:33:www-data:/var/www:/bin/bash
 +
 +3. Asignar una contraseña al usuario 'www-data':
 +
 +  sudo passwd www-data
 +  
 +4. Probar:
 +
 +  sftp www-data@ip_servidor
 +
informatica/linux/sftp.1381747694.txt.gz · Last modified: 2015/04/13 20:19 (external edit)