Como fazer com que todos os novos arquivos no diretório sejam de propriedade do usuário em particular?

4

Eu quero que todos os arquivos no diretório /var/www sejam de propriedade do nginx.devel. Eu executei chmod uma vez e atualizei esses arquivos usando rsync .

Mas, se eu criar um novo arquivo e, em seguida, rsync , ele será de propriedade de user.user e eu preciso executar chmod com sudo privileges nele.

    
por lexsys 13.08.2009 / 11:26

1 resposta

4

Você não pode. Bem, não automaticamente de qualquer maneira. Você pode , no entanto, impor permissões de grupo, que com um planejamento cuidadoso e umask apropriada, podem resolver a maioria dos problemas de permissões. Se você definir o bit setgid no diretório /var/www , ele garantirá que todos os novos arquivos criados sob ele sejam de propriedade do grupo devel .

Observe que, dependendo de quais sinalizadores você usa, rsync pode substituir esse comportamento e replicar a propriedade dos arquivos de origem.

Para definir o bit setgid:

$ ls -ld test
drwxr-xr-x 2 insyte insyte 4096 2009-08-13 04:39 test
$ chmod g+s test
$ ls -ld test
drwxr-sr-x 2 insyte insyte 4096 2009-08-13 04:39 test

Demonstração do comportamento:

$ id
uid=1000(insyte) gid=1000(insyte) groups=4(adm),20(dialout),24(cdrom)
$ ls -ld test
drwxr-xr-x 2 insyte backup 4096 2009-08-13 04:39 test
$ touch test/file1
$ ls -l test
total 0
-rw-r--r-- 1 insyte insyte 0 2009-08-13 04:43 file1
$ sudo chmod g+s test
$ ls -ld test
drwxr-sr-x 2 insyte backup 4096 2009-08-13 04:43 test
$ touch test/file2
$ ls -l test
total 0
-rw-r--r-- 1 insyte insyte 0 2009-08-13 04:43 file1
-rw-r--r-- 1 insyte backup 0 2009-08-13 04:44 file2

O efeito também é recursivo; qualquer novo diretório criado depois que você definir o bit setgid também terá o bit setgid definido.

Uma alternativa a essa abordagem, é claro, seria uma tarefa cron executada a cada minuto e corrige as permissões nos arquivos em /var/www/ .

    
por 13.08.2009 / 11:46