
Acabei de mudar para um novo servidor e me deparei com alguns problemas estranhos de permissão.
Cada arquivo que carrego tem permissões de 600, pertence à conta do usuário e também está no mesmo grupo. Com esta permissão, o servidor não poderá fazer alterações nesses arquivos.
A pasta para a qual estou enviando (via sftp normal) tem permissões de 755.
Por que todos os novos arquivos que eu carrego aqui recebem essa permissão de 600? E como faço para alterar isso para que os arquivos adicionados tenham permissões para que possam ser modificados pelo servidor web?
Observação: Eu instalei o vsftpd que possui uma configuração para determinar o umask padrão. Fazendo login através desteFTPfunciona como esperado. No entanto, isso não resolve o problema ao fazer login viasftp.
Responder1
Minha solução básica para isso é criar um script que fique entre SSH e SFTP e altere o umask conforme o usuário efetua login:
> vim /opt/sftp-server.sh
#!/bin/bash
umask 022
/usr/libexec/openssh/sftp-server
Em seguida, edite o arquivo de configuração ssh_d (/etc/ssh/sshd_config) e edite a linha sftp SubSystem para apontar para o seu script:
Subsystem sftp /opt/sftp-server.sh
Certifique-se de definir as permissões corretamente em seu novo script:
> chmod 755 /opt/sftp-server.sh
Agora os arquivos enviados via SFTP devem ter as permissões 755!
http://blog.mrmason.net/2009/05/27/mudar-default-file-permissions-for-sftp/
Responder2
O sftp-server é o subsistema sftp geralmente usado com o openssh.
Após uma inspeção mais detalhada do comando:
$ /usr/lib/openssh/sftp-server -h
usage: sftp-server [-ehR] [-f log_facility] [-l log_level] [-u umask]
Portanto, podemos definir o umask padrão para conexões passando a opção -u na inicialização. Onde /etc/ssh/sshd_config
o subsistema sftp está definido, encontre a linha.
Subsystem sftp /usr/lib/openssh/sftp-server
e mude para ficar assim:
Subsystem sftp /usr/lib/openssh/sftp-server -u 0022
Para permitir que os arquivos criados tenham o umask padrão 644 e os arquivos 755
Lembre-se de que esta configuração é global e afetará todos os arquivos transferidos por sftp, portanto, leve a segurança em consideração antes de implementar.