User Tools

Site Tools


informatica:linux:sftp

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:sftp [2014/10/28 18:46] javiinformatica:linux:sftp [2018/10/22 09:43] (current) – [Restringir sftp a un usuario con escritura] javi
Line 2: Line 2:
  
 sftp ftp ssl tls sftp ftp ssl tls
 +
 +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 ===== ===== Restringir sftp a un usuario y a una IP, solo lectura =====
Line 37: Line 50:
  
 ===== Restringir sftp a un usuario con escritura ===== ===== 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" 1. Crear el usuario "ftp_user"
Line 44: Line 59:
 Contestar a todas las preguntas. Recordar la contrasenya Contestar a todas las preguntas. Recordar la contrasenya
  
-2. Crear el directorio al que se podra conectar:+2. Crear el punto de montaje:
  
-  sudo mkdir -p /srv/ftp/usuario/ftp +  sudo mkdir -p /srv/ftp/ftp_user/ftp 
-  sudo chmod 0755 /srv/ftp/usuario/+  sudo chmod 0755 /srv/ftp/ftp_user/
      
-3. Crear el punto de montaje:+3. Crear el directorio al cual se podrá conectar:
  
-  sudo mkdir -p /home/usuario/ftp +  sudo mkdir -p /home/ftp_user/ftp 
-  sudo chown usuario:usuario /home/usuario/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: 4. Montarlo de forma persistente:
Line 60: Line 76:
 Con la siguiente linea: Con la siguiente linea:
  
-  /srv/ftp/usuario/ftp      /home/usuario/ftp none    bind+  /home/ftp_user/ftp /srv/ftp/ftp_user/ftp       none    bind       0
  
 5. Editar: 5. Editar:
Line 72: Line 88:
 Subsystem sftp internal-sftp Subsystem sftp internal-sftp
  
-Match User usuario +Match User ftp_user
     PasswordAuthentication yes     PasswordAuthentication yes
-    ChrootDirectory /srv/ftp/usuario+    ChrootDirectory /srv/ftp/ftp_user
     AllowTCPForwarding no     AllowTCPForwarding no
     X11Forwarding no     X11Forwarding no
Line 86: Line 102:
 7. Probar desde el cliente: 7. Probar desde el cliente:
  
-  sftp usuario@maquina_remota+  sftp ftp_user@maquina_remota
   cd ftp   cd ftp
   put local_file.txt   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.1414522011.txt.gz · Last modified: 2015/04/13 20:19 (external edit)