On Fri, 2002-02-22 at 03:57, Linux User wrote:
> 
> Ca sa fiu mai clar, pe mine SFTP-ul nu ma intereseaza din urmatorul 
> motiv: cere ca userii care se coneteaza sa aiba shell valid (din cite am 
> vazut eu, dar poate gresesc. Daca da, mea culpa!)

Nu cere neaparat.
Daca pui ca shell /usr/libexec/openssh/sftp-server (sau unde o fi la
tine sftp-server) atunci merge sa faci sftp, dar accesul shell este
interzis.

> Si ca sa fiu si mai clar, as vrea sa aflu cum ai putea sa te conectezi cu 
> SFTP-ul (client incorporat in ssh asa precum bine zici), la un server de FTP 
> care are X useri si toti VIRTUALI si bineinteles fara shell valid.

Ok, hai sa facem putina teorie...

Probabil ca definesti "useri virtuali" prin "useri care nu sint in
/etc/passwd". Cu alte cuvinte, vrei sa spui ca back-end-ul de
autentificare este altul decit /etc/passwd.
Prea mare diferenta nu este, decit ca-i definesti in alta parte (pentru
ca, daca fac FTP, vor trebui sa aiba ceva gen home directory, chiar daca
informatia respectiva e tinuta altundeva). Faptul ca nu e mare diferenta
apare clar mai ales pe sisteme care au PAM (pentru ca PAM tocmai asta
este: un nivel de abstractie peste back-end-ul de autentificare).

Singura problema cu userii astia "virtuali" (daca insisti sa-i definesti
asa) este ca toate programele care trebuie sa stie de ei trebuie sa
poata accesa _acelasi_ back-end de autentificare (unde back-end-ul poate
fi: SQL, ODBC, LDAP, Radius, BerkeleyDB, Kerberos, Microsoft-CHAP,
s.a.m.d.).
Adica, ai un back-end care tine minte: username, parola criptata, uid,
gid, gecos, home dir si shell (plus alte maruntisuri optionale). Trebuie
sa faci daemonii tai, sau ce programe vrei tu, sa interogheze acelasi
back-end care tine toate informatiile astea. Exista doua rezolvari
pentru problema asta:
1. Daca daemonii stiu PAM, instalezi (sau scrii) un modul PAM pentru
back-end-ul ala. Asta e solutia adevarata, tocmai pentru asa ceva a fost
facut PAM, asta e motivul pentru care nu prea se poate concepe un Unix
"pentru intreprindere" fara PAM.
2. Sau solutia muncitorului chinez: iei fiecare daemon la rind si il
modifici sa se autentifice la acel back-end in mod independent.

Spre exemplu, eu am aplicat metoda a 2-a pentru OpenSSH: am scris un
patch + un utilitar extern cu care se autentifica prin Radius. Deci
autentificarea nu se face la /etc/passwd, ci la un server Radius undeva
pe retea.
Teoretic ar fi fost mai simplu prin PAM, pentru ca exista un modul PAM
care face autentificare Radius, dar practic mi-a fost mai simplu sa
modific OpenSSH in acel caz concret (long story, don't ask).

Probabil ca analog ar fi fost pentru orice alt back-end "exotic" iti
poti imagina (SQL, LDAP, etc.) si pentru orice alt serviciu (FTP, HTTP,
etc.).
Pe scurt, poti face orice vrei tu, tinind userii in orice back-end vrei
tu. Trebuie doar sa intelegi bine care e problema, si sa faci pasii care
trebuie.

-- 
Florin Andrei

"When the prime minister is appearing at product launches by a company
twice found by courts to be abusing a monopoly and facing billions of
dollars in lawsuits, you have to ask questions." - Alan Cox

---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui