Me gustaría dar acceso SFTP temporal a un tipo de soporte. ¿Cómo creo un usuario SFTP? ¿Y cómo puedo eliminarlo una vez terminado el trabajo?
Además, ¿cómo especifico un directorio de inicio para ellos? ¿Puedo evitar que accedan a ciertos subdirectorios dentro de su directorio de inicio?
Usamos CentOS 6.3 y fzSftp
Respuesta aceptada:
Acceso no chroot
Si no tiene una configuración de servidor FTP, y confía en que el usuario que iniciará sesión no hurgará demasiado en su servidor, me inclinaría a darles una cuenta para SFTP en el sistema en su lugar.
El wiki de CentOS mantiene un tutorial simple titulado:Configuración simple de SFTP que hace que esto sea bastante sencillo.
Digo que es sencillo porque, literalmente, solo tiene que crear la cuenta y asegurarse de que el firewall permita el tráfico SSH, asegúrese de que el servicio SSH se esté ejecutando y ya casi ha terminado.
Si sshd
aún no se está ejecutando:
$ /etc/init.d/sshd start
Para agregar un usuario:
$ sudo useradd userX
$ sudo passwd userX
... set the password ...
Cuando haya terminado con la cuenta:
$ sudo userdel -r userX
Acceso chroot
Si, por otro lado, desea limitar este usuario a un directorio designado, el servidor SFTP incluido con SSH (openssh) proporciona una configuración que también facilita la habilitación. Es un poco más de trabajo, pero no demasiado. Los pasos se describen aquí en este tutorial titulado:Cómo configurar Chroot SFTP en Linux (permitir solo SFTP, no SSH).
Realice estos cambios en su /etc/ssh/sshd_config
archivo.
Subsystem sftp internal-sftp
## You want to put only certain users (i.e users who belongs to sftpusers group) in the chroot jail environment. Add the following lines at the end of /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Ahora deberá crear el árbol de directorios chroot donde este usuario quedará bloqueado.
$ sudo mkdir -p /sftp/userX/{incoming,outgoing}
$ sudo chown guestuser:sftpusers /sftp/guestuser/{incoming,outgoing}
Los permisos deberían tener el siguiente aspecto:
$ ls -ld /sftp/guestuser/{incoming,outgoing}
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/outgoing
Los directorios de nivel superior como este:
$ ls -ld /sftp /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
No olvides reiniciar el sshd
servidor:
$ sudo service sshd restart
Ahora cree la cuenta de usuarioX:
$ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin userX
$ sudo passwd userX
... set password ...
Puedes comprobar que la cuenta se ha creado correctamente:
$ grep userX /etc/passwd
userX:x:500:500::/incoming:/sbin/nologin
Cuando haya terminado con la cuenta, elimínela de la misma manera anterior:
$ sudo userdel -r userX
…y no olvide eliminar los cambios en el archivo de configuración que hicimos anteriormente, luego reinicie sshd
para activarlos una vez más.