Bagaimana saya bisa membuat pengguna hanya untuk sftp?

15

Saya telah menambahkan pengguna ke sistem melalui adduseralat. Kemudian, dalam /etc/passwd, saya mencoba mengubah /bin/bashke /sbin/nologinatau ke /dev/null, tetapi tidak ada yang berhasil.

Saya ingin pengguna tidak memiliki opsi untuk mendapatkan shell interaktif, dan hanya untuk digunakan sftp. Apakah ada cara?

Saya tahu itu sudah ditanyakan di sini sebelumnya, tetapi sepertinya tidak ada yang memberikan respons yang memuaskan.

Toni Rosa
sumber
Apa yang Anda maksud dengan "tidak beruntung"?
Paweł Brodacki
Maksud saya remote scp / sftp tidak berfungsi. Saya menyelesaikannya dengan menggunakan shell scponly seperti yang disarankan oleh Iain
Toni Rosa

Jawaban:

9

Perintah yang harus Anda gunakan untuk mengganti shell adalah chsh . Shell nologin bisa /sbin/nologinatau /usr/sbin/nologin(periksa yang Anda miliki dengan melihat /etc/shells) tetapi /bin/falsemungkin akan menjadi pilihan yang lebih baik.

chsh -s /bin/false user

Anda harus mempertimbangkan mengatur sesuatu seperti scponly yang akan melakukan apa yang Anda inginkan.

Iain
sumber
Terima kasih atas jawaban anda. Saya telah mencoba dengan shell di dalam / etc / shell tanpa hasil ... / bin / false memberikan "koneksi yang hilang" dan / sbin / nologin mengembalikan "Akun ini saat ini tidak tersedia." Saya akan coba ini secara langsung
Toni Rosa
Saya memecahkannya menggunakan shell scponly! Cheers
Toni Rosa
3
Jawaban ini adalah jarum di jerami! Pastikan /bin/falsedan /bin/nologinbenar-benar tersedia di /etc/shells!
Afr
@Afri Baik, tapi ... Anda benar-benar ingin membaca serverfault.com/questions/328395/… . Ini sangat kontraindikasi.
Reinderien
@Afr tidak menaruh nologindi /etc/shells! serverfault.com/a/328424
RobAu
9

Anda juga harus dapat melakukannya dengan OpenSSH 4.9 dan yang lebih baru, yang dengannya Anda juga dapat melakukan chroot untuk meningkatkan keamanan.

Di Anda /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Lalu lari:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

Pengguna hanya dapat menulis di / home / pengguna / unggahan.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory

Eduardo Ivanec
sumber
+1 Saya telah memasukkan ini ke daftar untuk diselidiki.
user9517
1
Saya telah menggunakannya dan berfungsi dengan baik - Anda juga dapat memberikan pengguna pilihan untuk masuk ke lingkungan chroot dengan sebuah shell, tetapi dalam hal ini Anda harus menyalin perpustakaan minimum dan beberapa utilitas lain seperti yang diharapkan. Jailkit ( olivier.sessink.nl/jailkit ) berguna untuk itu.
Eduardo Ivanec
Terima kasih, ForceCommand adalah petunjuk. Saya tidak perlu chroot, tetapi saya ingin masuk ke SFTP dengan akun layanan.
AnrDaemon
2

Saya pikir cara terbaik adalah dengan mysecureshell

http://mysecureshell.sourceforge.net/en/index.html

Anda dapat chroot pengguna dengan ini dengan mudah dan bahkan membatasi bandwidth jika diperlukan.

Mike
sumber
Saya memecahkannya menggunakan shell scponly, tapi itu interessant untuk mengetahui mysecureshell ini
Toni Rosa
1

Anda dapat menambahkan pengguna dengan -s /bin/falsemenonaktifkan shell mereka, tetapi apa yang benar-benar harus Anda perhatikan adalah pengaturan akun sftp chroot. Ini akan "memenjarakan" pengguna ke direktori mereka sendiri dan mencegah mereka untuk dapat mengakses atau memodifikasi file atau direktori di luar direktori chroot.

gravyface
sumber
Terima kasih atas jawaban Anda, tetapi sepertinya tidak berhasil. Saya mendapatkan "koneksi terputus" setiap kali saya mencoba pengguna menggunakan shell / bin / false.
Toni Rosa