Seu problema é que os novos arquivos não podem ser gravados em grupo. Em vez de usar setgid no diretório para definir o grupo, use ACL s que oferecem mais flexibilidade.
A entrada ACL padrão é herdada para novos arquivos e diretórios, concedendo permissões definidas na ACL. Para definir uma entrada ACL padrão para o grupo webadmin para permitir rwx :
setfacl -m default:g:webadmin:rwx /var/www/website.com/public_html/uploads
Novos arquivos criados no diretório serão legíveis e graváveis para o grupo webadmin .
Se a ACL não for uma opção , você precisará alterar o umask , que determina as permissões padrão do UNIX para novos arquivos. As escolhas sensatas para as novas umask são 002 (mascarado por todo mundo) e 007 (todos os bits de permissão do mundo mascarados, ou seja, apenas grupo e proprietário têm acesso).
Para definir o Apache umask , copie o arquivo da unidade systemd para / etc :
cp /lib/systemd/system/apache2.service /etc/systemd/system/
Configure umask em /etc/systemd/system/apache2.service anexando UMask=<umask> para a seção [Service] . Observe que isso afeta todos os arquivos criados pelo Apache.
Mudar umask para sftp é necessário apenas se você precisar alterar os arquivos / diretórios enviados do PHP / Apache. O padrão umask 022 cria um grupo de arquivos e é legível por todo o mundo, mas não pode ser gravado em grupo. A maneira mais fácil de configurar o umask padrão para sftp é pam_umask .
Para aplicar seu umask personalizado apenas para usuários em um grupo específico e somente ao usar sftp , anexe /etc/pam.d/sshd com:
session [default=1 success=ignore] pam_succeed_if.so user notingroup <yourgroup>
session optional pam_umask.so umask=<umask>
A primeira regra informa ao pam para pular a próxima regra se o usuário não estiver no grupo <yourgroup> , ou seja, aplicar a próxima regra somente se o usuário estiver no grupo <yourgroup> . A segunda regra define o umask para <umask> .
Adendo : observe que os arquivos existentes movidos com mv mantêm suas permissões e propriedade originais. Você pode aplicar permissões padrão de umask e diretório setgid / ACLs copiando arquivos com cp -d .