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_config
archivo, incluida una máscara de usuario.
Match Group uploadusers
ForceCommand internal-sftp -u 0002
la -u 0002
opció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 uploadusers
grupo.
Personalmente, también utilizo chroot
a los usuarios para que solo puedan acceder a sus directorios; marque la ChrootDirectory
opción que se aplica a una Match Group
directiva en el sshd_config
archivo.
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.