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
setfacl
egetfacl
para 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-x
Agora adicione o acesso do usuário
sam
ao 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-x
Agora, todos os diretórios e / ou arquivos subseqüentes que forem criados terão seus diretórios configurados para que o usuário
sam
possa acessá-los:$ mkdir anotherdir $ echo "hello world" > anotherfile
Confirme 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 world
Se outro usuário precisar de acesso semelhante, simplesmente execute novamente o comando
setfacl
usando 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.