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 bob
dan menambahkannya ke grup baru bernama sftponly
. Mereka memiliki direktori home di /home/bob
. Saya telah mengubah shell mereka /bin/false
untuk menghentikan login SSH. Inilah /etc/passwd
baris mereka :
bob:x:1001:1002::/home/bob:/bin/false
Saya juga mengubah /etc/ssh/sshd_config
untuk 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 ChrootDirectory
baris saya bisa SFTP di tetapi kemudian mereka memiliki kendali bebas atas server. Saya telah menemukan yang ChrootDirectory /home
berfungsi, tetapi masih memberi mereka akses ke direktori home. Saya sudah mencoba secara eksplisit ChrootDirectory /home/bob
tetapi itu tidak berhasil.
Apa yang saya lakukan salah? Bagaimana saya bisa membatasi bob
ke /home/bob/
?
----SUNTING-----
Oke jadi saya baru saja melihat /var/log/auth.log
dan 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 /home
hasilnya:
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/%u
bisa digantiChrootDirectory %h
.