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

2

Estou usando os espaços de trabalho SSH do Cloud9IDE e, por diversos motivos, somos obrigados a criar esse túnel SSH como root. Este não é realmente um problema, no entanto os arquivos e diretórios que estamos criando com ele realmente vivem sob uma pasta de usuário (neste caso, digamos que o usuário é "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, a navegação para esses arquivos no navegador retorna um 404, já que o servidor usa o usuário "foobar" para servir páginas.

Eu preciso de uma maneira de garantir que, mesmo que os arquivos tenham sido criados pelo usuário root, o usuário foobar deve ser capaz de lê-los e executá-los como se o 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 servisse mais a 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" é exibido corretamente, mas "dies.html" resulta em um erro 404 devido ao proprietário e ao grupo.

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

    
por Mike Dettmer 15.05.2015 / 18:32

3 respostas

0

Take your pick:

chown foobar:foobar *

chown foobar:foobar dies.html

chown foobar *

chown foobar dies.html

Então, para ter todos os arquivos criados por foobar, aqui está o que você precisa fazer:

execute crontab -e e insira isto:

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

Salve e deixe o cron assumir as permissões

    
por 15.05.2015 / 18:39
0

mude sua identidade de usuário para foobar depois de estabelecer o túnel ssh inserindo su foobar e digite a senha de foobar.

    
por 15.05.2015 / 20:23
0

Crie um novo grupo, diga devs e coloque todos os usuários que precisam de acesso de leitura / gravação aos seus arquivos nesse grupo. Em seguida, altere o grupo desse diretório para devs .

Com este comando:

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

Depois disso, defina setgid bit nesse diretório com este comando:

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

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

Se você quiser saber o que é setgid verifique este link .

    
por 18.05.2015 / 06:37