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.
