Como defino arquivos e diretórios criados como root para serem lidos e executáveis ​​como outro usuário?

Como defino arquivos e diretórios criados como root para serem lidos e executáveis ​​como outro usuário?

Estou usando os espaços de trabalho SSH do Cloud9IDE e, por vários motivos, somos obrigados a criar esse túnel SSH como root. Isso não é realmente um problema, no entanto, os arquivos e diretórios que estamos criando com ele, na verdade, residem em uma pasta de usuário (neste caso, digamos que o usuário seja "foobar", então os arquivos estão sendo criados em /home/foobar/public_html/ dev).

O problema é que como o usuário “root” está realmente criando os arquivos, navegar até esses arquivos no navegador retorna 404, já que o servidor usa o usuário “foobar” para servir páginas.

Preciso de uma maneira de garantir que, mesmo que os arquivos tenham sido criados pelo usuário root, o usuário foobar seja capaz de lê-los e executá-los como se esse usuário os tivesse criado.

Eu tentei usar setfacl -Rdm com um grupo que inclui root e foobar, e isso acabou fazendo com que foobar não pudesse mais servir nenhum arquivo em seu diretório.

Por exemplo:

-rw-r--r--  1 foobar  foobar    125 May 15 11:26 die.html
-rw-r--r--  1 root    root      127 May 15 12:20 dies.html

Nesse caso, o arquivo “die.html” é veiculado corretamente, mas “dies.html” resulta em 404 devido ao proprietário e ao grupo.

Alguma idéia de como resolver isso? Para reiterar: eu precisaria que isso acontecesse para todos os arquivos futuros, não apenas para os arquivos que existem atualmente.

Responder1

Faça sua escolha:

chown foobar:foobar *

chown foobar:foobar dies.html

chown foobar *

chown foobar dies.html

Então, para que todos os arquivos criados sejam de propriedade do foobar, eis o que você precisa fazer:

execute crontab -ee insira isto:

* * * * * while true; do chown foobar:foobar -R /home/foobar/public_html/dev/* & sleep 1; done

Salve-o e deixe o cron assumir as permissões

Responder2

altere sua identidade de usuário para foobar após estabelecer o túnel ssh digitando su foobare digitando a senha de foobar.

Responder3

Crie um novo grupo, digadesenvolvedores e coloque todos os usuários que precisam de acesso de leitura/gravação aos seus arquivos nesse grupo. E então mude o grupo desse diretório paradesenvolvedores.

Com este comando:

chgrp -R devs /home/foobar/public_html/dev

Depois desse conjuntosetgidbit nesse diretório com este comando:

chmod -R g+s /home/foobar/public_html/dev

A partir deste ponto, todos os arquivos criados nesse diretório pertencerão ao grupodesenvolvedorese todos os usuários desse grupo terão acesso de leitura/gravação ao fies (depende das permissões).

Se você quiser saber o que é setgidverifique este link.

informação relacionada