[ kIGUAR @ 10.12.2003. 20:05 ] @
Kako omogućiti da se na Linux sustavu preko weba logiraju samo oni korisnici koji imaju otvoren account na sustavu, tj. da se username i password čita iz /etc/passwd.
[ igac @ 10.12.2003. 21:50 ] @
down: preko php-a da se vrsi auth

a nece to tako ici (ta auth) ... barem me tako lako...
[ dejan024 @ 10.12.2003. 21:59 ] @
Ja sam jednom prilikom taj problem resio tako sto sam pokusao da se logujem na mail server - protokol pop3 preko php-a. Ako se uspesno uloguje jednostavno zavrsis sesiju i propustis ga na sajt, a u suprotnom mu odbijes pristup sa upozorenjem na gresku.

Naravno ja nisam znao drugi nacin i za mene je ovo bilo najednostavnije za izvodjenje. U istinu autorizaciju sam vrsio sa drugog servera.Znaci na jednom mi je bila web prezentacija , a mail server i passwd fajl na drugomm serveru. No nebi trebalo da bude problem i da je na istom.
[ _owl_ @ 10.12.2003. 22:14 ] @
Citat:
bluesman:
PHP manual :: Chapter 16. HTTP authentication with PHP
Sve pise.

Sve sem kako da odradi ono sto mu treba ;>

Pretpostavljam da je najlaksi problem da na masini na kojoj hoces da se radi ovakva autentifikacija napravis shell skript (moze isto u PHP-u ako nije instaliran samo kao Apache modul) koji ce pokusavati da se uloguje ko dati korisnik (preko su-a il login-a ili sta vec sam smislis, sam skript ce najverovatnije morati da ima +s na root-a). Ako skript uspe da se uloguje onda se korisniku dozvoljava dalji rad.
[ kIGUAR @ 11.12.2003. 10:40 ] @
Nisam dovoljno pojasnio pa evo:
Preko weba mislim na http tako da imam formu na siteu, i kada se user logira autentifikacija se vrsi iz /etc/passwd.
Ne treba mi ssh i sl.
Nesto kao .htaccess ali da se odnosi na sve usere koji imaju kreiran account.
Radi se o stroju na kojem studenti imaju ssh,ftp,mail, web i sl.
Na istom stroju vrti se web site. Određenom djelu weba dozvolio bi pristup samo onima koji imaju otvoren account.
Ovo što kaze Dejan i _owl_ zvuči interesantno.
[ broker @ 11.12.2003. 10:59 ] @
Ako se ne varam, format /etc/passwd je isti koji se koristi i u kombinaciji sa .htacces

Probaj da u .htaccess podesiš pokazivač na passwd datoteku ne u tekućem direktorijumu kako se to obično radi nego na datoteku koja ima lozinke za pristup sistemu.

Code:

AuthUserFile /etc/passwd
AuthName "Login"
AuthType Basic

<Limit GET POST>
require valid-user
</Limit>


Ako to uspe, onda dalje radiš isto kao i inače sa .htaccess.


[Ovu poruku je menjao broker dana 11.12.2003. u 13:01 GMT]
[ alex @ 11.12.2003. 11:01 ] @
Napravi perl ili bash skript koji ce da od /etc/shadow (gde su u stvari pravi password-i) i /etc/passwd generise tabelu sa lozinkama u mySQL-u (ili pak u obicnom fajlu) i stavi taj skript u crontab (od root korisnika, ili sistemski crontab) i stavi da se izvrsava svaki dan.
Time ces svakog dana imati svezu tabelu lozinki i korisnika. Normalno, iz generisanja izuzmi root korisnika i ostale bitne korisnike.

Zatim vrsi authentifikaciju uz pomoc te tabele u MySQL-u ili uz pomoc tog tekst fajla.

Zvuci nekako najjednostavnije .
[ broker @ 11.12.2003. 11:05 ] @
Uvek može da se radi i direktno is PHP'a.. otvori daoteku sa lozinkama, isparsira user i pass, uporedi pass iz daoeke sa passom koji je dao korisnik (php ima sve potrebnu funkciju da se enkriptuje lozinka koju je uneo korisnik kako bi se mogla uporediti sa kodom iz passwd datoteke).
[ markom @ 11.12.2003. 11:30 ] @
Ne može direktno ako koristi shadow passwords. Tj. može, ali da mu Apache radi kao root. Istina, u tom slučaju može slobodno i da ukine bilo kakvu identifikaciju korisnika za pristup...

Marko.
[ broker @ 11.12.2003. 12:29 ] @
Zato sam i napisao da proba :)

Hm.. ako shadow krije podatke tako da niko sem root-a ne može da ih vidi kako onda vršiti autentifikaciju uopšte? Bilo koje prepisivanje podataka na neko drugo mesto da bi bili dostupni poništava svrhu shadow-a.

Ispada da bi trebalo napraviti (ako već ne postoji) neki mali identify server kome bi namena bila samo da daje info da li su user i pass par ok pa mu iz skriptova pristupati kao i svakom drugom serveru.
[ NetworkAdmin @ 11.12.2003. 13:34 ] @
ta ideja sa pop3 auth nije losa naravno ako na serveru je dignut taj deamon i to je to... praviti vlastiti server i pokretati ga kao root ne moze se ako nemas root privilegije a ovaj pop3 je vec dignut kao takav i radi stvar.
[ alex @ 11.12.2003. 13:58 ] @
Postoji naravno i PHP PAM authentication modul, koji upravo sluzi za ovo sto coveku treba. Instaliranjem tog modula u PHP omogucava verifikaciju i autentifikaciju korisnika kroz PAM sistem.

Citat:

* Why would I want to use PAM from PHP?

PAM gives you very flexible control over authentication. As an example, there
are PAM modules that will authenticate against a local shadow or password file,
a Windows NT domain, an SQL database, LDAP, Kerberos, Radius, and more. In
addition, pam modules can give you the ability to have restrictions on the
authentication, such as the pam_tally module which limits the number of login
attempts, and the pam_listfile which let's you restrict access to a list of
users. Please note, using pam does not mean you can securely authenticate
users, it simply gives you the ability to do so with proper configuration and
planning.


http://www.math.ohio-state.edu/~ccunning/pam_auth/

[ dejan024 @ 11.12.2003. 19:45 ] @
Citat:
NetworkAdmin:
ta ideja sa pop3 auth nije losa naravno ako na serveru je dignut taj deamon i to je to... praviti vlastiti server i pokretati ga kao root ne moze se ako nemas root privilegije a ovaj pop3 je vec dignut kao takav i radi stvar.


Mislio sam da niko nije ni primetio moj post.
Inace kod mene ova fora lepo radi. I nijednom nije bilo problema.
[ dejan024 @ 11.12.2003. 20:13 ] @
Evo i funkcije koju ja koristim za proveru.

Code:
  
 function provera($korisnik,$sifra)
   {

      $server="mail.xxx.net";

      // Otvaranje konekcije ,pop3

      $socket = fsockopen( $server, 110, $errno, $errstr, 15 );
      if( ! $socket )
      {
         $errstr = "Connection refused (" . $server . ")"; 
     return false;
      }

      // Ako je konektovan na server proverava dal je dobio  
      // odgovor od servera, ako je prvi znak "+" onda je ok
      // i proverava ostale greske
     
      $line = fgets( $socket, 500 );
      if( substr( $line, 0, 1 ) != "+" ) 
     {
          $errstr = substr( $line, 5 );
          return false;
      }

      // Salje username i proverava dal je ok ("+").

      fputs( $socket, "USER " . $korisnik . "\n" );
      $line = fgets( $socket, 500 );
      if( substr( $line, 0, 1 ) != "+" )
      {
         $errstr = substr( $line, 5 );
         return false;
      }

      // Salje sifru i proverava dal je ok ("+").

      fputs( $socket, "PASS " . $sifra . "\n" );
      $line = fgets( $socket, 500 );
      if( substr( $line, 0, 1 ) != "+" )
      {
         $errstr = substr( $line, 5 );
         return false;
      }
      // Ako je u redu i user i pass vraca true.

      fputs( $socket, "QUIT\n" );
      return true;
   }


[ _owl_ @ 11.12.2003. 20:44 ] @
Citat:
alex:
Postoji naravno i PHP PAM authentication modul, koji upravo sluzi za ovo sto coveku treba. Instaliranjem tog modula u PHP omogucava verifikaciju i autentifikaciju korisnika kroz PAM sistem.


Sta ako na sistemu nema PAM-a (kolko mi se cini Slackware ne koristi PAM)?

Uglavnom problem se svodi samo na to da li ces sam da napises
program/funkciju koja ce da radi autentifikaciju ili ces da korisis necije resenje.
Mislim da ako imas dovoljno iskustva to trebas sam da odradis, jer ipak se radi o pristupu najosetljivijim sistemskim fajlovima (ne zelis valjda da se tu oslonis na druge).
[ kIGUAR @ 12.12.2003. 08:44 ] @
Tražio sam malo po drugim izvorima i evo jos jedne ideje:
importat kao root sve passwd u tabelu mysql
mysql> load data infile "/etc/passwd" into table passwd;
Treba separirat string po kolonama (explode) i onda u jednoj koloni imamo passworde koji su kriptirani ovako SJ9rYQIMs4niR22ceNj70/
Onda ide SELECT * FORM passwd WHERE user =$user AND pass=$pass;

[ broker @ 12.12.2003. 09:03 ] @
TIme direktno ugrozavas bezbednost sistema. Ako usere i lozinke izvuces iz shadow-a, dajes ih na tacni...
[ kIGUAR @ 12.12.2003. 09:22 ] @
mysql autentifikacija (username,password) kod konektiranja na bazu onda nije sigurna?
[ Jbyn4e @ 12.12.2003. 10:34 ] @
Citat:
kIGUAR:
mysql autentifikacija (username,password) kod konektiranja na bazu onda nije sigurna?

Tacnije, da budemo ispravni: user, password, host (ako se ne navede host - podrazumeva se localhost). MySQL (bar je ranije bilo tako, nisam proveravao) radio tako sto proverava username, password i ODAKLE se kaci neko na bazu.
[ kIGUAR @ 08.01.2004. 20:56 ] @
Evo da zatvorim temu, problem sam riješio kroz imap. Php ima odličnu podršku za imap i pop3. Ako postoji account na stroju onda user ima i mail account što je točno ono što mi treba. Bilo bi interesantno kad bi se mogli čitati i neki atributi kod usera da npr. grupa određenih usera ima određena prava no i ovako je u redu.
Hvala svima na idejama.