Найти - Пользователи
Полная версия: как запустить CGI скрипт под конкретньім пользователем
Начало » Python для новичков » как запустить CGI скрипт под конкретньім пользователем
1
wired
собсно сабж
необходимо скриптом прочитать файл (работает)
внести изменения(работает)
и сохранить(не хватает прав)
как тут можно вьікрутиться?
раздать на директорию/файл “777” не прокатит.
terabayt
chown
wired
єто не совсем то.
cgi скрипт запускается от nobody
т.е. может только читать, что есть, или создавать свое.
пока копаю в сторону sudo
например:
сохраняю исправления во временном файле
потом под sudo запускаю вьіполение на bash скрипта копирования временного файла куда надо.

но как-то єто грубо
py.user.next
Опиши сервер, права на файлах, права на директориях, какой файл сохраняется.

wired
cgi скрипт запускается от nobody
nobody попадает только под other. Так что либо там не nobody, либо там всё для всех открыто.
wired
Сервер простейший:
# -*- coding: utf-8 -*-
from CGIHTTPServer import CGIHTTPRequestHandler
from BaseHTTPServer import HTTPServer
server_address = ("", 8000)
server = HTTPServer(server_address, CGIHTTPRequestHandler) 
print "started httpserver..." 
server.serve_forever()
         
на cgi-bin раздал права на other
скрипт из оттуда запускается под nobody как и описано в документации и как я успеваю заметить в top
скриптом читаю практически любой файл, и могу сохранить в папке на которую тоже розданьі права на всех.

в принципе єто будет(есть) домашняя железяка на BeagleBoneBlack но я хотел сделать возможность редактировать некоторьіе настройки не залезая туда по ssh, а используя веб интерфейс
.
py.user.next
wired
скрипт из оттуда запускается под nobody как и описано в документации
Ну, там это встроенное поведение, которое не меняется. Этот сервер не следует использовать, так как он вообще не защищён.

Lib/http/server.py
"""HTTP server classes.

Note: BaseHTTPRequestHandler doesn't implement any HTTP request; see
SimpleHTTPRequestHandler for simple implementations of GET, HEAD and POST,
and CGIHTTPRequestHandler for CGI scripts.

It does, however, optionally implement HTTP/1.1 persistent connections,
as of version 0.3.

Notes on CGIHTTPRequestHandler
------------------------------

This class implements GET and POST requests to cgi-bin scripts.

If the os.fork() function is not present (e.g. on Windows),
subprocess.Popen() is used as a fallback, with slightly altered semantics.

In all cases, the implementation is intentionally naive -- all
requests are executed synchronously.

SECURITY WARNING: DON'T USE THIS CODE UNLESS YOU ARE INSIDE A FIREWALL
-- it may execute arbitrary Python code or external programs.

Note that status code 200 is sent prior to execution of a CGI script, so
scripts cannot send other status codes such as 302 (redirect).

XXX To do:

- log requests even later (to capture byte count)
- log user-agent header and other interesting goodies
- send error log to separate file
"""
wired
py.user.next
Этот сервер не следует использовать, так как он вообще не защищён.
та то понятно, но поднимать что-то серьезное на той плате, где и так ресурсов не очень, не хотелось.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB