Kami telah menemukan solusi baru-baru ini yang seperti ini:
/ etc / ssh / sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
izin direktori:
root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*
Sekarang /homememenuhi persyaratan untuk ChrootDirectorydan tidak dapat didaftar oleh pengguna terbatas, tetapi sftponlypengguna tidak akan dapat login jika direktori home mereka diatur seperti biasa ( /home/$LOGNAME): di bawah lingkungan chroot direktori home mereka tidak di dalam /hometetapi langsung di bawah root ( /).
solusi 1
Tetapkan rumah pengguna yang dibatasi untuk tampilan di bawah chroot:
root@server:~ # usermod -d /username username
peringatan 1
Jika ada pengguna yang tidak dibatasi atau skrip administrasi menggunakan ekspansi tashe bash seperti ~usernameitu akan meluas hingga /usernamesekarang, yang bukan itu yang dimaksud.
Admin yang membuat sftponlypengguna harus ingat untuk menggunakan home non-default. Dipecahkan dengan skrip. Yang harus diingat oleh admin untuk digunakan.
solusi 2
Ini adalah alternatif dari yang sebelumnya yang akhirnya kami gunakan:
root@server:~ # ln -s . /home/home
Itu adalah membuat symlink di dalam /homeuntuk dirname sendiri. Sekarang di bawah chroot /home/usernamemenunjuk ke direktori yang sama dengan tanpa chroot. Untuk pengguna terbatas yang masuk dengan sftp akan muncul sebagai /username. Direktori ini dapat ditulisi oleh pemiliknya (pengguna terbatas). Pengguna yang dibatasi tidak dapat mencantumkan direktori induk atau direktori home dari salah satu dari saudara kandung tersebut berdasarkan nama.
Satu-satunya hal khusus tentang sftponlypengguna adalah keikutsertaannya dalam sftponlygrup. Kami merasa lebih mudah ditangani daripada solusi 1.
peringatan 2
- Anda tidak dapat memiliki pengguna bernama 'rumah' dengan direktori rumah
/home/home
- Anda harus berhati-hati dengan skrip yang melintasi
/homehierarki dan mengikuti symlink.
chrootpengguna ed memilikiChrootDirectory? Bisakah mereka mengaksesnya?