Autor Tópico: Apache com problema de permissão chmod e usuario possivelmente errado  (Lida 14790 vezes)

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Olá galera, é o seguinte, estou com um problema, que esta fritando minha mente, eu nunca havia passado por isso antes.
Sem mais delongas...

apache instalado
php5 instalado

pasta do apache: /var/www/html

Esta ocorrendo o seguinte, criando-se uma pagina com nome teste.php e nessa pagina eu crio um simples script utilizando-se 'fopen' para criar um arquivo arquivo.txt, esse arquivo então é gerado com dono root e permissão 0644.
Certo, o problema é que se eu quiser gravar algo dentro desse arquivo, o linux não permite, pois o usuario do apache é www-data. Sendo assim o usuario www-data não tem permissão para escrever em um arquivo que foi criado pelo root com permissão 644.


Mas não basta eu dar um chmod 777 no arquivo.txt, pois isso foi apenas um exemplo, e é gerado varios e varios arquivos pelo site em questão, é não é possivel, eu ficar toda hora entrando no servidor somente para adicionar permissão 777, ou então para usar um chown www-data arquivo.txt.

Acredito que exista duas possiveis soluções:
1 - fazer com que o arquivo gerado receba como dono padrão www-data por padrão
2 - fazer com que o arquivo gerado, seja com permissão 777 por padrão

Obs: tudo que o apache faz, por exemplo um upload e uma imagem JPG, ele upa essa imagem como nomeImagem.jpg com permissão 644 e o dono root. sendo assim tambem não é possivel manipular essa imagem após seu upload.


Alguém, uma luz?

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #1 Online: 24 de MAR?O de 2015, 08:26 »
1. nunca, nunca, NUNCA dê permissões 777 - é um erro gravíssimo de segurança
2. você pode adicionar o usuário root no grupo www-data (uma das alternativas)
3. você pode adicionar seu próprio usuário no grupo www-data e torná-lo também propriertário da pasta /var/www/html (outra alternativa)

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #2 Online: 24 de MAR?O de 2015, 14:52 »
1. nunca, nunca, NUNCA dê permissões 777 - é um erro gravíssimo de segurança
2. você pode adicionar o usuário root no grupo www-data (uma das alternativas)
3. você pode adicionar seu próprio usuário no grupo www-data e torná-lo também propriertário da pasta /var/www/html (outra alternativa)

O apache, ao axecutar o script dentro do PHP, ele gera um arquivo TESTE.TXT com dono ROOT e com o grupo EMPRESA.
com chmod 644.
E mesmo que eu adicione o root no grupo www-data ele não vai conseguir editar o arquivo teste.txt.

Isso porque já testei e sei que não funciona!!!

Tem alguma outra solução?


(Eu preciso que o arquivo criado pelo apache, seja do usuario www-data ou então que seja criado com permissão 777)

Offline Rockwave

  • Usuário Ubuntu
  • *
  • Mensagens: 223
    • Ver perfil
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #3 Online: 25 de MAR?O de 2015, 17:08 »
Atualmente qual usuario e grupo são donos da pasta /var/www/html ?
Você ja pensou em usar o sgid? Antes de fazer isso pesquise sobre as implicações de segurança.

Offline Rockwave

  • Usuário Ubuntu
  • *
  • Mensagens: 223
    • Ver perfil
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #4 Online: 25 de MAR?O de 2015, 17:09 »
Outra possibilidade que talvez possa ser pensada é alterar a umask do usuario que cria os arquivos.

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #5 Online: 25 de MAR?O de 2015, 17:36 »
Atualmente qual usuario e grupo são donos da pasta /var/www/html ?
Você ja pensou em usar o sgid? Antes de fazer isso pesquise sobre as implicações de segurança.
Bom, ja tentei sim pra falar a verdade... com chmod 7770, ou 2770 ou 3770 na pasta html


Citar
Outra possibilidade que talvez possa ser pensada é alterar a umask do usuario que cria os arquivos.

Já tentei adicionar umask na pasta, como 'umask 077 html'
e nada resolveu... agora essa questão de inserir umask no usuario, eu não sabia que era possivel!!
Vou tentar fazer isso e retorno aqui o que obtive!!

Obrigado!

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #6 Online: 10 de Abril de 2015, 12:04 »
Olá _ubuntu_, será que vc não está executando esse script PHP na linha de comando como o root? Talvez seja nesse momento que o arquivo esteja sendo criado com o usuário errado.

Sobre o script, em si: foi você que o fez? Se foi, modifique-o para que não tente gravar no diretório corrente, e sim em um diretório onde seu usuário possa ter permissão de escrita, como "/var/lib/php/meuscript/".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Re: Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #7 Online: 01 de Julho de 2015, 08:28 »
Olá _ubuntu_, será que vc não está executando esse script PHP na linha de comando como o root? Talvez seja nesse momento que o arquivo esteja sendo criado com o usuário errado.

Sobre o script, em si: foi você que o fez? Se foi, modifique-o para que não tente gravar no diretório corrente, e sim em um diretório onde seu usuário possa ter permissão de escrita, como "/var/lib/php/meuscript/".
Esse script que me referi, é dentro do arquivo index.php
la dentro coloquei um 'fopen' apenas para abrir e ler um arquivo, caso esse arquivo não exista então a propria pagina php cria esse arquivo!
Mas, quando o index.php tenta criar esse arquivo, ele me retorna que foi criado o arquivo, e na segunda vez ele não deixa gravar nada dentro desse arquivo, pois esse arquivo é criado com o dono root e a permissão 755.

O que eu consigo entender disso é o seguinte, a hora que cria o arquivo, não sei pq cargas d'agua ele é gerado com as permissões citadas, porém na hora de adicionar dados dentro desse arquivo ele não aceita.

E o problema não é no codigo php, pois ao jogar esse mesmo codigo simples em um servidor pago online, ele funciona perfeitamente!
Estou usando o ubuntu 14.04.
Na versão 12.04 funcionava perfeitamente!

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #8 Online: 01 de Julho de 2015, 15:11 »
O diretório onde o arquivo está sendo criado é "suid"? Se for, isso explica pq a pasta cria os arquivos pertencendo ao root. Posta por favor a saída do comando abaixo.

sudo namei -om /var/www/html
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #9 Online: 02 de Julho de 2015, 15:53 »
O diretório onde o arquivo está sendo criado é "suid"? Se for, isso explica pq a pasta cria os arquivos pertencendo ao root. Posta por favor a saída do comando abaixo.

sudo namei -om /var/www/html


Código: [Selecionar]
root@sweb:/var/www# namei -om /var/www/html/
f: /var/www/html/
 drwxr-xr-x root     root     /
 drwxr-xr-x root     root     var
 drwxr-xr-x root     root     www
 drwsrws--- www-data prestige html
root@sweb:/var/www#

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #10 Online: 02 de Julho de 2015, 15:57 »
OK... o diretório "/var/www/html" está com SUID e SGID, mas não pro usuário root, e sim para "www-data:prestige".

Pode repetir o comando com o tal arquivo que está vindo com as permissões erradas?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #11 Online: 02 de Julho de 2015, 16:27 »
OK... o diretório "/var/www/html" está com SUID e SGID, mas não pro usuário root, e sim para "www-data:prestige".

Pode repetir o comando com o tal arquivo que está vindo com as permissões erradas?


O arquivo teste.php gera o arquivo teste.txt, porém na hora de tentar gravar em cima desse teste.txt novamente, o apache retorna o erro de acesso negado!

Código: [Selecionar]
root@sweb:/var/www/html# ls -lsa teste.php teste.txt
1024 -rw-rw-rw- 1 root prestige 272 Jul  2 16:22 teste.php
   0 -rw-r--r-- 1 root prestige   0 Jul  2 16:22 teste.txt

root@sweb:/var/www/html# namei -om teste.txt teste.php
f: teste.txt
 -rw-r--r-- root prestige teste.txt
f: teste.php
 -rw-rw-rw- root prestige teste.php


Citar
Warning: fopen(teste.txt): failed to open stream: Permission denied in /var/www/html/teste.php on line 4
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/teste.php on line 7

Se eu for la na pasta onde se encontra o teste.txt, e dar um chmod 777 teste.txt
isso meio que resolve o problema, mas na real é que as paginas criadas precisam criar e apagar varios arquivos, não só txt, como jpg, png, gif etc.. e não posso ficar dando comando chmod toda vez que o site criar um arquivo entende?


Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #12 Online: 02 de Julho de 2015, 16:53 »
Pois é, o estranho é que os arquivos deveriam estar sendo criados com o mesmo UID do dono da pasta. Mais estranho ainda teus processos do Apache estarem rodando como root. Confirma isso pra mim?

ps afx | egrep -i "apache|httpd"

Outra coisa, já te perguntei isso antes, vc não me respondeu (ou não lembro se respondeu). Já tentou criar esses arquivos em outra pasta? Não é difícil, basta passar o caminho completo na hora de abrir. Tipo, em vez de abrir "teste.txt", abrir "/tmp/teste.txt", por exemplo.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline _ubuntu_

  • Usuário Ubuntu
  • *
  • Mensagens: 304
    • Ver perfil
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #13 Online: 03 de Julho de 2015, 09:12 »
Pois é, o estranho é que os arquivos deveriam estar sendo criados com o mesmo UID do dono da pasta. Mais estranho ainda teus processos do Apache estarem rodando como root. Confirma isso pra mim?

ps afx | egrep -i "apache|httpd"

Outra coisa, já te perguntei isso antes, vc não me respondeu (ou não lembro se respondeu). Já tentou criar esses arquivos em outra pasta? Não é difícil, basta passar o caminho completo na hora de abrir. Tipo, em vez de abrir "teste.txt", abrir "/tmp/teste.txt", por exemplo.

Código: [Selecionar]
root@sweb:~# ps afx | egrep -i "apache|httpd"
 1399 pts/2    S+     0:00          \_ egrep --color=auto -i apache|httpd
 1065 ?        Ss     0:00 /usr/sbin/apache2 -k start
 1095 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1096 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1097 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1098 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1099 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1328 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1334 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1335 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1336 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 1337 ?        S      0:00  \_ /usr/sbin/apache2 -k start

Tem um detalhe que talvez eu esqueci de falar, é que o caminho /var/www/html é um segundo HD, ou seja é um sdb1 que fica em outro servidor e é mapeado nesse diretorio.
Mas acredito que isso não influencie em nada..
entretanto, vou 'desmontar' esse sdb1, e colocar essa pagina para rodar no /var/www/html no proprio sda1. entendeu? espero que sim =p

Mas como esse servidor fica em produção durante o expediente de comercio, vou fazer esse teste somente a noite, e posto aqui o resultado..


Thank you in advanced!



« Última modificação: 03 de Julho de 2015, 09:44 por _ubuntu_ »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Apache com problema de permissão chmod e usuario possivelmente errado
« Resposta #14 Online: 03 de Julho de 2015, 15:02 »
O comando que eu te passei não incluiu o UID do processo. :(
Executa de novo, dessa vez assim:

ps -ef | grep -i apache2

Citar
Tem um detalhe que talvez eu esqueci de falar, é que o caminho /var/www/html é um segundo HD, ou seja é um sdb1 que fica em outro servidor e é mapeado nesse diretorio.
Mas acredito que isso não influencie em nada..
Qual é o tipo de compartilhamento que vc usa pra esse mapeamento? NFS, CIFS/SMB, SSHFS, o que é?

Citar
entretanto, vou 'desmontar' esse sdb1, e colocar essa pagina para rodar no /var/www/html no proprio sda1. entendeu? espero que sim =p
Entendi sim, só espere um pouco antes de fazer.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D