O processo que está criando os arquivos é o problema. Este processo / programa está sendo executado com um dado umask tal que quando ele cria arquivos, os arquivos recém-criados serão criados com um umask específico. Você tem basicamente 3 opções:
-
Modifique umask de processos
Dependendo do processo (servidor web), provavelmente não é o que você deseja fazer.
-
Adicione um grupo
A maneira mais amigável de fazer isso seria criar um grupo Unix (dados da web), novamente se for um conteúdo relacionado ao servidor web que todos precisam acessar. Em seguida, altere o grupo de nível superior dos diretórios em questão, para que eles sejam de propriedade / acessíveis por membros de dados da Web do grupo.
Em seguida, execute comandos semelhantes a estes para criar os dados da web do grupo de diretórios e forçar o grupo a ficar fixo, para que todos os novos arquivos / pastas criados sejam criados com esse grupo como padrão.
$ chgrp web-data /path/to/dir $ find /path/to/dir -type d -exec chmod g+xs {} +Por fim, adicione o usuário do servidor da web (apache) a esse grupo junto com outros que precisam acessar esse diretório.
-
use listas de controle de acesso (ACLs)
Você pode usar as ferramentas
setfaclegetfaclpara manipular as ACLs em um determinado diretório ou arquivo.Exemplo
Como root:
$ mkdir somedir $ getfacl somedir # file: somedir # owner: root # group: root user::rwx group::r-x other::r-xAgora adicione o acesso do usuário
samao diretório.$ setfacl -Rm u:sam:r-x,d:sam:r-x somedir getfacl somedir/ # file: somedir # owner: root # group: root user::rwx user:sam:r-x group::r-x mask::r-x other::r-x default:user::rwx default:user:sam:r-x default:group::r-x default:mask::r-x default:other::r-xAgora, todos os diretórios e / ou arquivos subseqüentes que forem criados terão seus diretórios configurados para que o usuário
sampossa acessá-los:$ mkdir anotherdir $ echo "hello world" > anotherfileConfirme as permissões:
$ getfacl another* # file: anotherdir # owner: root # group: root user::rwx user:sam:r-x group::r-x mask::r-x other::r-x default:user::rwx default:user:sam:r-x default:group::r-x default:mask::r-x default:other::r-x # file: anotherfile # owner: root # group: root user::rw- user:sam:r-x #effective:r-- group::r-x #effective:r-- mask::r-- other::r--Agora como usuário
sam:$ more anotherfile hello worldSe outro usuário precisar de acesso semelhante, simplesmente execute novamente o comando
setfaclusando o nome de usuário desse usuário no lugar desam.A abordagem acima pode ser modificada para que, em vez de um único usuário receber acesso, um grupo de usuários possa receber acesso.