![]() |
![]() |
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) thx z gory (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
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. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 15:36 |