Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [Linux+PHP] Skrypt dodajacy konto w systemie !
Yacho
post 11.11.2003, 03:06:05
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


Dostalem ostatnio zadanie napisania skryptu zakladajacego nowego uzytkownika w systemie (linux debian)
utworzylem sobie grupe z takimi prawami jakie ma miec nowy user utworzylem skel ale nadal nie wiem jak koncepcyjnie to rozwiazac...
komenda adduser prosi uzytkownika o podanie kilku danych z klwiatury - nie wszystkie mozna podac z linii komend - wiec jak rozwiazc etn problem na poziomie php (da sie wogole?)

ogolnie jestem tez w polu jesli chodzi o zabezpieczenia - nie zabardzo rozsadne wydaje sie nadanie praw roota skryptowi !

Kesetm zupelnie w lesie i nie mam pomyslu - z linuxem mam kontakt od tyogdnia i wydaje mi sie calkiem fajny - z php nieco dluzej ale jak to ze soba polaczyc nie wiem wogole....

Prosze was o wskazanie jakiejs drogi - na pomoc w r4ealizacji przyjdzie czas pozniej (choc oby nie smile.gif )

thx z gory smile.gif
Go to the top of the page
+Quote Post
Bakus
post 11.11.2003, 05:03:41
Post #2


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Straszliwie zamieszałeś (literówki), ale ja bym zaczął pisanie takiego skryptu od poznania komend jakie dodają userów, uprawnień systemowych jakie są wymagane, itd.

Jeżeli chodzi o bezpieczeństwo to zrób ten skrypt przez SSL, z jakąś wyrafinowaną kontrolą zakładanych kont i najlepiej (jeżeli założenia pracy tego nie definiują) konta mogą byś zakładane przez skrypt bopiero po zaakceptowaniu ich przez admina...

Chyba zbytno nie zagmatwałem odpowiedzi biggrin.gif


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Volt3r
post 11.11.2003, 12:58:14
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 10.11.2003

Ostrzeżenie: (0%)
-----


Za duzo ci nie pomoge, bo slabo znam php ale tylko ci podpowiem ze adduser to jest skrypt w ktorym trzeba odpowiadac na pytania. A domyslna komenda do dodawania kont jest useradd i do niej podajesz parametry takie jak login, haslo, katalog domowy etc. Jeszcze co do wykonywania z prawami roota to fakt nie jest dobry pomysl, ale istnieje cos takiego jak suid - daje limitowane przywileje roota jakiemus userowi.
Go to the top of the page
+Quote Post
Bakus
post 11.11.2003, 13:22:54
Post #4


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Na linuxie się zbytnio nieznam, ale chyba można utworzyć użytkownika - dla przykładu: "phpuser", który miał by możliwość wykonywania skryptów w obrębie katalogów userów i katalogu serwera i miałby prawo do wykonywania komendy "useradd"

Będzie to chyba najlepsze rozwiązanie problemu (a przynajmniej jedno z lepszych).

I tak możesz się Yacho cieszyć - pod łindołzem to zadanie nie do wykonania (względy bezpieczeństwa).


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Yacho
post 11.11.2003, 16:08:57
Post #5





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


Volt3r : dzieki - to ulatwi duzo bo juz myslalem ze bede musial uczyc sie basdha i pisac skrypt ktory przezuci mi adduser na linie komend - 1 problem rozwiazany smile.gif

wlasnie teraz sobie uswiadomilem ze raczej konieczna jest akceptacja takich kont przez admina - nic to jak dostane szczegoly projektu to bede sie meczyl dalej - tak czy siak dzieki za podpowiedzi i zachecam do dalszego pisania bo wydaje mi sie ze temat ciekawy smile.gif

PS. sorry za literowki jak sie pisze o 4 nad ranem to tak jest :/
Go to the top of the page
+Quote Post
adwol
post 12.11.2003, 02:06:09
Post #6





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Uruchamianie z WWW programu suidowego nie jest najlepszym pomysłem, ale są lepsze rozwiązania. I znów kłania się tu technologia bottom halves. Załóż sobie w jakimś SQLu najprostszą bazę z jedną tabelą z polami id, login, hasło, opis, status (plus ew. inne jeśli Ci są potrzebne). W skrypcie na WWW wsadzaj do bazy dane usera do założenia. Drugi skrypt uruchamiaj z rootowego crona np. co godzinę, wyciagaj w nim dane z bazy, sprawdzaj czy są poprawne i zakładaj userów (szkielet rozwiązania dla MySQLa):
[php:1:49dd6832ef]<?php
$res = mysql_query("select id, login, haslo, opis from uzytkownicy where status=0");
while ($row = mysql_fetch_array($res))
{
# tutaj sprawdzanie poprawnosci danych
$login = escapeshellarg($row['login']);
$haslo = escapeshellarg($row['haslo']);
$opis = escapeshellarg($row['opis']);
system("/usr/sbin/useradd -p $haslo -m -c $opis $login", $ret);
$status = ($ret == 0) ? 1 : 2;
mysql_query("update uzytkownicy set status='$status' where id='" . $row['id'] . "'");
}
?>[/php:1:49dd6832ef]
Jak to jest debian to jest tam takie narzędzie jak useradd (jak w większości linuksów). Działa ono wsadowo (jak to już zauważył Volt3r) i nie wymaga interakcji użytkownika. Poczytaj manual od niego to dowiesz się więcej.
Pole status jest po to byś później mógł sprawdzić którzy uzytkownicy zostali założeni poprawnie, a którzy nie.
W miejscu sprawdzania danych możesz sprawdzać np. czy opis nie jest za długi, albo czy nazwa użytkownika nie zawiera nieprawidłowych znaków, ale powinien to za Ciebie już zrobić useradd.
Możliwości jest mnóstwo. winksmiley.jpg
Go to the top of the page
+Quote Post
Yacho
post 12.11.2003, 02:37:43
Post #7





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


adwol: wlasnie myslalem o czyms takim smile.gif
z tym ze myslalem ze lepiej by bylo zeobic 2 tabele - pierwsza zawierajaca userow dodanych 2ga userow oczekujacych na dodanie - ale widac twoj sposob jest lepszy dzieki temu baza mniejsza i wydajniejsza na tym szkielecie ebde mogl obsluzyc wiecej klas uzytkowinkow i wogole - fajny pomysl i dosc prosty nawet smile.gif))

tylko czy odpalanie tego skryptu ktory by dodawal w cronie jest bezpieczne ? czy takich rozwiazan uzywa sie powszechnie ? ;]

Pomyslalem tez ze ten skrypt moglby zostawiac po soobie loga to by ulatwilo wylapywanie abuserstwa winksmiley.jpg
Go to the top of the page
+Quote Post
adwol
post 12.11.2003, 02:44:44
Post #8





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
tylko czy odpalanie tego skryptu ktory by dodawal w cronie jest bezpieczne ? czy takich rozwiazan uzywa sie powszechnie ? ;]

Ja tak robie i wiem, że jeszcze kilka osób które znam również. Jak widziałem dyskusje na różnych listach i grupach na temat poprawności takiego rozwiązania to nie było jakichś krytycznych uwag poza oczywistymi, że należy sprawdzać wszelkie możliwe przypadki, zabezpieczyć dostęp do bazy, itp., słowem nic poza to co normalnie powinno się stosować przy pisaniu bezpiecznych programów.
Cytat
Pomyslalem tez ze ten skrypt moglby zostawiac po soobie loga to by ulatwilo wylapywanie abuserstwa winksmiley.jpg

Logiem jest w tym wypadku sama baza. Zauważ, że nie kasujemy nic tylko conajwyżej zmieniamy status z nowego (0) na założony (1) lub problematyczny (2).
Go to the top of the page
+Quote Post
Bakus
post 12.11.2003, 04:49:51
Post #9


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Do całokształtu można jeszcze dorzucić jakiś systemik, który wykluczał by możliwość zakładania kont typu admin, administrator, postmaster itp.
Wyobraśmy sobie sytuację w której jakiś ważniaczek zakłada sobie konto admin i bez problemu - posługując się tym kontem - wyciąga od innych użytkowników hasła i inne prywatne wiadomości...

Nie wiem, czy dodatkowo, użyszkodniki w systemie będą posiadały pocztę, ale takie zabezpieczenie by się przydało... nigdy nie wiadomo, co oszustowi do głowy strzeli winksmiley.jpg

Trzymajmy się zasady potrojonego bezpieczeństwa, a będziemy żyć długo bez siwych włosów... smile.gif


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Yacho
post 12.11.2003, 20:57:52
Post #10





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


Bakus :
Co do tego to nie ma problemu zupelnie

Skrypty ma obslugiwac maly hosting - powiedzmy 3 typy kont :

- mail
-mail +www
- mail + www + ssh

w formularzu dajesz Pole option z trzema typami konyt.
W systemie tworzysz 3 grupy z odpowiednimi uprawnieniami dla 3 typow kont. Kazda z trzech grup otrzymuje osobny GID (numer identyfikacyjny grupy uzytkownika)
kazdej pozycji z drop-down menu przypisujesz odpowiedni numer grupy - w ten sposob mozesz zakladac bezpiecznie tylko takie konto na jakie admin pozwoli

Mysle tez nad problemem zmiany rodzaju konta dla uzytkownika ale to juz sie zalatwi bo podstawowa koncepcja jest - jutro omawiam z kolega szczegoly i zabieram sie do pracy - znajac moje bledy skladniowe bedziecie mogli caly przebieg projektu zaobserwowac w php poczatkujacy smile.gif
Go to the top of the page
+Quote Post
Bakus
post 12.11.2003, 21:24:28
Post #11


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Nie bądź taki skromny smile.gif
Apropo UID - nie zmienia to faktu, że ktoś jako postmaster@twoj.system.mini.hostingowy.pl może wysyłać do innych prośby o hasła - z przyczyn "administracyjnych"...


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Yacho
post 18.11.2003, 04:36:41
Post #12





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


dlatego rzeczy typu postmaster admin da sie do banned przeciez adwol nawet napisal o sprawdzaniu poprawnosci danych winksmiley.jpg
Go to the top of the page
+Quote Post
spenalzo
post 28.11.2003, 13:32:41
Post #13





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A ja odświeże temat bo mam za zadanie zrobić zakładanie kont pocztowych w ramach konta na stronie WWW. Teraz pojawiają się następujące ptania:
1. rozumiem, że hasło nie może być zakodowane?
2. o co musze poprosić admina serwera, żeby można było zakładać skrzynki (pewnie czy jest serwer pocztowy:) ) - tzn jakie uprawnienia musiałby dostać ten skrypt, żeby móc dodawać użytkowników?
3. czy ten kod podany przez adwola nada się?


--------------------

Go to the top of the page
+Quote Post
rachwal
post 28.11.2003, 16:34:55
Post #14





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 29.08.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
[php:1:01611f05f8]<?php
$res = mysql_query("select id, login, haslo, opis from uzytkownicy where status=0");
while ($row = mysql_fetch_array($res))
{
# tutaj sprawdzanie poprawnosci danych
 $login = escapeshellarg($row['login']);
 $haslo = escapeshellarg($row['haslo']);
 $opis = escapeshellarg($row['opis']);
 system("/usr/sbin/useradd -p $haslo -m -c $opis $login", $ret);
 $status = ($ret == 0) ? 1 : 2;
 mysql_query("update uzytkownicy set status='$status' where id='" . $row['id'] . "'");
}
?>[/php:1:01611f05f8]


Ostatnio takze mialem podobny problem -- obawiam sie ze myk z -p $haslo nie przejdzie jesli haslo nie jest encryptowane (w sensie jest plain-textem).


--------------------
pozd.
Go to the top of the page
+Quote Post
adwol
post 28.11.2003, 17:22:47
Post #15





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
Ostatnio takze mialem podobny problem -- obawiam sie ze myk z -p $haslo nie przejdzie jesli haslo nie jest encryptowane (w sensie jest plain-textem).

Dobre spostrzeżenie. Zamiast:
[php:1:908ba32c08]<?php
$haslo = escapeshellarg($row['haslo']);
?>[/php:1:908ba32c08]
powinno być:
[php:1:908ba32c08]<?php
$haslo = escapeshellarg(crypt($row['haslo']));
?>[/php:1:908ba32c08]
Go to the top of the page
+Quote Post
adwol
post 28.11.2003, 17:32:46
Post #16





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
1. rozumiem, że hasło nie może być zakodowane?

Niekoniecznie. To zależy jak chcesz to hasło weryfikować.
Cytat
2. o co musze poprosić admina serwera, żeby można było zakładać skrzynki (pewnie czy jest serwer pocztowy:) ) - tzn jakie uprawnienia musiałby dostać ten skrypt, żeby móc dodawać użytkowników?

Ci userzy mają być jednocześnie systemowi czy tylko pocztowi? A jeśli tylko pocztowi to gdzie są trzymani (plik tekstowy, SQL, LDAP)? Jeśli będą jednocześnie systemowymi to musisz mieć uprawnienia administratora, jeśli nie, to musisz mieć możliwość zapisu tam gdzie są trzymani.
Cytat
3. czy ten kod podany przez adwola nada się?

W oryginalnej formie, prawdopodobnie nie. Ten skrypt zakłada zwykłego systemowego użytkownika pod linuksem, więc jeśli będziesz ich miał gdzie indziej to na nic Ci sie nie przyda. Poza tym nie robi nic więcej co pewnie będziesz potrzebował (ustawienie aliasów, skrzynki, itp).
Go to the top of the page
+Quote Post
spenalzo
post 28.11.2003, 20:27:04
Post #17





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Cytat
1. rozumiem, że hasło nie może być zakodowane?

Niekoniecznie. To zależy jak chcesz to hasło weryfikować.

Mam je akodowane poprzez MD5, ale konto mogloby być zakłądane przy rejestracji.

Cytat
Ci userzy mają być jednocześnie systemowi czy tylko pocztowi? A jeśli tylko pocztowi to gdzie są trzymani (plik tekstowy, SQL, LDAP)? Jeśli będą jednocześnie systemowymi to musisz mieć uprawnienia administratora, jeśli nie, to musisz mieć możliwość zapisu tam gdzie są trzymani.

Dane są trzymane w bazie mysql, konto to ma być jedynie zwykłe konto pocztowe.


--------------------

Go to the top of the page
+Quote Post
adwol
post 28.11.2003, 22:09:33
Post #18





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
Dane są trzymane w bazie mysql, konto to ma być jedynie zwykłe konto pocztowe.

No to założenie konta jest równe zrobieniu wpisu w bazie. Nie potrzebujesz więc uruchamiania żadnych programów systemowych ani uprawnień ponad te wystarczające do zapisu w bazie.

Co do kodowania haseł to zapytaj administratora jakiego formatu wymaga podsystem pocztowy.
Go to the top of the page
+Quote Post
spenalzo
post 28.11.2003, 22:49:53
Post #19





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
No to założenie konta jest równe zrobieniu wpisu w bazie. Nie potrzebujesz więc uruchamiania żadnych programów systemowych ani uprawnień ponad te wystarczające do zapisu w bazie.

To znaczy o co mam zapytać administratora - czy może mu wysłąć (strukture bazy?) questionmark.gif Teraz mnie troche zadziwiłeś 8O winksmiley.jpg


--------------------

Go to the top of the page
+Quote Post
adwol
post 29.11.2003, 00:17:43
Post #20





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
To znaczy o co mam zapytać administratora - czy może mu wysłąć (strukture bazy?) questionmark.gif Teraz mnie troche zadziwiłeś  8O winksmiley.jpg

A o co Ty w ogóle pytasz? Bo tak skaczesz między pojęciami i nie sprecyzowałeś co chcesz zrobić.

Piszesz:
Cytat
1. rozumiem, że hasło nie może być zakodowane?

Ale jakie hasło? Do czego? Gdzie jest przechowywane? Czy baza w której jest to hasło jest wykorzystywana do czegoś jeszcze? Jak będziesz je weryfikował?

Zadajesz nieprecyzyjne pytania to dostajesz nieprecyzyjne odpowiedzi.

Napisz od początku i dokładnie co już jest i co chcesz zrobić.
Odpowiedz sobie na pytania:
:arrow: co Ty w ogóle masz zrobić (zarządzanie użytkownikami systemu pocztowego?)
:arrow: gdzie ma być baza użytkowników i kto decyduje o jej formie (Ty czy administrator)
:arrow: czy dorabiasz coś do istniejącego rozwiązania czy tworzysz od zera
:arrow: jeśli rozszerzasz coś istniejącego to co to jest i jak funkcjonuje
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:31