GNU/Linux >> Tutoriales Linux >  >> Linux

Chroot SFTP:es posible permitir que el usuario escriba en el directorio actual (chroot)

Solución 1:

Hola, @emmdee. Me tomó una eternidad darme cuenta de que hay un truco simple y agradable para eso. Solo tiene que convertir a root en el propietario de una carpeta principal en la que desea sFTP, luego use el comando de fuerza para decirle a un usuario específico que cargue un DIR específico dentro del directorio CHROOT.

En tu caso por si quieres /home/sftpuser para ser el directorio escribible, tendrá que hacer root el dueño de /home luego siga adelante y Force Command he /sftpuser como un directorio de destino para ese usuario o grupo.

Tu /etc/ssh/sshd_conf se verá así:

Match User sftpuser
    ChrootDirectory /home
    ForceCommand internal-sftp -d /sftpuser
    AllowTCPForwarding no
    X11Forwarding no

Una vez hecho esto, debe otorgar los permisos correctos como se dijo anteriormente, la raíz debe ser propietaria del directorio principal (chroot) /home mientras que el usuario debe poseer el directorio final (-d) /sftpuser . Voy a suponer que tiene un grupo de usuarios de sFTP llamado sftpusers , que no; simplemente omita el grupo de los siguientes comandos o reemplácelo con los usuarios (root en los primeros y sftpusers en el segundo). Como estamos usando -R en la línea de comando para la herencia, deberá comenzar con la propiedad raíz antes de la propiedad del usuario de la siguiente manera:

sudo chown -R root:sftpusers /home

luego para el usuario puede ejecutar:

sudo chown -R sftpuser:sftpusers /home/sftpuser

No estoy seguro de que esto sea necesario, pero siempre puede reiniciar el servicio sshd para asegurarse de que todas las configuraciones se vuelvan a cargar:

sudo systemctl restart sshd.service

Con suerte, esto debería funcionar a las mil maravillas, tuve un problema similar y la solución estaba ahí mirándome a los ojos la mayor parte del tiempo.

¡Salud!

Solución 2:

Sé que han pasado un par de años, pero esta publicación me llevó al 98% del camino. después de buscar durante mucho tiempo.

Para que pueda tener usuarios chroot y obtenerlos automáticamente en su propio directorio con permisos de escritura, utilicé el método que sugirió African Idiot, y también hice que el directorio chroot original fuera propiedad del usuario root y el grupo ftp.

Pero la clave para mí para mantenerlos en esa carpeta y no poder... e intentar explorar las carpetas de otros usuarios, fue hacer que la carpeta chmod 710 (rwx--x---) para que el grupo ftp haya ejecutado para hacer internal-sftp -d /%u (es decir, cd en el subdirectorio de usuarios) y ahora si intento cd .. en el directorio superior, porque no hay lectura para nadie más que para root, falla.

drwx--x---  6 root        sftpusers   uarch  6 Feb 19 15:34 ./
drwxr-xr-x  5 root        root        uarch  5 Feb  4 09:13 ../
drwxrwx---  3 anotheruser anotheruser uarch  3 Feb 24 15:34 anotheruser/
drwxrwx---  3 ftpuser     ftpuser     uarch 12 Feb 25 10:55 ftpuser/

espero que esto ayude a alguien más también.


Linux
  1. Asignar acceso de lectura/escritura a un usuario en un directorio específico en Linux

  2. Ssh:¿restringir un usuario de Ssh/scp/sftp a un directorio?

  3. ¿Cómo cambiar los permisos del usuario raíz a todos los usuarios?

  4. $pwd? (frente al directorio de trabajo actual)?

  5. Cómo configurar Chroot SFTP en Linux (Permitir solo SFTP, no SSH)

Cómo crear un usuario SFTP para una raíz de documentos del servidor web

Cómo limitar el usuario root en CentOS

Shell script directorio actual?

permiso de escritura denegado a través de filezilla sftp a /var/www/html

SFTP con chroot dependiendo de la clave pública del usuario que se conecta

Permisos de escritura de usuario SFTP chrooted