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
.Jawaban:
Semua rasa sakit ini berkat beberapa masalah keamanan seperti yang dijelaskan di sini . Pada dasarnya direktori chroot harus dimiliki oleh
root
dan tidak dapat berupa akses tulis grup. Menyenangkan. Jadi pada dasarnya anda perlu untuk mengubah chroot Anda menjadi sel tahanan dan dalam yang Anda dapat memiliki konten diedit Anda.Dan bam, Anda dapat masuk dan menulis
/writable
.sumber
root
. Dalam contoh ini,/home
juga harus dimiliki oleh root.Subsystem sftp /usr/lib/openssh/sftp-server
jalurSubsystem sftp internal-sftp -f AUTH -l VERBOSE
sebelum ini bekerja.Untuk chroot direktori SFTP, Anda harus
Buat pengguna dan paksa root untuk menjadi pemiliknya
Ubah lokasi subsistem di / etc / ssh / sshd_config:
dan membuat bagian pengguna di akhir file (ssh dapat mati respawning jika ditempatkan setelah baris Subsistem):
sumber
john
dikunci ke/home/john
direktori. Anda telah memberikan755
izin ke direktori. jadi pemilik telah membaca (4), menulis (2) dan mengeksekusi (1), dan grup telah membaca (4) dan mengeksekusi (1). Anda juga telah menetapkan pemilik dan grup sebagairoot
, jadijohn
milik lainnya. dia juga telah membaca dan mengeksekusi (4 +1 = 5) lalu. jadi Anda telah mengunci john ke direktori di mana ia tidak memiliki hak menulis. bagaimana cara memperbaikinya? mengubah hak istimewa757
atau bahkan777
memecah login. mengubah grup atau pemilik ke john juga memecah login./home/userx/sftproot/uploads
dan sftpuser di / home / sftpuse. Saya telah mengatur chroot/home/usex/sftproot
agar dimiliki oleh root: root dan chmod 755./home/usex/sftproot/uploads
Chown-ed oleh sftpuser: sftpuser. Saya mendapatkan kesalahan yang sama dengan pertanyaan awal di atas. Apakah chroot dan semua folder induk harus dimiliki oleh root: root agar sftp berfungsi?Saya menghabiskan sepanjang hari mencoba untuk mendapatkan pangsa jaringan di raspberry saya. Saya ingin mengunci pengguna sehingga tidak akan dapat menavigasi seluruh sistem file, tidak ada akses login ssh dan saya ingin memiliki akses tulis ke berbagi jaringan.
Dan inilah cara saya membuatnya bekerja:
Pertama saya membuat pengguna:
Kemudian diedit
/etc/passwd
dan pastikan/bin/false
untuk pengguna jadi barisnya adalah:Saya diedit
/etc/ssh/sshd_config
untuk memasukkan:Pemilik dan izin direktori home yang diubah:
Ok jadi setelah semua ini saya bisa terhubung menggunakan
sshfs
tetapi dalam mode read only. Apa yang harus saya lakukan untuk mendapatkan folder yang dapat ditulis:Itu dia, itu bekerja tanpa perubahan lebih lanjut. Perhatikan bahwa saya hanya memiliki izin yang dapat ditulisi kepada pengguna , bukan ke grup sebanyak solusi online lainnya. Saya dapat membuat / menghapus / mengedit / mengganti nama file / folder tanpa masalah.
Ketika mengakses menggunakan
sshfs
dengan pengguna netdrive karena konfigurasi chroot saya hanya akan melihat hal-hal yang tersimpan di dalam/home/netdrive/
direktori server , sempurna./home/netdrive/home/netdrive/
Struktur direktori berulang adalah apa yang membuatnya bekerja untuk saya dalam memiliki solusi chroot ssh cleanable dapat ditulis .Sekarang saya akan menjelaskan di bawah masalah yang saya miliki:
Anda mungkin tidak boleh menjalankan paragraf berikut :
Setelah melihat solusi di atas (dan banyak lainnya di internet yang bahkan menggunakan acl (daftar kontrol akses)) saya masih tidak bisa membuatnya berfungsi karena apa yang saya lakukan selanjutnya adalah:
Berikut ini TIDAK bekerja untuk saya:
Karena pengguna netdrive masih tidak dapat menulis di
/home/netdrive/writable/
direktori itu walaupun memiliki folder dan memiliki izin. Kemudian saya melakukannya: sudo chmod 775 / home / netdrive / writable / Dan sekarang saya dapat membuat direktori dan menghapusnya tetapi saya tidak dapat mengeditnya karena sedang dibuat tanpa izin grup yang dapat ditulis. Di sini dari apa yang saya lihat di internet yang digunakan orangacl
untuk memperbaikinya. Tapi saya tidak senang dengan itu karena saya harus menginstalacl
, kemudian mengkonfigurasi mount point, dll. Saya juga tidak tahu mengapa saya memerlukan izin grup untuk menulis ke folder yang dimiliki oleh pengguna yang sama.Tampaknya karena alasan tertentu membuat
/home/netdrive/home/netdrive
dan memberikan kepemilikan kenetdrive
folder terakhir saya dapat membuat semuanya berfungsi tanpa mengacaukan izin grup .sumber
Saya mengikuti artikel ini tetapi tidak berhasil. Itu mulai bekerja setelah saya melakukan perubahan ini (disarankan dalam jawaban di atas):
Plus membuat direktori home root yang dapat dimiliki di mana saya memiliki sub direktori yang dapat ditulis pengguna (seperti yang dijelaskan di atas).
Hal baru dan berguna yang ingin saya tambahkan dengan jawaban ini adalah Anda dapat menyederhanakan konfigurasi hanya dengan menetapkan% h sebagai direktori home user:
Saya telah menemukannya berkat tautan ini .
sumber