2010-10-08 12 views
7

¿Alguien podría decirme cómo configurar el umask para un solo usuario sftp? Vale la pena mencionar es un IBM AIX ...¿Configura umask para una cuenta sftp?

Adición umask 002 a ese usuario de .profile no funcionó ... (el objetivo es que estos archivos de usuario son accesibles a las personas del mismo grupo).

He visto de alguna manera la edición de las configuraciones de sftpd, aunque quiero configurarlo para un solo usuario, así que esperaba encontrar algo que no necesitara acceso de root.

gracias!

f.

Respuesta

3

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).

3

No sé acerca de AIX, pero debería poder hacer esto con OpenSSH, aunque requerirá permisos de root. Deberá escribir un script de contenedor para el componente de servidor de sftp. El contenedor deberá cambiar selectivamente el umask para el usuario y luego el exec el servidor sftp. Para seleccionar un usuario, soy parcial a:

id --user 

Si se va a crear un script como /usr/local/sbin/sftp-wrapper, que luego cambiaría la configuración para el subsistema SFTP en /etc/ssh/sshd_config de:

Subsystem sftp /usr/libexec/openssh/sftp-server 

a:

Subsystem sftp /usr/local/sbin/sftp-wrapper 

Más allá de escribir el guión envoltorio, cada paso requiere permisos de root.

Comentario: Creo que el servidor sftp se inicia con root cuando se conecta a través de sftp. Por lo tanto, umask predeterminado se deriva de umask de root. No creo que haya una forma de alterar esto para un usuario particular desde la configuración de ese usuario. Si desea cambiar la máscara de usuario SFTP para todos los usuarios, se puede hacer una modificación sencilla de la configuración del subsistema SFTP:

Subsystem sftp /bin/bash -c ‘umask 002; /usr/libexec/openssh/sftp-server’ 
1

Una máscara de usuario de 111 en octal rendirá 73 en decimal, que utilizaremos en este ejemplo.

#vi /etc/ssh/sshd_config 

Añadir las dos líneas siguientes al final del archivo para configurar la máscara de usuario SFTP para un grupo de usuarios.

Match Group <group name> 
ForceCommand internal-sftp -u 73 

O bien, añadir las dos líneas siguientes al final del archivo para configurar la máscara de usuario SFTP para un solo usuario.

Match User <user name> 
ForceCommand internal-sftp -u 73 

Reinicia el sshd daemon.

#stopsrc -s sshd 

#startsrc -s sshd 

esto ayudará: Aamod Chandra

22

Funcionó muy bien para mí. Sin embargo, necesitó un poco de investigación porque lo que brindó es un extracto de documentos. Un ejemplo específico en mi caso sería poner dos líneas consecutivas al final de/etc/ssh/sshd_config

Match Group www-data 
ForceCommand internal-sftp -u 2 

En mi caso lo que quería hacer es fijar máscara de usuario a '002' (2 en decimal) si alguien del grupo 'www-data' inicia sesión.

También hay una opción para usar env. variable SSH_ORIGINAL_COMMAND en lugar de 'internal-sftp', pero no tuve tiempo de buscar eso.

+2

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

+0

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

+0

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

0

No sé por qué a continuación las líneas no funcionan para mí:

* Partido Grupo

ForceCommand internal-sftp -u 73 

Por fin complemento '-u 0002' para el subsistema funciona bien en SUSE 11.3:

*Subsystem sftp /usr/lib64/ssh/sftp-server **-u 0002*** 

y ahora specifiled usuario sólo puede iniciar sesión con la clave pública:

Match User nappcpr, Group iwcopy 

    PasswordAuthentication no 

    PubkeyAuthentication yes 

    **KbdInteractiveAuthentication no**