Eu tenho um diretório chamado data
. Então, eu estou executando um script com o ID do usuário 'robot'. O robô grava no data
diretório e atualiza os arquivos. A ideia é data
abrir para eu e o robô atualizarmos.
Então eu configurei a permissão e o grupo de proprietários como este
drwxrwxr-x 2 me robot-grp 4096 Jun 11 20:50 data
onde eu e o robô pertencemos ao 'robot-grp'. Altero a permissão e o grupo de proprietários recursivamente como o diretório pai.
Eu carrego regularmente novos arquivos no data
diretório usando rsync
. Infelizmente, novos arquivos enviados não herdam a permissão do diretório pai, como espero. Em vez disso, parece com isso
-rw-r--r-- 1 me users 6 Jun 11 20:50 new-file.txt
Quando o robô tenta atualizar new-file.txt
, ele falha devido à falta de permissão de arquivo.
Não tenho certeza se a configuração do umask ajuda. Em qualquer caso, os novos arquivos realmente não o seguem.
$ umask -S
u=rwx,g=rx,o=rx
Muitas vezes fico confuso com a permissão de arquivo Unix. Eu tenho mesmo um plano certo? Estou usando o Debian lenny.
fonte
sudo setfacl -Rm g:users:rwX,d:g:users:rwX /var/www/logs_or_something
. Teve problema com os testes PHPUnit. Após criar os arquivos de log dos testes em execução, o usuário do apachewww-data
não pôde gravá-los / lê-los.setfacl
página do manual ,-b
ou--remove-all
remove as ACLs estendidas.setfacl -Rm g:users:rwX,d:g:users:rwX data/
no final de/etc/fstab
?defaults
paradefaults,acl
.setfacl
é um comando que você deve executar a partir do terminal.data/
deve ser substituído pelo caminho para o diretório que você deseja alterar.Marcar um diretório setgid (
g+s
) fará com que novos arquivos herdem a propriedade do grupo no diretório, mas a-g
opção do rsync tentará substituir isso.fonte
Outras respostas se aplicam em um caso geral, mas como você menciona que o rsync é uma fonte do problema, pode ser necessário ajustar sua chamada.
Para começar, o
-a
sinalizador popular concede permissões de cópia ao rsync; use-r
istead-a
ou add-no-p
(para sincronização sem permissão) e-no-g
(para sincronização sem grupo). O rsync também suporta--chmod
sinalizador para alterar as permissões nos arquivos recém-criados.fonte
Seu umask está errado para as permissões que você deseja. Você deseja uma umask de 002. Atualmente, você tem uma umask de 022. Além disso, o comentário sobre como definir o diretório setgid está correto, mas não tenho certeza se a propriedade do grupo de arquivos é algo que você deseja alterar ou não.
Permissões de arquivo Unix são na verdade um modelo muito simples. Acho ACLs completamente me confundindo. :-)
fonte