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
.