Los archivos cargados mediante SFTP no tienen los derechos correctos

Los archivos cargados mediante SFTP no tienen los derechos correctos

Tengo un problema extraño al intentar cargar archivos a un servidor mediante SFTP.

Cuando, para máxima seguridad, uso un usuario con un shell deshabilitado ("/bin/false") para cargar archivos, obtengo el modo 640 para los archivos cargados y esto no es lo que quiero (los archivos locales tienen el modo 664).

Sin embargo, cuando habilito el shell "/bin/bash" para el mismo usuario obtengo el modo correcto, 664.

No estoy seguro de entender lo que está sucediendo aquí, ¿por qué al desactivar el shell se cambia el modo de los archivos cargados?

Mi configuración sshd:

Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp

Respuesta1

Al no tener un shell válido, la máscara de usuario predeterminada del sistema no se aplica/utiliza.

Lo que puedes hacer es poner a tus usuarios en un grupo y forzar algunas cosas a través del /etc/sshd_configarchivo, incluida una máscara de usuario.

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

la -u 0002opción establece una máscara de usuario para el programa/subsistema SFTP interno y cualquier archivo cargado a través de él SI el usuario es miembro del uploadusersgrupo.

Personalmente, también utilizo chroota los usuarios para que solo puedan acceder a sus directorios; marque la ChrootDirectoryopción que se aplica a una Match Groupdirectiva en el sshd_configarchivo.

Respuesta2

La razón detrás de esto es que cuando interviene un caparazón, se aplica una UMASK. En su caso, es probable (para bash), que se aplica dentro de /etc/bashrc (esto supone alguna versión moderna de Red Hat/Centos 7), la ubicación de estos archivos puede variar. Cuando no use nada, verifique la configuración de UMASK en /etc/profile tal vez.

información relacionada