El usuario puede configurar esto a sí mismos sin la participación de la raíz, ya sea desde el cliente (por conexión) o en el servidor (por clave pública).
Desde el cliente, podemos anular el comando remoto utilizado para manejar la interacción SFTP utilizando la opción -s
:
sftp -s 'umask 0777; env PATH=${PATH}:/usr/libexec/openssh:/usr/lib/ssh:/usr/sbin sftp-server' [email protected]
(Si su sftp-server
no está instalado en uno de los lugares antes mencionados, añadir que a el camino también).
Desde el servidor, podemos forzar la ejecución de un comando en particular cada vez que se establece una conexión con una clave pública determinada. Esto se ejecutará para todas las conexiones, no solo para SFTP, pero podemos inspeccionar la variable de entorno $SSH_ORIGINAL_COMMAND
para decidir qué curso de acción tomar. Añadiendo algo como lo siguiente a authorized_keys
es probablemente suficiente para sus necesidades:
command="umask 0777; if [[ -n $SSH_ORIGINAL_COMMAND ]]; then eval $SSH_ORIGINAL_COMMAND; else exec bash --login; fi" ssh-rsa AAAAB3NzaC1yc2EA...
(sustituyendo cualquiera que sea su shell preferida para manejar cualquier inicio de sesión interactivos, y teniendo en cuenta que si utiliza tcsh
que tendrá que modificar esto para adaptarse la sintaxis de ese shell).
Ten cuidado cuando haces eso. En el ejemplo anterior, el grupo entero 'www-data' no podrá hacer ssh a través de la consola. Me sale el error 'Este servicio solo permite conexiones sftp.La conexión prospera cerrada. '. – dominikz
Esto también me funcionó (en Amazon Linux). Anteriormente había estado usando el método SSH_ORIGINAL_COMMAND descrito anteriormente. Por algún motivo, cuando cambié a sftp-internal y configuré Chroot Directory, la umask en authorized_keys dejó de tener efecto. ¡Gracias! – mikeabout
Para la mayoría de nosotros nos preocupamos por la seguridad de los usuarios de sftp, chroot es LA solución. Y esta respuesta me ayudó a resolver los problemas de umask para estos usuarios sin acceso al shell o directorio principal. +1. Sin embargo, esto no apareció rápidamente en la búsqueda. – nightgaunt