Saya harus dapat menambahkan pengguna virtual ke vsftpd yang hanya memiliki akses ke sub folder. Alasan mengapa saya ingin menggunakan pengguna virtual adalah saya hanya ingin memiliki 1 pengguna nyata di server.
Struktur FTP adalah:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
Akun utama memiliki akses ke folder www dan semua sub direktori dan saya ingin menambahkan pengguna virtual yang dapat memiliki akses ke sub_folder1 dan hanya sub_folder1
Juga untuk menghindari kebingungan, saya juga akan meminta pengguna lain untuk mengakses sub_folder3 dan hanya sub_folder3 . Maksud saya adalah saya harus dapat memilih folder dan sub folder mana pada pengguna berdasarkan pengguna.
Saya telah menemukan cara untuk menambahkan pengguna untuk melihat seluruh strucutre atau mengatur folder bernama pengguna yang keduanya tidak berguna bagi saya.
Saya menemukan pertanyaan serupa yang diposting di sini:
Cara mengatur VSFTPD untuk banyak pengguna termasuk menambahkan direktori tertentu
tetapi merekomendasikan proftpd
yang saya pikir secara umum kurang aman.
Atau apakah saya melewatkan poin di sini?
sumber
Jawaban:
Dengan sedikit bermain-main, saya berhasil membuat solusi semi (tidak sempurna tetapi cukup baik)
menggunakan 2707974 jawaban dan informasi yang saya peroleh di mana pun saya bisa mendapatkan apa yang saya butuhkan.
Pertama, Anda perlu vsftp dan PAM diinstal
Edit /etc/vsftpd.conf
kemudian rekatkan di bawah ini
Edit sesuai kebutuhan Anda, bit paling penting bagi pengguna virtual adalah segalanya setelah komentar pengaturan pengguna virtual
Menciptakan Pengguna
Anda dapat menggunakan database atau
htpasswd
saya menemukanhtpasswd
lebih cepat dan lebih mudah digunakan.buat direktori untuk menyimpan pengguna Anda
menambahkan pengguna tambahan cukup hapus
-c
Saya hanya berhasil membuatnya bekerja menggunakan CRYPT yang membatasi hingga 8 karakter untuk menggunakan lebih dari 8 karakter menggunakan openssl untuk menghasilkan hash yang kompatibel dan pipa langsung ke htpasswd
Setelah pengguna Anda dibuat, Anda sekarang dapat mengubah file konfigurasi PAM Anda
dan hapus semua yang ada di dalam file ini dan ganti dengan yang berikut ini
Ini akan memungkinkan login untuk pengguna virtual Anda yang ditentukan dalam
/etc/vsftpd/ftpd.passwd
dan akan menonaktifkan pengguna lokalSelanjutnya kita perlu menambahkan pengguna untuk digunakan pengguna virtual ini. Pengguna ini tidak akan memiliki akses ke shell dan akan dipanggil
vsftpd
pengguna harus cocok
guest_username=vsftpd
dengan file conf vsftpdMenentukan Akses Direktori
Baris penting di sini adalah sebagai berikut
ini berarti bahwa ketika
user1
login akan mencari file berikutfile ini sama dengan
vsftpd.conf
sehingga Anda dapat mendefinisikan yang barulocal_root
kembali ke pertanyaan yang
user1
hanya ingin kita aksesvar/www/website_name1/sub_folder1
, jadi kita perlu membuatvsftpd_user_conf
folder:Sekarang buat file pengguna:
dan masukkan baris berikut
Sekarang mulai ulang vsftp
Anda sekarang harus dapat login sebagai user1 yang hanya akan dapat melihat
var/www/website_name1/sub_folder1
dan semua folder dan file di dalamnya.Itu saja sekarang Anda dapat menambahkan pengguna sebanyak yang Anda inginkan dan membatasi akses mereka ke folder apa pun yang Anda inginkan.
Penting untuk diingat jika Anda tidak membuat file conf pengguna itu akan default ke folder var / www sebagai root (dalam contoh di atas)
Jika subfolder dimaksudkan untuk dimodifikasi oleh pengguna, mungkin perlu mengubah pemilik subfolder bersama:
sumber
Coba dengan manual ini. Mungkin akan berhasil untuk Anda.
Bagaimana cara melakukannya
Instal vsftpd dan perpustakaan PAM
Edit
/etc/vsftpd.conf
dan/etc/pam.d/vsftpd
Buat akun pengguna dengan direktori khusus (di / var / www / misalnya)
Atur direktori dengan yang benar
chmod
danchown
Buat pengguna admin dengan akses penuh ke server
vsftpd
(Deamon FTP Sangat Aman) danlibpam-pwdfile
untuk membuat pengguna virtualSaya ingin membuat pengguna FTP tetapi saya tidak ingin menambahkan pengguna unix lokal (tidak ada akses shell, tidak ada direktori home dan sebagainya). PAM (Modul Otentikasi Pluggable) akan membantu Anda membuat pengguna virtual.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Pertama, Anda perlu membuat cadangan file asli
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Kemudian buat yang baru
sudo vim /etc/vsftpd.conf
Salin dan rekatkan baris berikut. File HANYA harus berisi baris-baris ini:
Untuk mendaftarkan pengguna yang Anda gunakan
htpasswd
, jadi saya menganggap Anda telahapache2
bekerja di server Anda. Buatvsftpd
folder lalu masukkan file konfigurasi ke dalamnya.sudo mkdir /etc/vsftpd
kemudian
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
-c berarti bahwa kita akan membuat file jika belum ada -d memaksa MD5, Anda membutuhkannya di ubuntu 12.04, cukup gunakan selalu
Perintah akan meminta kata sandi.
Jika Anda ingin menambahkan pengguna baru setelahnya:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Sekali lagi, Anda perlu mencadangkan file orignal
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
dan buat yang baru
sudo vim /etc/pam.d/vsftpd
Salin dan tempel 2 baris ini (ini harus menjadi satu-satunya konten). Saya bersikeras hanya 2 baris ini, saya membuang banyak waktu menjaga yang asli dan hanya menambahkan ini.
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Anda dapat memeriksa apakah telah dibuat dengan perintah id: id vsftpd. Kami mendefinisikan pengguna dengan / bin / shell palsu karena parameter check_shell (bahkan jika Anda tidak menggunakannya). Ketika pengguna akhir terhubung ke server FTP, mereka akan digunakan untuk hak dan kepemilikan:
chmod
danchown
.vsftpd
Cara yang umum adalah menggunakan init.d seperti semua deamon
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
Menurut konfigurasi, semua pengguna akan ditempatkan ke folder ini: / var / www / user1.
Anda perlu membuatnya dengan hak tertentu: folder root tidak dapat ditulis!
Catatan: pengguna tidak dapat membuat file atau folder di direktori root.
Di
vsftpd.conf
kita milikichroot_local_user=YES
sehingga pengguna tidak dapat melihat apa pun di luar foldernya. Baginya, server terlihat seperti ini:Jadi jalankan saja perintah-perintah ini:
The
/var/www/user1
folder TELAH ada atau koneksi akan gagal.Saat ini Anda dapat mencoba terhubung dengan FTP Anda
Untuk membuat pengguna admin, kami harus mendaftarkan pengguna baru
htpasswd
.Sebelum kita melakukannya, saya akan menyarankan Anda untuk memeriksa
/etc/ftpusers
file yang menentukan pengguna tertentu yang tidak diizinkan untuk terhubung dengan ftp. Saya pikir ini hanya untuk pengguna lokal dan bukan pengguna virtual tetapi kalau-kalau jangan memilih nama yang terkandung dalam file ini.sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Sekarang kita perlu menambahkan baris baru ke
/etc/vsftpd.conf
chroot_list_enable=YES
Ini berarti bahwa pengguna Anda akan ditempatkan ke dalam folder mereka (sebagai penjara) KECUALI pengguna di / etc /
vsftpd.chroot_list
Mari kita buat file ini dan tambahkan pengguna kita, file tersebut adalah garis sederhana yang mengandung "theadmin". Tambahkan satu pengguna per baris. Itu berarti Anda TIDAK perlu membuat
/var/www/theadmin
folder, pengguna akan masuk dan mulai masuk/home/vsftpd
.Mulai ulang server dan selesai!
sumber
ya Anda bisa, dan untuk fleksibilitas buat direktori dan file userconfig,
mkdir /var/www/userconfs
atau apa pun yang Anda ingin ubah nama userconf, kemudian buat file tertentutipe dalam,
local_root=/var/www
(atau apa pun yang ingin Anda akses dengan dir)guest_username=www-data
(pemilik ubuntu dari edit teratas filesetelah memperbarui Anda vsftpd.conf dengan menambahkan
user_config_dir=/var/www/userconfigs
(atau apa pun yang Anda ganti, akun ini akan mengakses apa pun yang ditentukan sdir Anda)sumber