Os arquivos enviados usando SFTP não possuem os direitos corretos

Os arquivos enviados usando SFTP não possuem os direitos corretos

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_configarquivo, incluindo uma umask -

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

a -u 0002opçã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 uploadusersgrupo.

Pessoalmente, também peço chrootaos usuários que só possam acessar seus diretórios - marque a ChrootDirectoryopção conforme se aplica a uma Match Groupdiretiva no sshd_configarquivo.

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.

informação relacionada