PermissionError: [Errno 13] A permissão negada é lançada ao iniciar o script no CGI, mas não no bash

PermissionError: [Errno 13] A permissão negada é lançada ao iniciar o script no CGI, mas não no bash

Tenho um script python no meu servidor HTTP (CentOS 7) responsável por responder ao navegador do cliente, funciona bem no bash, mas quando tento acessá-lo via cgi, apenas gera um erro. Funciona bem no Ubuntu (via HTTP e Shell). O script é:

import socket
HOST = '127.0.0.1'
PORT = 4345

print("Content-type: text/html; charset=utf-8\n\n")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
query = 'foobar'
sock.sendall(bytes(query, 'utf-8'))
buffer = sock.recv(1024)
responce = str(buffer, "UTF-8")
print(responce)

O erro que estou recebendo ao executar o script via CGI é:

PermissionError: [Errno 13] Permission denied
Traceback (most recent call last):
File "/var/www/cgi-bin/script.py", line 8, in <module>
   sock.connect((HOST, PORT))
PermissionError: [Errno 13] Permission denied

A saída de 'getsebool -a | grep httpd'é:

httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off

Responder1

A solução foi permitir que o httpd se conectasse à rede. Acabei de configurar httpd_can_network_connectwith one setseboolcomeçou a funcionar. Observe que para tornar a solução permanente, você também precisa usar o -Pswitch.

informação relacionada