Este é um problema perene e foi discutido muitas vezes. Eu escrevi uma resposta curta aqui:
Basicamente, você respondeu a si mesmo usando seu último comentário. O SFTP preserva as permissões originais e trunca umask
dele.
Aqui está a minha situação: Estou configurando um servidor web Ubuntu 14.04 para uma equipe compartilhar. Eu gostaria que a equipe tivesse acesso de leitura / gravação para tudo dentro de var/www/html
(o mesmo que CHMOD 775
em todos os arquivos e pastas).
Meu problema é que os clientes SFTP no Mac (Transmit, Cyberduck e FileZilla) não respeitam as permissões padrão que eu configurei.
Depois de várias horas, percorri muitas etapas para atingir minha meta:
Configure as permissões da equipe:
myteam
group myteam
/var/www/html
para myteam
Neste ponto, ls -la
de /var/www
retorna
drwxrwsr-x 2 marcelo myteam 4096 Jul 20 13:29 html
Defina um UMASK padrão:
/etc/ssh/sshd_config
com Subsystem sftp /usr/lib/openssh/sftp-server -u 002
com base em este artigo . /etc/pam.d/sshd
e /etc/pam.d/login
com uma nova linha session optional pam_umask.so umask=0027
com base em esta questão
/etc/pam.d/common-session/
com uma nova linha session optional pam_umask.so
e editou /etc/login.defs
para alterar a linha UMASK para UMASK 002
com base em esta questão
Neste ponto, se eu fizer SSH no servidor por meio de um shell, o comando umask
reportará 002
e todos os novos arquivos e pastas terão as permissões corretas. No entanto, se eu fizer SFTP no servidor via Transmit, Filezilla, Cyberduck, etc. e criar arquivos ou pastas, ele não respeitará e padronizará os arquivos para rw-r--r--
e pastas para rwxrwsr-x
(as pastas estão corretas). Eu verifiquei e os clientes FTP não estão substituindo nenhuma permissão - eles estão desativados.
Este é um problema perene e foi discutido muitas vezes. Eu escrevi uma resposta curta aqui:
Basicamente, você respondeu a si mesmo usando seu último comentário. O SFTP preserva as permissões originais e trunca umask
dele.