În primul rând, mulțumesc că ți-ai acordat timp pentru a-mi vedea întrebările prostești :)
Am un server care rulează Ubuntu 18.04 LTS și trebuie să permit mai multor utilizatori să se conecteze prin ftp în directoare de acasă separate pentru Web FTP și m-am confruntat cu o problemă la care nu găsesc niciun răspuns după o zi de caut, asa ca arunc prosopul si cer ajutor.
Am masa ftp
în baza mea de date, iar în interiorul acesteia sunt 4 coloane; id
, nume de utilizator
, trece
, și domeniu
, domeniu
fiind în centrul întrebării mele. Am făcut ca PAM_MySQL să funcționeze corect, dar acum trebuie să pot seta nume de utilizator separat de directoarele lor de acasă, de unde și cele menționate mai sus domeniu
coloană.
Vezi, problema este că oriunde am văzut, VSFTPd folosește numele de utilizator al utilizatorului virtual pentru directorul principal, ceea ce este bine în majoritatea circumstanțelor, totuși trebuie să pot avea utilizator utilizator1
să poată accesa domeniul test.mydomain.com
, dar și eu am nevoie utilizator3
să poată accesa test.mydomain.com
de asemenea, de aceea nu pot seta numele de utilizator la domeniu și nu pot fi terminat pentru că utilizator1
și utilizator3
ambele au nevoie de parole separate.
Am văzut despre asta Întrebare despre eroarea serverului de acum 11 ani, că această persoană a găsit un răspuns, care includea MySQL inline în fișierul /etc/vsftpd.conf, cu toate acestea, când încerc soluția lor și introduc datele de conectare ale bazei de date, am constatat că clientul se poate autentifica cu succes, dar FileZilla se plânge de a Eroare GnuTLS -15
ceea ce din experiența mea înseamnă că un director de acasă nu este setat și o conexiune FTP nu poate continua; ceea ce este amuzant pentru că atunci când îl rulez pe linia de comandă, primesc o ieșire curată, fără nici un stil sau avertismente, și ar trebui să iasă așa în fișierul de configurare, dar dintr-un motiv oarecare nu are.
Iată un fragment din codul pe care l-am luat de la întrebarea Server Fault în propriul meu vsftpd.conf:
``export MYSQL_PWD=MYSQLPASSWORD; mysql -sN -uUSERNAME -h HOSTNAME DATABASE -e „SELECTARE domeniul FROM DATABASE.accounts WHERE username='user1'"``
Și iată rezultatul pe linia de comandă:
/var/www/subdomains/test.mydomain.com
Îl pot seta manual în configurație și nu funcționează nicio problemă, așa că cred că este doar MySQL inline
Deci, există o cale de a evita asta?
Și, aș lua jurnalele, dar niciunul dintre ele nu pare să arate directorul pe care utilizatorul virtual încearcă să îl acceseze, așa că dacă cunoașteți o comandă care poate face asta; Voi posta cu plăcere rezultatul.
/var/log/vsftpd.log
nu arată nimic util, doar că clientul s-a putut autentifica.
journalctl -xe
arată următoarele:
03 iunie 03:17:57 server-4 vsftpd[18039]: pam_unix(vsftpd:session): sesiune deschisă pentru utilizatorul user1 de (uid=0)
03 iunie 03:17:57 server-4 vsftpd[18039]: pam_systemd(vsftpd:session): Nu s-au putut obține datele utilizatorului.
03 iunie 03:17:57 server-4 vsftpd[18039]: pam_systemd(vsftpd:session): Nu s-au putut obține datele utilizatorului.
03 iunie 03:17:57 server-4 pam-script[18039]: nu poate fi stat /usr/share/libpam-script/pam_script_ses_close
03 iunie 03:17:57 server-4 vsftpd[18039]: pam_unix(vsftpd:session): sesiune închisă pentru utilizatorul user1
Pot să dau orice bușteni de care aveți nevoie, așa că trageți și poate veți înscrie!
Mulțumesc totuși, într-adevăr. Apreciez sincer că îți petreci timpul cu problemele mele.