Solusi 1:
Hei @emmdee Butuh waktu lama bagi saya untuk menyadari ada trik sederhana dan bagus untuk itu. Anda hanya perlu menjadikan root sebagai pemilik folder induk tempat Anda ingin sFTP, lalu gunakan perintah paksa untuk memberi tahu pengguna tertentu agar memuat DIR tertentu di dalam direktori CHROOT.
Dalam kasus Anda jika Anda ingin /home/sftpuser
untuk menjadi direktori yang dapat ditulisi, Anda harus membuat root pemilik /home
direktori lalu lanjutkan dan Force Command dia /sftpuser
sebagai direktori tujuan untuk pengguna atau grup tersebut.
/etc/ssh/sshd_conf
Anda akan terlihat seperti ini:
Match User sftpuser
ChrootDirectory /home
ForceCommand internal-sftp -d /sftpuser
AllowTCPForwarding no
X11Forwarding no
Setelah selesai, Anda harus memberikan izin yang tepat seperti yang dikatakan sebelumnya, root harus memiliki direktori induk (chroot) /home
sedangkan pengguna harus memiliki direktori final(-d) /sftpuser
. Saya akan berasumsi bahwa Anda memiliki grup pengguna sFTP bernama sftpusers , jika tidak; hilangkan saja grup dari perintah berikutnya atau ganti dengan pengguna sebagai gantinya (root di bagian pertama dan sftpusers di yang kedua). Karena kami menggunakan -R di baris perintah untuk pewarisan, Anda harus memulai dengan kepemilikan root sebelum kepemilikan pengguna sebagai berikut:
sudo chown -R root:sftpusers /home
lalu untuk pengguna Anda dapat menjalankan:
sudo chown -R sftpuser:sftpusers /home/sftpuser
Saya tidak yakin ini diperlukan tetapi Anda selalu dapat memulai ulang layanan sshd untuk memastikan bahwa semua pengaturan dimuat ulang lagi:
sudo systemctl restart sshd.service
Mudah-mudahan ini akan bekerja dengan sangat baik, saya memiliki masalah yang sama dan solusinya ada di sana menatap mata saya hampir sepanjang waktu.
Semangat!
Solusi 2:
Saya tahu ini sudah beberapa tahun, tetapi postingan ini membawa saya 98% ke sana. setelah lama mencari.
Untuk membuatnya agar saya dapat meminta pengguna melakukan chroot dan secara otomatis memasukkan mereka ke direktori mereka sendiri dengan izin menulis, saya menggunakan metode yang disarankan oleh African Idiot, dan juga membuat direktori chroot asli yang dimiliki oleh pengguna root dan grup ftp.
Tetapi kunci bagi saya untuk menyimpannya di folder itu dan tidak dapat .. dan mencoba menelusuri folder pengguna lain, adalah membuat folder chmod 710 (rwx--x---)
sehingga grup ftp telah mengeksekusi untuk melakukan internal-sftp -d /%u (yaitu cd ke subdirektori pengguna) dan sekarang jika saya mencoba cd ..
ke direktori atas, karena tidak ada bacaan untuk siapa pun selain root, gagal.
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/
harap ini membantu orang lain juga.