Existe alguma solução para o erro “Permission denied” de urllib2.urlopen?

1

Estou executando um código Python que usa urllib2.urlopen , que funciona bem quando executado como usuário, root (Linux).

No entanto, ele não funciona quando executado como usuário apache (estamos executando-o pela versão 1 do apache) - recebo este erro:

Traceback (most recent call last):
  File "/srv/www/vm/custom/ipn.py", line 118, in ?
    a = confirm_paypal(f, f1)
  File "/srv/www/vm/custom/ipn.py", line 47, in confirm_paypal
    response = urllib2.urlopen(PP_URL, params)
  File "/usr/lib64/python2.4/urllib2.py", line 130, in urlopen
    return _opener.open(url, data)
  File "/usr/lib64/python2.4/urllib2.py", line 358, in open
    response = self._open(req, data)
  File "/usr/lib64/python2.4/urllib2.py", line 376, in _open
    '_open', req)
  File "/usr/lib64/python2.4/urllib2.py", line 337, in _call_chain
    result = func(*args)
  File "/usr/lib64/python2.4/urllib2.py", line 1040, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/usr/lib64/python2.4/urllib2.py", line 1006, in do_open
    raise URLError(err)
URLError: <urlopen error (13, 'Permission denied')>

Existe uma maneira de conceder ao usuário, apache , acesso a essa função?

Atualização 1

Executando o Python 2.4.3 e o Apache 2.2.3

    
por Nick Bolton 15.09.2009 / 01:20

2 respostas

1

Acontece que o SELinux estava impedindo o apache de usar portas; depois de desligar o SELinux, o problema desapareceu.

    
por 25.10.2009 / 22:02
1

Não tenho certeza qual é a resposta, mas acho que tentaria solucionar esse problema.

Use su para mudar para o contexto de usuários do apache e, em seguida, execute o script python com strace. Eu acho que ele está tentando acessar um arquivo ou criar um arquivo temporário ou algo em algum lugar.

Se eu fosse fazer uma suposição, veria que parece que você está tentando usar https. Talvez esteja tentando carregar os certificados de CA e não tenha acesso?

Ele não é executado como o usuário do apache, seu script python será executado como um usuário não-root diferente?

    
por 15.09.2009 / 01:58