Tenho um problema estranho ao tentar fazer upload de arquivos para um servidor usando SFTP.
Quando, para segurança máxima, eu uso um usuário com shell desabilitado ("/bin/false") para fazer upload de arquivos, obtenho o modo 640 para os arquivos enviados e não é isso que eu quero (os arquivos locais têm o modo 664).
No entanto, quando habilito o shell "/bin/bash" para o mesmo usuário, obtenho o modo correto, 664.
Não tenho certeza de entender o que está acontecendo aqui. Por que desabilitar o shell altera o modo dos arquivos enviados?
Minha configuração sshd:
Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp
Responder1
Por não ter um shell válido, o umask padrão do sistema não está sendo aplicado/usado.
O que você pode fazer é colocar seus usuários em um grupo e forçar algumas coisas através do /etc/sshd_config
arquivo, incluindo uma umask -
Match Group uploadusers
ForceCommand internal-sftp -u 0002
a -u 0002
opção define uma umask para o programa/subsistema de FTP interno e quaisquer arquivos carregados por meio dele SE o usuário for membro do uploadusers
grupo.
Pessoalmente, também peço chroot
aos usuários que só possam acessar seus diretórios - marque a ChrootDirectory
opção conforme se aplica a uma Match Group
diretiva no sshd_config
arquivo.
Responder2
A razão por trás disso é porque quando um shell está envolvido, uma UMASK está sendo aplicada. No seu caso, é provável (para o bash), sendo aplicado dentro de /etc/bashrc (isso assumindo alguma versão moderna do Red Hat/Centos 7), a localização desses arquivos pode variar. Ao não usar nada, verifique a configuração UMASK em /etc/profile talvez.