Ek het tans 'n WERKENDE SFTP-aanmelding, met 'n private sleutel vir aanmelding en die gebruiker word in hul tuisgids ingeskryf.

Doelwit: Hou die gebruiker chroot, maar laat SKRYF-toegang tot die relatiewe chroot-gids toe, sonder om enige pad of cd enige plek te spesifiseer.

Met ander woorde, wanneer die sftp-gebruiker aanmeld, wil ek nie hê dat hulle na 'n ander pad moet cd om 'n lêer op te laai nie.

Due to the chroot directory requiring full root ownership (due to chroot design), I'm not certain if this is even possible.

In /etc/passwd:

sftpuser:x:1006:1006:,,,:/home/sftpuser:/bin/false

Die gebruikers-aanmelding-pubsleutel is in:

/home/sftpuser/.ssh/authorized_keys

Chroot-reëls in sshd_confg:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

Home dir toestemmings:

# ls -l /home/ |grep sftpuser
drwxr-xr-x 5 root      root     4096 May  4 11:24 sftpuser

# ls -l /home/sftpuser/
total 4
drwxrw-r-x 3 sftpuser sftpuser 4096 May  4 11:23 sftp_share

Voorbeeld huidige werkvloei :

Connected to sftp.example.com.
sftp> ls
sftp_share

sftp> put testfile.txt
Uploading testfile.txt to /testfile.txt
remote open("/testfile.txt"): Permission denied

sftp> cd sftp_share

sftp> put testfile.txt
Uploading testfile.txt to /sftp_share/testfile.txt
testfile.txt

Gewenste werkvloei:

Connected to sftp.example.com.
sftp> put testfile.txt
Uploading testfile.txt to /testfile.txt
testfile.txt

Is daar enige manier om die oplaai (sit) na die verstekgids toe te laat, sonder om eers te chdir?

Ek het wel buigsaamheid om hierdie gidse rond te skuif. Byvoorbeeld, die sftp chroot dir hoef nie in die gebruikers tuisgids te wees nie, ek kan selfs om die gebruikers se huisdir verander (maar die gebruiker moet steeds geautoriseerde_sleutels kan gebruik om aan te meld).

Neem asseblief kennis: Ek verstaan ​​baie SFTP-kliënte, en die opdragreël SFTP-kliënt maak dit moontlik om 'n relatiewe pad te definieer by aanmelding. Dit is buite die bestek van hierdie vraag, ek wil hê dat hierdie konfigurasie aan die bedienerkant gedoen word en die kliënt moet eenvoudig net aanmeld.

answer

Hey @emmdee Dit het my vir ewig geneem om te besef daar is 'n eenvoudige en lekker truuk daaraan. U hoef net die eienaar van 'n ouerlêergids te maak waar u sFTP wil hê, en gebruik dan die kragopdrag om 'n spesifieke gebruiker te vertel om 'n spesifieke DIR in die CHROOT-gids te laai.

In jou geval as jy /home/sftpuserdie skryfbare gids wil wees, sal jy root die eienaar van die /homegids moet maak en dan voortgaan en Force Command /sftpuseras 'n landingsgids vir daardie gebruiker of 'n groep.

Jou /etc/ssh/sshd_confsal lyk soos volg:

Match User sftpuser
    ChrootDirectory /home
    ForceCommand internal-sftp -d /sftpuser
    AllowTCPForwarding no
    X11Forwarding no

Sodra dit gedoen is, moet jy die regte toestemmings gee soos vroeër gesê, die wortel moet die ouer(chroot) gids besit /hometerwyl die gebruiker die finale(-d) gids moet besit /sftpuser. Ek gaan aanneem dat jy 'n sFTP-gebruikersgroep genaamd sftpusers het , indien nie; laat net die groep van die volgende opdragte weg of vervang dit eerder met die gebruikers ( wortel in die eerste en sftpusers in die tweede). Aangesien ons -R in die opdragreël vir oorerwing gebruik, sal u soos volg met die worteleienaarskap voor die gebruikereienaarskap moet begin:

sudo chown -R root:sftpusers /home

dan kan jy vir die gebruiker hardloop:

sudo chown -R sftpuser:sftpusers /home/sftpuser

Ek is nie seker dat dit nodig is nie, maar jy kan altyd sshd-diens herbegin om seker te maak dat alle instellings weer herlaai word:

sudo systemctl restart sshd.service

Dit behoort hopelik soos 'n sjarme te werk, ek het 'n soortgelyke probleem gehad en die oplossing was dat ek die meeste van die tyd in die oë na my kyk.

Cheers!

Ek weet dit is 'n paar jaar, maar hierdie pos het my 98% van die pad daarheen gebring. na lank gesoek.

Om dit so te maak dat ek gebruikers kan laat chroot en hulle outomaties in hul eie gids kan kry met skryftoestemmings, het ek die metode gebruik wat African Idiot voorgestel het, en ook die oorspronklike chroot-gids gemaak wat deur root gebruiker en die ftp-groep besit word.

Maar die sleutel vir my om hulle in daardie vouer te hou en nie in staat te wees om .. en probeer om ander gebruikers se vouers te blaai nie, was om die vouer chmod 710 (rwx--x---)so te maak dat die ftp-groep uitgevoer het om die internal-sftp -d /%u te doen (dws cd in die gebruikers subgids) en nou as ek probeer om cd ..in die boonste gids, want daar is geen lees vir enigiemand behalwe root, dit misluk.

drwx--x---  6 root        sftpusers   uarch  6 Feb 19 15:34 ./
drwxr-xr-x  5 root        root        uarch  5 Feb  4 09:13 ../
drwxrwx---  3 anotheruser anotheruser uarch  3 Feb 24 15:34 anotheruser/
drwxrwx---  3 ftpuser     ftpuser     uarch 12 Feb 25 10:55 ftpuser/

hoop dit help iemand anders ook.