Buat pengguna vsftpd baru dan kunci ke (tentukan) direktori home / login

31

Saya perlu secara berkala memberikan akses sementara dan terbatas ke berbagai direktori pada server linux CentOS yang telah menginstal vsftp.

Saya telah membuat pengguna menggunakan useradd [user_name]dan memberi mereka kata sandi menggunakan passwd [password].

Saya telah membuat direktori /var/ftpdan kemudian saya ikat ini ke direktori yang ingin saya batasi aksesnya.

Apa lagi yang perlu saya lakukan secara khusus untuk memastikan bahwa ketika pengguna ini masuk ke FTP, mereka hanya memiliki akses ke direktori ini?

zigojacko
sumber
Maaf tetapi apakah Anda pernah mempertimbangkan untuk memeriksa vsftpd.conf?
jirib
Iya nih. Saya sudah. Itu tidak memberi tahu saya bagaimana cara menginstruksikan pengguna tertentu untuk masuk ke direktori tertentu ...?
zigojacko
1
Yakin? opsi chroot_list_enable ... Atau Anda bermaksud menimpa direktori yang berbeda dari $ HOME?
jirib
1
Saya ingin tahu cara mendeklarasikan direktori home tertentu untuk pengguna tertentu. Saya telah mengaktifkan chroot_list_enabledan membuat /etc/vsftpd/chroot_list. Saya tidak tahu apa yang harus saya lakukan selanjutnya.
zigojacko
Kemudian usermod untuk mengubah homedir pengguna.
jirib

Jawaban:

44

Jawaban lengkap yang menyelesaikan pertanyaan saya untuk orang lain yang mengikuti langkah demi langkah langkah ...

Instal vsftpdmenggunakan ini sebagai panduan .

  • Buat pengguna dengan useradd [user_name].
  • Buat kata sandi pengguna dengan passwd [user_name]. (Anda akan diminta menentukan kata sandi).
  • Buat direktori FTP di /var/ftpdan kemudian ikat ke direktori 'home' yang ingin Anda tentukan untuk pengguna ini mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Ubah direktori home pengguna dengan usermod -d /var/ftp/custom_name/ user_name

    Dalam /etc/vsftpd/vsftpd.conf, pastikan semua semua hal berikut diatur: -

    • chroot_local_user = YA
    • chroot_list_enable = YA
    • chroot_list_file = / etc / vsftpd.chroot_list

Hanya daftarkan pengguna dalam vsftpd.chroot_listfile jika Anda ingin mereka memiliki akses penuh ke mana saja di server. Dengan tidak mencantumkan mereka dalam file ini, Anda mengatakan batasi semua vsftpdpengguna ke direktori home yang ditentukan.

Dengan kata lain (untuk referensi): -

  1. berarti secara default, SEMUA pengguna mendapatkan chroot kecuali pengguna dalam file ...
    • chroot_local_user = YA
    • chroot_list_enable = YA
  2. berarti secara default, HANYA pengguna dalam file mendapatkan chroot ...
    • chroot_local_user = TIDAK
    • chroot_list_enable = YA
zigojacko
sumber
Mengapa tidak mengatur direktori home pengguna tersebut secara langsung /var/www/vhosts/domain.com/? Apakah ada masalah dengan itu (seperti risiko potensial)?
Tema
2
Saya baru tahu bahwa vsftp tampaknya melarang untuk memberikan izin pengguna menulis ftp pada tingkat atas chroot untuk alasan keamanan (tapi saya tidak 100% yakin). Jadi itu mungkin menjadi alasan untuk memiliki "tipuan" ini untuk memberikan akses menulis ftp pengguna ke folder tertentu sementara tidak mengizinkan untuk melihat folder saudara (yang akan menjadi kasus jika Anda hanya mengatur rumahnya satu tingkat ke atas, yang menghindari masalah yang disebutkan). (lihat ubuntuforums.org/… )
leemes
2
@zigojacko apakah pengguna Anda hanya melihat dir home yang ditugaskan? Bagi saya, ini default pengguna ke direktori yang ditetapkan, tetapi, mereka masih dapat melihat folder lain dan dapat menyelinap di sepanjang jalan sampai ke root, meskipun dengan hanya akses baca.
GraehamF
1
Jawaban ini, dalam kombinasi dengan unix.stackexchange.com/questions/208960/… adalah jawaban lengkap untuk saya. Saya akhirnya membuat pengguna dalam grup dan membatasi akses grup ke direktori yang diinginkan.
GraehamF
10

Bagi saya itu tidak berhasil bahkan setelah di atas. Ada local_root yang sudah disetel ke direktori, dan apa pun yang saya lakukan, direktori pengguna belum dipenjara. Akhirnya berhasil setelah hanya diubah

chroot_local_user = YA

Dan mengikuti prosedur

  1. vi /etc/vsftpd.conf
  2. Tambahkan baris 'user_config_dir = / etc / vsftpd_user_conf' (tidak ada tanda kutip)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi user_name;
  6. Masukkan baris 'local_root = / srv / ftp / user_name'

Hanya dua sen saya jika ada orang lain yang memiliki masalah yang sama.

gnaanaa
sumber
Saya mengikuti prosedur ini untuk mengubah direktori root vsftpd, termasuk langkah-langkah tambahan oleh gnaanaa. Sayangnya, belum berfungsi. Filezilla melaporkan 530 Login salah. Pengguna dan kata sandi sesuai dengan prosedur di atas (nama_pengguna). Saya membuat ftp2 pengguna uji, dan mengatur kata sandinya. Log masuk normal Filezilla menggunakan nama pengguna dan kata sandi itu. Saya juga mengatur direktori root hanya baca, dan membuat direktori tingkat bawah dengan izin tulis sesuai dengan posting ini saya menggunakan Ubuntu 16.04 jika itu membuat perbedaan.
tim11g
Saya menggunakan Ubuntu 16.04 jika itu membuat perbedaan, @gnaanaa. Juga saya pikir itu aneh bahwa tidak ada direktori ftp di / var. Jadi saya harus membuat / var / ftp, dan kemudian / var / ftp / user_name. code<br/> Respons: 220 (vsFTPd 3.0.3) <br/> Perintah: USER ftp2 <br/> Respons: 331 Silakan tentukan kata sandi. <br/> Perintah: LULUS ***** <br/> Respons : 530 Login salah. <br/> Kesalahan: Kesalahan kritis: Tidak dapat terhubung ke server <br/>code
tim11g
Pertama, lihat mengapa Anda tidak bisa masuk ke server. Anda dapat men-debug masalah dengan memenjarakan hanya setelah login berhasil. Tepuk tangan.
gnaanaa
Apakah vsftp menggunakan pengguna / kata sandi yang berbeda dibandingkan dengan akun di mesin? Saya menemukan bahwa kata sandi seseorang harus ditetapkan secara terpisah dengan smbpasswd -a. Apakah vsftpd bekerja dengan cara yang sama?
tim11g
Tidak, ini adalah akun pengguna sistem. periksa jawaban ini: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa