Batasi akses FTP hanya ke / var / www dengan vsftpd

41

Saya menjalankan vsftpd sebagai server ftp di linux saya (rasbian), saya masuk ke mesin sebagai pengguna root.

Saya ingin tetap terkunci hanya menggunakan / var / www, bagaimana saya bisa mengkonfigurasi vsftpd conf untuk mencapainya?

Badr Hari
sumber
1
Periksa chroot opsi vsftpd.confdan buat pengguna terpisah untuk homedir yang diatur untuknya /var/www.
jirib

Jawaban:

65

Metode 1: Mengubah direktori home pengguna

Pastikan baris berikut ada

chroot_local_user=YES

Setel direktori HOME pengguna ke /var/www/, jika Anda ingin mengubah untuk pengguna yang ada maka Anda dapat menggunakan:

usermod --home /var/www/ username

kemudian atur izin yang diperlukan pada /var/www/

Metode 2: Gunakan user_sub_token

Jika Anda tidak ingin mengubah direktori Beranda pengguna maka Anda dapat menggunakan:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

Tentang user_sub_token:

Secara otomatis menghasilkan direktori home untuk setiap pengguna virtual, berdasarkan pada templat. Misalnya, jika direktori home dari pengguna asli yang ditentukan melalui guest_username adalah / ftphome / $ USER, dan user_sub_token disetel ke $ USER, maka ketika tes pengguna virtual masuk, ia akan berakhir (biasanya chroot () diedit) di direktori / ftphome / test. Opsi ini juga berlaku jika local_root berisi user_sub_token.

Buat direktori dan atur izin:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

Setelah restart vsftpddan uji pengaturan Anda.

Contoh keberhasilan keluaran:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.
Rahul Patil
sumber
2
Perhatikan bahwa Anda dapat memiliki akhiran setelah $USERuntuk local_root, seperti /home/$USER/ftp(yang akan chroot pengguna ke ftpsubdirektori direktori home mereka).
Benoit Duffez
Catatan komentar di vsftp FAQ tentang chroot ke folder dapat ditulis oleh pengguna masuk. Ini sangat mungkin dalam kasus menempatkan local_rootke direktori home pengguna yang sebenarnya.
Thomas Urban
Di mana untuk mengonfirmasi bahwa "chroot_local_user = YES" ada?
The One
4

Kamu bisa melakukan ini:

usermod --home /var/www/ username
Zeev Cohen
sumber
5
Jawaban satu atau dua baris sering dianggap berkualitas rendah. Silakan pertimbangkan untuk memperluas posting Anda dengan beberapa penjelasan tentang apa yang rekomendasi Anda lakukan bersama dengan tautan atau dokumentasi yang menyarankan kemampuan rekomendasi Anda untuk benar-benar menyelesaikan masalah.
HalosGhost
2

Saya menggunakan saran Rahul Patil di atas:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Tetapi saya tidak mengerti mengapa saya hanya bisa masuk dengan satu pengguna. Kemudian saya menemukan bahwa kami tidak dapat melakukan chroot ke direktori root (untuk kasus ini, /home/$USER/www-data) yang memiliki akses tulis. Jadi saya menghapus akses tulis dengan:

# chmod a-w /home/$USER/www-data

CATATAN: ubah $USERdengan pengguna Anda.

Rizal Rahman
sumber
1

Periksa chrootopsi vsftpd.confdan buat pengguna terpisah untuk homedir yang diatur untuknya /var/www.

jirib
sumber
Saya sangat sadar akan hal itu, saya akan membuat pengguna yang terpisah. Saya mungkin harus mendesain ulang pertanyaan saya lalu bagaimana saya dapat membatasi pengguna untuk memisahkan jalur saja
Badr Hari
Gunakan sftp dari OpenSSH. Lihat man sshd_config untuk internal-sftp, lalu 'ForceCommand' dan lihat 'ChrootDirectory'. OpenSSH yang lebih baru juga menambahkan opsi untuk sftp-server untuk beralih ke jalur tertentu, sehingga dalam kombinasi dengan ChrootDirectory dapat Anda lakukan: chroot -> / path -> tujuan -> 'onlyhere' = / chroot / onlyhere
jirib