Permiso de solo lectura para el usuario sftp en un directorio específico

10

Quiero crear un usuario SFTP específico que tendrá permisos para leer solo todas las carpetas y subcarpetas /var/www/vhosts. ¿Alguna ayuda en esto?

Delirio
fuente

Respuestas:

11

Los sistemas Unix proporcionan el chrootcomando que le permite restablecer el nombre /del usuario a algún directorio en la jerarquía del sistema de archivos, donde no pueden acceder a archivos y directorios "superiores".

Sin embargo, en su caso, sería apropiado proporcionar un chroot virtual implementado por el servicio de shell remoto. sftp se puede configurar fácilmente para restringir a un usuario local a un subconjunto específico del sistema de archivos.

por lo tanto, en su caso, quiere chrootdecir, usuario foousuario en el /var/www/vhosts/directorio.

Puede establecer un directorio chroot para que su usuario los confine al subdirectorio de esta /var/www/vhosts/manera /etc/ssh/sshd_config;

Crear usuario foocon contraseña

sudo useradd foo
sudo passwd foo

Crear solo para grupo SFTP

$ sudo groupadd sftp_users 

Agregar a un usuario foopara un grupo solo de SFTP

$ sudo usermod -G sftp_users foo 

Cambiar propietario, porque permiso de lectura / escritura

sudo chown root.root /var/www/vhosts/

Agregar permiso

sudo chmod 755 /var/www/vhosts/

Editar /etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

Comenta y agrega una línea como la siguiente

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

Agregar al final

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(NOTA: los Matchbloques deben estar al final del sshd_configarchivo).

Reiniciar el sshservicio

sudo service ssh restart

Con esta configuración, puede ingresar a la carpeta ubuntuy obtener archivos. No puede putodelete

Para sftp en la carpeta derecha editar /etc/passwd. Cambiar la línea para que el usuario se foovea así

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

Esto cambiará la foocarpeta de inicio del usuario a la carpeta del servidor sftp.

Rahul
fuente
Así que agregué Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no In sshd_config y creé el usuario y el grupo como lo hiciste, pero el usuario footiene derechos para todas las carpetas :(
Delirium
@Delirium ver mi respuesta actualizada
Rahul
Muchas gracias por tu respuesta. Pero debe haber algún error ... Agregué Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftppero hay un error cuando quiero reiniciar ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Delirium
2
@Delirium que he mencionado claramente para poner la Match.....sección al final del archivo. Pon ese código al final del archivo y reinícialo.
Rahul
1
Lo siento por mis ojos ciegos, pero funciona, así que realmente gracias.
Delirium