Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana hasła usera przez skrypt PHP
Forum PHP.pl > Forum > PHP
jarecky
Mam takie pytanko. Muszę stworzyć skrypt php, który będzie zmieniał hasło usera na serwerze linuksowym. Proszę o pomoc. Czy to można zrobić przez odczyt pliku /etc/shadow a następnie wyszukanie konkretnego usera w tym pliku, dalej odkodowanie hasła i zapis w tym miejscu nowego hasła? W jaki sposób to zrobić? A może jakoś za pomocą funkcji system()? Z góry dzięki. Pozdrawiam.
dr_bonzo
poczytaj
man passwd
docent
hmm jesli mowa o zmianie hasla tylko do poczty to proponuje postfixa + sql - problem z glowy


jesli jednak nie to coz - dodac najlepiej nowego uzytkownka, jemu dac sudo na passwd [uzytkownik] i tyle. inaczej tego sobie nie wyobrazam jakos tongue.gif moze zamiast passwd ypasswd (ahh - tenze uzytkownik - z niego wlasnie odpalac nam indianca przyjdzie winksmiley.jpg zmien z nobody na http czy cos tongue.gif przestudiuj sobie dokladnie sudoers)
jarecky
Dokładnie chodzi o pocztę. Tylko że to jest sendmail. Użytkownicy muszą mieć możliwość zmiany hasła do poczty z poziomu strony www.
docent
sendmail nie ma tutaj nic do gadania. zainstaluj sobie jakiegos MTA (postfix, exim). sendmail jak sama nazwa wskazuje sluzy do wysylania poczty.

http://linux.zsp2.edu.pl/ - tutaj znajduje sie doskonaly tutorial na temat jak postawic postfixa wraz z takimi dodatkami jak skaner antywirusowy, filtr antyspamowy itd smile.gif

a jesli istotnie nie chcesz tego czynic to jedyna logiczna metoda to tak jak pisalem:

1. zakladasz sobie uzytkownika, np: www (jakos shell /bin/false - uzytkownik bez hasla, katalogu domowego itd). jako jego grupe mozesz dac whell czy co tam masz u siebie winksmiley.jpg
2. instalujesz sobie sudo
3. apache'a odpalasz kazdorazowo z tego wlasnie uzytkownika. aby to zrobic musisz przeczytac manuala do sudoers (man sudoers). dzieki temu dajesz uzytkownikowi prawa do wykonania komend: apachectl startssl (albo star jesli nie uzywasz ssla) oraz apachectl stop.
4. piszesz skrypt (w bashu lub perlu lub c - co ci pasuje), ktory jest wywolywany z poziomu php z trzema parametrami: stare haslo, nowe haslo, login uzyszkodnika.
5. znow sudoers i dajesz uzytkownikowi prawa do wykonania tego skryptu i czytania /etc/shadow (za pomoca jakiejs grupy oczywiscie)
6. skrypt teraz niech ci zwraca np. 1 w przypadku zmiany hasla, 0 w przypadku bledu (np. zly login) - choc to moze byc bez sensu - generalnie mozesz zrobic w php panel kont i juz w trakcie logowania sie do panelu uzytkownicy musieliby wpisac logpasa uzywanego na serwerze. wtedy nie ma problemu - trzymasz logpasy w bazie danych i w chwili gdy uzytkownik sie zaloguje to skryptowi do zmiany hasla automatycznie przekazujesz stare haslo (siedzi w bazie SQL) a nowe haslo podaje juz uzyszkodnik zmieniajaca to haslo. bol taki, iz musisz sobie napisac oddzielny skrypt (na zazasadach jak wyzej) sprawdzajacy poprawnosc logowania sie do panelu. albo tez napisac sobie panel dodawania nowych kont na serwerze, ktory poza wykonywaniem adduser z parametrami dodawalby podane dane do bazy danych.

wiem - to wszystko brzmi troszke jakby bylo zakrecone - ale prawda jest taka, iz caly system do zarzadzania kontami na serwerze to dobra rzecz. roboty jest troszke - ale to wystarczy sie zadeklarowac na jakas dystrybucje i z glowy - piszesz raz i masz na wieki wiekow.

czyli reasumujac:

1. mozesz napisac sam panel do zmiany hasel. 1 skrypt shellowy itd.
2. mozesz napisaac caly panel zarzadznaia kontami i cala strefe klienta
3. alternatywnie mozesz uzyc jakiegos gotowca (np. C-Panel X bodajze obsluguje troszke dystrybucji a mozna w nim rozne cuda - wianki robic. niewiele o nim powiem, gdyz pod slackiem nie chodzi - ja pod slacka mam swoje autorskie, ktore rozwijam smile.gif moze kiedys je ujrzysz na sourceforge =) )

powodzenia winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.