Řešení 1:
Ahoj @emmdee Trvalo mi věčnost, než jsem si uvědomil, že na to existuje jednoduchý a pěkný trik. Musíte pouze učinit root vlastníkem nadřazené složky, do které chcete sFTP, a poté pomocí příkazu force sdělit konkrétnímu uživateli, aby načetl konkrétní DIR do adresáře CHROOT.
Ve vašem případě v případě, že chcete /home/sftpuser
aby šlo o zapisovatelný adresář, budete muset vytvořit root vlastník /home
adresář, pak pokračujte a Force Command on /sftpuser
jako vstupní adresář pro daného uživatele nebo skupinu.
Vaše /etc/ssh/sshd_conf
bude vypadat takto:
Match User sftpuser
ChrootDirectory /home
ForceCommand internal-sftp -d /sftpuser
AllowTCPForwarding no
X11Forwarding no
Jakmile to uděláte, musíte udělit správná oprávnění, jak bylo řečeno dříve, root by měl vlastnit nadřazený (chroot) adresář /home
zatímco uživatel by měl vlastnit konečný (-d) adresář /sftpuser
. Budu předpokládat, že máte skupinu uživatelů sFTP s názvem sftpusers , Pokud ne; stačí vynechat skupinu z následujících příkazů nebo ji místo toho nahradit uživateli (root v prvním a sftpusers ve druhém). Protože v příkazovém řádku pro dědění používáme -R, budete muset začít s vlastnictvím root před vlastnictvím uživatele následovně:
sudo chown -R root:sftpusers /home
pak pro uživatele můžete spustit:
sudo chown -R sftpuser:sftpusers /home/sftpuser
Nejsem si jistý, zda je to potřeba, ale vždy můžete restartovat službu sshd, abyste se ujistili, že všechna nastavení budou znovu načtena:
sudo systemctl restart sshd.service
Doufejme, že by to mělo fungovat jako kouzlo, měl jsem podobný problém a řešení bylo tam, kde se mi většinu času díval do očí.
Na zdraví!
Řešení 2:
Vím, že je to už pár let, ale tento příspěvek mě na 98 % dostal. po dlouhém hledání.
Aby bylo možné nechat uživatele chrootovat a automaticky je dostat do jejich vlastního adresáře s oprávněním k zápisu, použil jsem metodu, kterou navrhl African Idiot, a také vytvořil původní chroot adresář vlastněný uživatelem root a skupinou ftp.
Ale klíčem k tomu, abych je ponechal v této složce a nemohl .. a pokoušet se procházet složky jiných uživatelů, bylo vytvořit složku chmod 710 (rwx--x---)
takže skupina ftp musela provést interní-sftp -d /%u (tj. cd do podadresáře users) a teď, když se pokusím o cd ..
do horního adresáře, protože neexistuje žádné čtení pro nikoho jiného než root, selže.
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/
doufám, že to pomůže i někomu dalšímu.