Esse cara Tom merece uma medalha por este post no ServerFault
Definir o ID do grupo da maneira como ele explica que funcionou!
Tentando expandir a resposta do @ Zoredache, enquanto eu faço isso eu mesmo:
Crie um novo grupo (www-pub) e adicione os usuários a esse grupo
groupadd www-pub usermod -a -G www-pub usera # must use -a to append to existing groups usermod -a -G www-pub userb groups usera ## display groups for user
Altere a propriedade de tudo em / var / www para root: www-pub
chown -R root:www-pub /var/www # -R for recursive
Altere as permissões de todas as pastas para 2775
chmod 2775 /var/www
2
= definir ID de grupo,7
=rwx
para proprietário (raiz),7
=rwx
para grupo (www-pub),5
=rx
para o mundo (incluindo apache www-data usuário)Defina o ID do grupo ( SETGID ) bit (2 ) faz com que o grupo (www-pub) seja copiado para todos os novos arquivos / pastas criados nessa pasta. De outros opções são SETUID (4) para copiar o id do usuário, e STICKY (1) que eu acho que só permite que o proprietário exclua arquivos.
Há uma opção
-R
recursiva, mas isso não discrimina entre arquivos e pastas, então você precisa use find , assim:find /var/www -type d -exec chmod 2775 {} +
Altere todos os arquivos para 0664
find /var/www -type f -exec chmod 0664 {} +
Altere a umask para seus usuários para 0002
O umask controla as permissões de criação de arquivo padrão, 0002 significa que os arquivos terão 664 e os diretórios 775. Configurando isto (por editando a linha
umask
na parte inferior de/etc/profile
no meu caso) significa que os arquivos criados por um usuário serão graváveis por outros usuários no www-group sem precisarchmod
deles.Teste tudo isso criando um arquivo e um diretório e verificando o proprietário, grupo e permissões com
ls -l
.Observação: você precisará efetuar logout / in para alterações em seus grupos efeito!