Usuario SFTP con acceso solo a una carpeta específica: permiso denegado para crear archivos

Usuario SFTP con acceso solo a una carpeta específica: permiso denegado para crear archivos

Entonces estoy intentando crear un usuario que solo tenga acceso a una carpeta específica dentro de mi public_htmlcarpeta. He creado con éxito el usuario y puedo iniciar sesión. Tuve algunos problemas para iniciar sesión al principio, porque la carpeta tenía que ser propiedad de root, antes de que el usuario sftp pudiera hacerlo.

Entonces seguí esta guía:https://serverfault.com/questions/584986/bad-ownership-or-modes-for-chroot-directory-component- indicándome que cambie la propiedad de la carpeta a raíz.

Después de hacer esto, puedo iniciar sesión correctamente; sin embargo, una vez que inicio sesión, no puedo agregar archivos ni hacer nada dentro de esta carpeta, ya que es propiedad de root.

Intenté crear un grupo y agregar el usuario root y el usuario sftp como miembros de este grupo, pero tampoco funcionó.

Mi solución fue crear otro directorio dentro de la carpeta sftp, usando el usuario root, y luego cambiar la propiedad al usuario sftp, pero esto me parece demasiado complicado y además agrega otra carpeta a la estructura de árbol, lo cual no soy un gran admirador. de.

¿Alguna idea de cómo permitir que un usuario sftp tenga acceso de escritura a una carpeta, mientras que root sigue siendo el propietario?

Respuesta1

Se habla mucho sobre este tipo de cosas en algunos sitios de intercambio de pilas. Pero en caso de que esto no sea un duplicado...

En mi CentOS 7, cuando usa ChrootDirectory para restringir a un usuario a un directorio, ese directorio debe ser propiedad de la raíz y no puede permitir el acceso de escritura a ningún otro usuario, ya sea mediante permisos o FACL. Puede configurar un enlace simbólico, pero el usuario sftp no podrá seguirlo si está restringido a un directorio. Entonces tienes que hacer esto.

Crear un usuario

useradd ftp_user

configurar contraseña

passwd ftp_user

Configurar permisos. La dirección de su casa será su cárcel.

chown root:root /home/ftp_user
chmod 0755 /home/ftp_user

Restringir al usuario a esa cárcel ahora

vi /etc/ssh/sshd_config

Cambia esto:

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

a

Subsystem sftp internal-sftp

Agregar

Match User ftp_user
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

Guardar y salir vi.

No olvides:

systemctl restart sshd 

Ahora los engañamos. Digamos que tu cliente tiene un sitio web con el que le permitirás seguir jugando en /var/www/corny_website

Asegúrese de que tenga permisos en ese directorio.

setfacl -m u:ftp_user:rwx /var/www/corny_website
setfacl -d -m u:ftp_user:rwx /var/www/corny_website

Ahora lo montas en lugar de vincularlo simbólicamente.

mkdir /home/ftp_user/corny_website
mount --bind /var/www/corny_website /home/ftp_user/

Ahora, cuando el usuario sftps. No recibirá ese error de tubería rota y solo podrá ver /home/ftp_user y, lo que es más, solo podrá cargar o descargar desde /var/www/corny_website, que ve como / cursi_sitio web.

información relacionada