PermissionError: [Errno 13] Отказ в разрешении выдается при запуске скрипта в CGI, но не в bash - PullRequest
0 голосов
/ 01 июля 2019

Когда я получаю доступ к скрипту через CGI, возникает PermissionError, но когда я запускаю тот же скрипт с bash по SSH, он работает нормально.

Я попытался временно изменить файл sudoers, чтобы скриптвсегда будет запускаться от имени пользователя root.

import socket                                                                                                                                                             
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)

Когда скрипт запускается с bash, ошибка не выдается, даже когда я вхожу в систему как обычная учетная запись не суперпользователя, но когда я запускаю его, открывая веб-страницу, он пишет ошибку в / etc / httpd / logs / error_log.Ошибка:

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

1 Ответ

1 голос
/ 02 июля 2019

Это было ошибкой SELinux.Когда я устанавливаю 'httpd_can_network_connect' в 'on' с помощью setsebool, скрипт работает нормально.Обратите внимание: чтобы сделать изменение постоянным при перезагрузке, вы должны использовать ключ -P.

...