Saltar al contenido

Cómo configurar umask de ssh para todo tipo de conexiones

Esta es la contestación más válida que te podemos dar, pero primero estúdiala detenidamente y valora si es compatible a tu proyecto.

Solución:

Solución 1:

Puedo sugerir probar 2 cosas:

  1. pam_umask
  2. Envoltorio LD_PRELOAD (¿autoescrito?)

Solución 2:

Aquí hay una solución que le permitirá hacer lo que quiera por usuario. Solo usa nativo sshd características y no requiere jugar con parches mantenidos localmente. Esta solución aprovecha la ForceCommand comportamiento de sshd para insertar un script de configuración del entorno en cada conexión ssh y luego ejecutar el comando original.

Primero, cree un script en algún lugar de su sistema con los siguientes contenidos:

#!/bin/sh

umask 0027
exec /bin/sh -c "$SSH_ORIGINAL_COMMAND:-$SHELL"

A los efectos de este ejemplo, supondré que ha llamado a este /usr/bin/umask-wrapper.

Ahora, tiene algunas opciones para configurar esto. Si desea que esta sea una configuración obligatoria para todos los usuarios (lo que parece un poco improbable), puede modificar su configuración de sshd para incluir lo siguiente:

ForceCommand /usr/bin/umask-wrapper

Si solo desea que esto se aplique a algunos usuarios, puede utilizar un Match bloque (esto va al final de su sshd_config):

Match User user1,user2
ForceCommand /usr/bin/umask-wrapper

Si desea que este sea un comportamiento controlable por el usuario, puede usar el command= opción en un authorized_key archivo para seleccionar este comportamiento para keys. Por ejemplo, mientras probaba esto, agregué una entrada a mi authorized_keys archivo que se parece a esto:

command="/home/lars/bin/umask-wrapper" ssh-rsa AAAAB3NzaC1 ... umask-test

Y aquí están algunos resultados de mi prueba:

Utilizando ssh sin comando:

localhost$ ssh remotehost
remotehost$ touch umask-test/file1
remotehost$ ls -l umask-test/file1
-rw-r-----. 1 lars lars 0 Feb  2 06:02 file1

Utilizando ssh con un comando:

localhost$ ssh remotehost touch umask-test/file2
localhost$ ssh remotehost ls -l umask-test/file2
-rw-r-----. 1 lars lars 0 Feb  2 06:03 file2

Utilizando scp:

localhost$ touch file3
localhost$ ls -l file3
-rw-r--r--  1 lars  staff  0 Feb  2 06:03 file3
localhost$ scp file3 remotehost:umask-test/file3
localhost$ ssh remotehost ls -l umask-test/file3
-rw-r-----. 1 lars lars 0 Feb  2 06:03 file3

Utilizando sftp:

localhost$ sftp remotehost
sftp> put file3 umask-test/file4
sftp> ls -l umask-test/file4
-rw-r-----    0 500      500             0 Feb  2 06:05 umask-test/file4

Y ahí lo tienes. Creo que este es el comportamiento que estabas buscando. Si tiene alguna pregunta sobre esta solución, estaré encantado de proporcionarle detalles adicionales.


Solución 3:

Tomé un enfoque ligeramente diferente para centralizar la configuración.

Esto fue añadido a /etc/pam.d/common-session:

session    optional     pam_umask.so

Esto fue modificado en /etc/login.defs:

UMASK           0027

Solución 4:

Conseguí que pam_umask funcione con ssh, pero no con scp o sftp.

El método contenedor tampoco hace nada para sftp o scp. No estoy seguro de que 027 sea un buen ejemplo, ya que la mayoría de las distribuciones ya tienen umask configurado para eso. Pruebe con 002 y vea si eso funciona.

Puntuaciones y reseñas

Recuerda algo, que te concedemos valorar esta crónica .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *