Saya ingin memberikan akses klien ke server saya, tetapi saya ingin membatasi pengguna tersebut ke direktori home mereka. Saya akan mengikat-mount di file apa pun yang saya ingin mereka dapat melihatnya.
Saya telah membuat pengguna yang dipanggil bobdan menambahkannya ke grup baru bernama sftponly. Mereka memiliki direktori home di /home/bob. Saya telah mengubah shell mereka /bin/falseuntuk menghentikan login SSH. Inilah /etc/passwdbaris mereka :
bob:x:1001:1002::/home/bob:/bin/false
Saya juga mengubah /etc/ssh/sshd_configuntuk menyertakan yang berikut:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Ketika saya mencoba masuk sebagai mereka, inilah yang saya lihat
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Jika saya mengomentari ChrootDirectorybaris saya bisa SFTP di tetapi kemudian mereka memiliki kendali bebas atas server. Saya telah menemukan yang ChrootDirectory /homeberfungsi, tetapi masih memberi mereka akses ke direktori home. Saya sudah mencoba secara eksplisit ChrootDirectory /home/bobtetapi itu tidak berhasil.
Apa yang saya lakukan salah? Bagaimana saya bisa membatasi bobke /home/bob/?
----SUNTING-----
Oke jadi saya baru saja melihat /var/log/auth.logdan melihat ini:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
Saya tidak sepenuhnya yakin apa yang terjadi di sana, tetapi itu menunjukkan ada sesuatu yang salah dengan direktori pengguna. Berikut ls -h /homehasilnya:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%ubisa digantiChrootDirectory %h.