[mdk-re] offtopic: troubles with python programming

Ivan Zakharyaschev =?iso-8859-1?q?imz_=CE=C1_linux=2Eru=2Enet?=
Пн Апр 9 22:24:33 MSD 2001


	Hello, Pavel!

On Mon, 9 Apr 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
> > >
> > > Какие права должны быть у скрипта и сервера, что бы нормально все
> выполнилось?

На совет (где-то ниже) по поводу вставки #!/usr/bin/python <ключи> в
начало dict_cgi.py стоит обратить внимание. В качестве параметра для
execve, судя по всему, подается этот скрипт. А в начале скриптов такая
строчка необходима -- man 2 execve. Вызов execve, про который я говорю,
как раз находится в File "/usr/lib/python2.0/CGIHTTPServer.py", line 211.

Best regards,
Ivan.

> > >
> > > Сейчас у сервера права:
> > > -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.
> > Аналогично надо действовать и с Питоном.
> >
> > Удачи :-))
>
> ААААААААААААА........ Люди!!! Этот скрипт и есть сервак с возможность
> запуска cgi-скриптов.
> #hins.py - это я на всякий случай написал имя файла, в файле его нет:)
> Этот сервак скрипт находит,
> но не может запустить выдавая выше приведенное...
>
> Апач то все нормально запускает, но мне такой бегемот в моей маленькой
> квартирке не нужен, вот я и
> пытаюсь что-нибудь маленькое для себя написать.
>
>

-- 
Hi! I'm a .signature virus. Add me into your ~/.signature,
please. :-)





Подробная информация о списке рассылки community