[mdk-re] offtopic: troubles with python programming
cornet
=?iso-8859-1?q?cornet_=CE=C1_zmail=2Eru?=
Пн Апр 9 11:14:11 MSD 2001
Pavel Marakhovsky wrote:
>
> Привет!
>
> Сразу сорри за оффтопик, но спросить не у кого...
>
> Из книжки "Язык прграммирования Питон" списан пример веб сервера с возможность выполнения cgi
> скриптов:
>
> #hins.py
> #!/usr/bin/python
> from BaseHTTPServer import HTTPServer
> from CGIHTTPServer import CGIHTTPRequestHandler
> import os
>
> os.chdir("/home/unatine/hins/html")
> serv=HTTPServer(('',80),CGIHTTPRequestHandler)
>
> serv.serve_forever()
>
> в /home/unatine/hins/html лежит index.html и есть каталог cgi-bin в котором лежит скрипт:
>
> unatine на localhost ~/hins $ ls -l ./*/*
> -rw-r--r-- 1 unatine unatine 314 Апр 8 16:44 ./html/index.html
>
> ./html/cgi-bin:
> итого 4
> -rwxr-xr-x 1 unatine unatine 764 Апр 8 16:26 dict_cgi.py
>
> Ну то что сервер должен запускаться от рута это в принципе понятно (иначе ошибка создания сокета)
> index.html грузится, скрипт даже пытается выполниться, но говорит:
>
> localhost - - [08/Apr/2001 21:36:39] "POST /cgi-bin/dict_cgi.py HTTP/1.0" 200 -
> Traceback (most recent call last):
> File "/usr/lib/python2.0/CGIHTTPServer.py", line 211, in run_cgi
> os.execve(scriptfile, args, env)
> OSError: [Errno 13] Permission denied
>
> Какие права должны быть у скрипта и сервера, что бы нормально все выполнилось?
>
> Сейчас у сервера права:
> -rwxr-xr-x 1 unatine unatine 220 Апр 8 16:41 hins.py
>
> Людии.... помогите.... а то я уже совсем запутался...
> И еще... в книге написано что скрипты запускаются от nobody, но в python-docs по этому поводу ничего
> нет.
Приветствую!
В целях безопасности Апач работает с правами nobody, и соответственно
CGI с указанными Вами правами выполнять не имеет права :-), если только
nobody не является еще и членом группы unatine.
Так что лучше всего, ИМХО, для вашего CGI'шника поставить:
права -rwxr-xr--
оунер "любое_удобное_Вам_имя"
группа nobody
тогда Апач сможет его выполнить, но не сможет его редактировать, а права
на запись будут только у владельца, то есть у Вас :-))
Кстати, если CGI и вообще запускаемый файл не является скомпиленной
прогой, а есть скрипт, то очень желательно в заголовке указать имя
интерпретатора, тогда Апач будет знать что ему запустить для обработки
данного скрипта CGI.
Например, если это шелл скрипт, то бычно пишут в первой строке:
#!/ban/bash
или
#!/bin/sh
или имя любого другого нужного интепретатора.
Если это скрипт на перл, то пишут:
#!/usr/bin/perl
и таким образом сообщают Апачу, где искать обработчик, то есть сам perl.
Аналогично надо действовать и с Питоном.
Удачи :-))
> --
> WBW, Pavel
> e-mail: unatine на narod.ru
>
> "Books can be replaced; a prize student cannot. Be patient."
> ---Urza, to Barrin
>
--
******** FIRE & STEEL ********
Подробная информация о списке рассылки community