Cambiar los permisos de escritura para SFTP encarcelado niega inicio de sesión

14

He explorado muchos sitios web y foros sobre cómo configurar un usuario SFTP que está encarcelado en un determinado directorio usando CHROOT. Estos son los pasos que he seguido, pero parece que no puedo obtener permisos de escritura para trabajar.

Preparar

sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Crear carpeta

mkdir /var/www/sites

Crear usuario y grupo

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

Permisos y propiedad

chown root:root /var/www
chmod 755 /var/www/sites

Ahora con esta configuración, el usuario que carga puede SFTP en el directorio de inicio, pero no puede escribir en el directorio.

Hay 2 errores típicos que ocurren, o no puedo iniciar sesión o no tengo permisos de escritura.

Error de inicio de sesión

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Estoy en desacuerdo tratando de resolver esto y si alguien pudiera señalarme en la dirección correcta, lo agradecería enormemente.

Gracias.

onggie
fuente

Respuestas:

16

Descubrí la solución. El usuario está encarcelado /var/www/sites. Luego creé otra carpeta /var/www/sites/site1.

Yo suelo:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

Esto permitió que el directorio de inicio tuviera los permisos correctos para iniciar sesión y luego poder escribir en la siguiente carpeta.

Si el usuario necesita acceso de escritura /var/www/sites, debe encarcelar al usuario /var/wwwque tiene la root:rootpropiedad y los permisos de 755. Luego, debe otorgar la /var/www/sitespropiedad de root: (su grupo) y los permisos de 775.

onggie
fuente
1

Quizás la mejor solución es:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Agrega los usuarios:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Luego, para cada usuario que haya creado, agregue una etiqueta ssh como esta: (también puede usar la directiva "Match Group" como en su ejemplo en lugar de "Match User")

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Para que pueda administrar todos los usuarios que necesita en un entorno chrooteado.

Hth, Fabrizio

fabreg
fuente
Re su bloque de código final: Matches compatible con múltiples objetivos en listas separadas por comas, por lo que podríamos simplificarlo / ordenarlo en gran medida al tener un solo conjunto de anulaciones para ambos usuarios, por el encabezadoMatch User dev1,dev2
subrayado_d
1
Entonces, ¿cómo lo configura para que estén bloqueados en la carpeta a la que tienen acceso de lectura / escritura?
Kevin B Burns