He estado buscando una manera de configuración de OpenSSH máscara de usuario a 0027de una manera consistente a través de todos los tipos de conexión.
Por tipos de conexión me refiero a:
- sftp
- scp
- nombre de host ssh
- programa de nombre de host ssh
La diferencia entre 3. y 4. es que el primero inicia un shell que generalmente lee la /etc/profileinformación mientras que el segundo no.
Además, al leer esta publicación, me di cuenta de la opción -u que está presente en las versiones más recientes de OpenSSH. Sin embargo, esto no funciona.
También debo agregar que /etc/profileahora incluye umask 0027.
Yendo punto por punto:
- SFTP - Configuración
-u 0027ensshd_configcomo se ha mencionado aquí , no es suficiente.
Si no configuro este parámetro, sftp usa de forma predeterminada umask 0022. Esto significa que si tengo los dos archivos:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
Cuando uso sftp para ponerlos en la máquina de destino, en realidad obtengo:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
Sin embargo, cuando me puse -u 0027en sshd_configla máquina de destino en realidad me sale:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
lo cual no se espera, ya que en realidad debería ser:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
Alguien entiende por qué sucede esto?
scp : independientemente de lo que está configurado para sftp , los permisos son siempre
umask 0022. Actualmente no tengo idea de cómo alterar esto.nombre de host ssh : no hay problema aquí ya que el shell lee
/etc/profilede forma predeterminada, lo que significaumask 0027en la configuración actual.programa de nombre de host ssh : la misma situación que scp .
En resumen, configurar umask en sftpaltera el resultado, pero no como debería, ssh hostnamefunciona como se esperaba /etc/profiley ambos, scpy ssh hostname programparece que se ha umask 0022codificado en alguna parte.
Cualquier idea sobre cualquiera de los puntos anteriores es bienvenida.
EDITAR: Me gustaría evitar parches que requieran compilar manualmente openssh. El sistema ejecuta Ubuntu Server 10.04.01 (lúcido) LTS con opensshpaquetes de Maverick.
Respuesta: Como lo indica poige, el uso de pam_umask hizo el truco.
Los cambios exactos fueron:
Líneas agregadas a /etc/pam.d/sshd:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
Además, para afectar a todos los shells de inicio de sesión, independientemente de si se originan /etc/profileo no, también se agregaron las mismas líneas /etc/pam.d/login.
EDITAR : después de algunos de los comentarios volví a probar este problema.
Al menos en Ubuntu (donde probé) parece que si el usuario tiene un conjunto de umask diferente en los archivos de inicio de su shell (.bashrc, .zshrc, ...), se ignora la máscara de usuario de PAM y se usa la máscara de usuario definida en su lugar. Los cambios /etc/profileno afectaron el resultado a menos que el usuario explícitamente obtenga esos cambios en los archivos de inicio.
No está claro en este momento si este comportamiento ocurre en todas las distribuciones.
UsePAM yesen tu sshd_config?
/etc/profile. Algo así comoalias umask=/bin/true