[bash/cgi] Uprawnienia do wykonywania polecen systemowych

0

Witam wszystkich uzytkownikow forum :)

Pisze gdyz licze na pomoc w rozwiazaniu pewnego problemu. Do rzeczy - zaczalem bawic sie ostatnio w tworzenie systemu zarzadzania uzytkownikami systemu linuksowego z poziomu strony www. Z zalozenia ma on umozliwiac tworzenie kont na serwerze ludziom bez rozleglej wiedzy informatycznej w prosty i nieinwazyjny sposob. Serwer stoi na linuksie i korzysta z apacha.
Problem: Dodanie uzytkownika odbywa sie poprzez podanie odpowiednio spreparowanych danych uzyskanych z formularza na stronie do polecenia useradd. Do wykonania tego polecenia potrzebne sa uprawnienia roota, skrypty cgi wykonywane sa jednak jako uzytkownik wskazany w /etc/httpd/conf/httpd.conf standardowo 'apache' (badz 'nobody' - w zaleznosci od systemu). Ja poradzilem sobie z tym w nastepujacy sposob: dodalem usera apache do /etc/sudoers i pozwolilem wykonywac mu useradd bez autoryzacji wlasnym haslem, a nastepnie (poniewaz w logach apache wciaz wyskakiwal blad mowiacy ze nie mozna wykonac sudo bez posrednictwa tty) skomentowalem w tym samym pliku linie 'Defaults requiretty'. Od tego czasu skrypt dziala, a w logu apacha brak bledow. Zastanawia mnie jednak czy nie naraze w ten sposob bezpieczenstwa systemu, czy nie ma jakiejs innej metody na wykonywanie polecen systemowych z poziomu cgi... Byc moze powinienem patrzec raczej w strone perla czy czegokolwiek innego niz bash?
Bede bardzo wdzieczny za wszelkie uwagi i wskazowki.

Pozdrawiam
Igor

0

Sprawa jest bardzo prosta.

  1. Piszesz malutki skrypt/program, który odczytuje bez przerwy loginy kont, które mają być utworzone i uruchamia po wczytaniu każdego loginu polecenie adduser
  2. Uruchamiasz ten programik przy starcie systemu jako root (ma działać w tle)
  3. Serwer przy każdym poleceniu utworzenia konta komunikuje się z tym programikiem (przez jakiś plik lub FIFO) i zleca mu wykonanie akcji

Upewnij się tylko, że użytkownik może wprowadzać jedynie znaki a-z 0-9. Inaczej będzie mógł użyć czegoś podobnego do sql injection do wykonania dowolnej akcji w systemie jako root.

1 użytkowników online, w tym zalogowanych: 0, gości: 1