Права на выполнение должны быть добавлены при загрузке Python в Apache? - PullRequest
0 голосов
/ 28 декабря 2018

Я использую сервер Ubuntu 16.04, Python 2.7.12 и Apache 2.4.18 в дроплете DigitalOcean.

Я загрузил index.py в корневой веб-каталог.Содержимое сценария выглядит следующим образом:

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Turn on debug mode.
import cgitb
import platform
cgitb.enable()

# Print necessary headers.
print "Content-Type: text/html\n"
print "<html><body>Python Version: %s</body></html>" % (platform.python_version())

Если я установлю index.py на 644 (без прав выполнения), сценарий вернет 500 Internal Server Error.В журнале сказано:

[пт 28 декабря 04: 05: 18.035946 2018] [cgi: ошибка] [pid 29045] [клиент 202.75.86.173:54912] Конец вывода сценария перед заголовками: индекс.py

Из другого ответа предлагается добавить права доступа через chmod +x index.py:

-rwxr-xr-x 1 root www-data  254 Dec 28 04:05 index.py

После добавления прав выполнения скрипт Python можно запустить безпроблема.

  1. Я правильно делаю?
  2. Приведет ли это к проблеме безопасности ?

Вот конфигурация сайта Apache:

<VirtualHost *:80>
    ServerName abc.example.com
    DocumentRoot /var/www/vhosts/abc.example.com

    <Directory /var/www/vhosts/abc.example.com/>
        Options -Indexes
        Options +ExecCGI
        DirectoryIndex index.py
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    AddHandler cgi-script .py

    ErrorLog ${APACHE_LOG_DIR}/abc-apache2.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access-logfile.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =abc.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

ОБНОВЛЕНИЕ :

Этот вопрос не об ошибке, с которой я столкнулся, как я уже упоминал в вопросе, мой скрипт уже работает.Я просто беспокоюсь о безопасности .Короче, не дубликат.

1 Ответ

0 голосов
/ 29 декабря 2018

1. Да, вы все делаете правильно.

Вы сказали Apache выполнить файлы .py как cgi-скрипт.Это означает, что apache «выполнит» ваш файл index.py, если он авторизован.Затем вы должны предоставить apache право на выполнение вашего файла python.

В вашем файле index.py есть shebang , указывающий apache, какой интерпретатор использовать для выполнения этого файла.

2. В вашем случае вы можете установить хороший уровень безопасности, подобный следующему:

chown www-data:www-data index.py
chmod 550 index.py

Тогда root и только root могут изменять или удалять файл.И только пользователь apache и группа apache могут прочитать или выполнить скрипт (предположим, что ваш пользователь / группа apache - www-data).

...