共計(jì) 5167 個(gè)字符,預(yù)計(jì)需要花費(fèi) 13 分鐘才能閱讀完成。
本篇文章為大家展示了如何進(jìn)行 VSFTP+MySQL 虛擬用戶配置,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
VSFTPD 是一種在 UNIX/Linux 中非常安全且快速的 FTP 服務(wù)器,目前已經(jīng)被許多大型站點(diǎn)所采用。VSFTPD 支持將用戶名和口令保存在數(shù)據(jù)庫文件或數(shù)據(jù)庫服務(wù)器中。VSFTPD 稱這種形式的用戶為虛擬用戶。相對于 FTP 的本地 (系統(tǒng)) 用戶來說,虛擬用戶只是 FTP 服務(wù)器的專有用戶,虛擬用戶只能訪問 FTP 服務(wù)器所提供的資源,這大大增強(qiáng)系統(tǒng)本身的安全性。相對于匿名用戶而言,虛擬用戶需要用戶名和密碼才能獲取 FTP 服務(wù)器中的文件,增加了對用戶和下載的可管理性。對于需要提供下載服務(wù),但又不希望所有人都可以匿名下載; 既需要對下載用戶進(jìn)行管理,又考慮到主機(jī)安全和管理方便的 FTP 站點(diǎn)來說,虛擬用戶是一種極好的解決方案。本文介紹在 RedHat Linux 9 上如何將 VSFTPD 的虛擬用戶名和密碼保存在 MySQL 數(shù)據(jù)庫服務(wù)器中。
一、VSFTPD 的安裝
目前,VSFTPD 的最新版本是 1.2.0 版。官方下載地址為 ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.0.tar.gz。在安裝前,需要先做以下準(zhǔn)備工作:
VSFTPD 默認(rèn)配置中需要“nobody”用戶。在系統(tǒng)中添加此用戶,如果用戶已經(jīng)存在,useradd 命令有相應(yīng)提示。
[root@hpe45 root]# useradd nobody
useradd: user nobody exists
VSFTPD 默認(rèn)配置中需要“/usr/share/empty”目錄。在系統(tǒng)中此目錄,如果目錄已經(jīng)存在,mkdir 命令有相應(yīng)提示。
[root@hpe45 root]# mkdir /usr/share/empty/
mkdir: cannot create directory /usr/share/empty : File exists
VSFTPD 提供匿名 FTP 服務(wù)時(shí),需要“ftp”用戶和一個(gè)有效的匿名目錄。
[root@hpe45 root]# mkdir /var/ftp/
[root@hpe45 root]# useradd -d /var/ftp ftp
接下來的操作對于 ftp 用戶是否已經(jīng)存在都是有用的。
[root@hpe45 root]# chown root.root /var/ftp
[root@hpe45 root]# chmod og-w /var/ftp
以上準(zhǔn)備工作完成后,我們就可以開始編譯源代碼了。假定我們下載的 vsftpd-1.2.0.tar.gz 在 /root 目錄,執(zhí)行以下命令:
[root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz
[root@hpe45 root]# cd vsftpd-1.2.0
[root@hpe45 vsftpd-1.2.0]# make
[root@hpe45 vsftpd-1.2.0]# make install
上面的“make install”命令將編譯好的二進(jìn)制文件、手冊等復(fù)制到相應(yīng)目錄。在 RHL9 上,可能需要手動執(zhí)行以下復(fù)制:
[root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd
[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5
[root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8
接下來,我們復(fù)制一個(gè)簡單的配置文件作為基礎(chǔ)供后面修改。
[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc
[root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
復(fù)制 PAM 驗(yàn)證文件,以允許本地用戶登錄 VSFTPD。
[root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
二、創(chuàng)建 guest 用戶
VSFTPD 采用 PAM 方式驗(yàn)證虛擬用戶。由于虛擬用戶的用戶名 / 口令被單獨(dú)保存,因此在驗(yàn)證時(shí),VSFTPD 需要用一個(gè)系統(tǒng)用戶的身份來讀取數(shù)據(jù)庫文件或數(shù)據(jù)庫服務(wù)器以完成驗(yàn)證,這就是 VSFTPD 的 guest 用戶。這正如同匿名用戶也需要有一個(gè)系統(tǒng)用戶 ftp 一樣。當(dāng)然,我們也可以把 guest 用戶看成是虛擬用戶在系統(tǒng)中的代表。下面在系統(tǒng)中添加 vsftpdguest 用戶,作為 VSFTPD 的 guest。
[root@hpe45 vsftpd-1.2.0]# useradd vsftpdguest
當(dāng)虛擬用戶登錄后,所在的位置為 vsftpdguest 的自家目錄 /home/vsftpdguest。如果要讓虛擬用戶登錄到 /var/ftp 等其他目錄,修改 vsftpdguest 的自家目錄即可。
三、設(shè)置 VSFTPD 配置文件
在 /etc/vsftpd.conf 文件中,加入以下選項(xiàng):
guest_enable=YES
guest_username=vsftpdguest
然后執(zhí)行以下命令,讓 VSFTPD 在后臺運(yùn)行:
[root@hpe45 vsftpd-1.2.0]# /usr/local/sbin/vsftpd
四、將虛擬用戶保存在 MySQL 數(shù)據(jù)庫服務(wù)器中
我們建立數(shù)據(jù)庫 vsftpdvu,表 users,字段 name 和 passwd 用于保存虛擬用戶的用戶名和口令, 同時(shí)增加兩個(gè)虛擬用戶 xiaotong 和 xiaowang。
[root@hpe45 vsftpd-1.2.0]# mysql -p
mysql create database vsftpdvu;
mysql use vsftpdvu;
mysql create table users(name char(16) binary,passwd char(16) binary);
mysql insert into users (name,passwd) values (xiaotong ,password( qqmywife
mysql insert into users (name,passwd) values (xiaowang ,password( ttmywife
mysql quit
然后,授權(quán) vsftpdguest 可以讀 vsftpdvu 數(shù)據(jù)庫的 users 表。執(zhí)行以下命令:
[root@hpe45 vsftpd-1.2.0]# mysql -u root mysql -p
mysql grant select on vsftpdvu.users to vsftpdguest@localhost identified by i52serial0
mysql quit
如果要驗(yàn)證剛才的操作是否成功可以執(zhí)行下面命令:
[root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu
mysql select * from users;
如果成功,將會列出 xiaotong、xiaowang 和加密后的密碼
五、設(shè)置 MySQL 的 PAM 驗(yàn)證
這里我們要用到一個(gè)利用 mysql 進(jìn)行 pam 驗(yàn)證的開源項(xiàng)目(http://sourceforge.net/projects/pam-mysql/)。首先從網(wǎng)站下載它的程序包 pam_myql-0.5.tar.gz,復(fù)制到 /root 目錄中。在編譯安裝之前,要確保 mysql-devel 的 RPM 包已經(jīng)安裝在你的機(jī)器上,如果沒有請從 RHL 安裝光盤中安裝該包。然后,執(zhí)行以下命令:
[root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz
[root@hpe45 root]#cd pam_mysql
[root@hpe45 pam_mysql]#make
[root@hpe45 pam_mysql]#make install
make install 這一步可能會出現(xiàn)錯(cuò)誤,那只好手動將該目錄下生成的 pam_mysql.o 復(fù)制到 /lib/security 目錄下。
接下來,我們要設(shè)置 vsftpd 的 PAM 驗(yàn)證文件。打開 /etc/pam.d/ftp 文件,加入以下內(nèi)容:
auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
上面涉及到的參數(shù),只要對應(yīng)前面數(shù)據(jù)庫的設(shè)置就可以明白它們的含義。這里需要說明的是 crypt 參數(shù)。crypt 表示口令字段中口令的加密方式:crypt=0,口令以明文方式 (不加密) 保存在數(shù)據(jù)庫中;crypt=1,口令使用 UNIX 系統(tǒng)的 DES 加密方式加密后保存在數(shù)據(jù)庫中;crypt=2,口令經(jīng)過 MySQL 的 password()函數(shù)加密后保存。
六、進(jìn)一步的虛擬用戶設(shè)置
經(jīng)過以上的步驟,虛擬用戶就可以正常使用了。這里介紹進(jìn)一步的虛擬用戶設(shè)置。首先,介紹虛擬用戶的權(quán)限設(shè)置。
VSFTPD-1.2.0 新添了 virtual_use_local_privs 參數(shù),當(dāng)該參數(shù)激活 (YES) 時(shí),虛擬用戶使用與本地用戶相同的權(quán)限。當(dāng)此參數(shù)關(guān)閉 (NO) 時(shí),虛擬用戶使用與匿名用戶相同的權(quán)限,這也就是 VSFTPD-1.2.0 之前版本對虛擬用戶權(quán)限的處理方法。這兩者種做法相比,后者更加嚴(yán)格一些,特別是在有寫訪問的情形下。默認(rèn)情況下此參數(shù)是關(guān)閉的(NO)。
當(dāng) virtual_use_local_privs=YES 時(shí),只需設(shè)置 write_enable=YES,虛擬用戶就可以就擁有寫權(quán)限。而 virtual_use_local_privs=NO 時(shí),對虛擬用戶權(quán)限的設(shè)置就更多一些更嚴(yán)格一些。
控制虛擬用戶瀏覽目錄:如果讓用戶不能瀏覽目錄,但仍可以對文件操作,那么需要執(zhí)行以下二個(gè)步驟:一,配置文件中,anon_world_readable_only=YES。二,虛擬用戶目錄的權(quán)限改為只能由 vsftpdguest 操作:
[root@hpe45 root]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
[root@hpe45 root]# chmod 700 /home/vsftpdguest
允許虛擬用戶上傳文件:
write_enable=YES
anon_upload_enable=YES
允許虛擬用戶修改文件名和刪除文件:
anon_other_write_enable=YES
由于以上選項(xiàng)的設(shè)置同樣會對匿名用戶生效。如果不想匿名用戶趁機(jī)擁有同樣的權(quán)限,最好是禁止匿名用戶登錄。
其次,由于虛擬用戶在系統(tǒng)中是 vsftpdguest 身份,所以可以訪問到系統(tǒng)的其他目錄。為了更加安全,我們可以將虛擬用戶限制在自家目錄下。有兩種做法:一,在配置文件中增加以下選項(xiàng)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
然后,在 /etc/vsftpd.chroot_list 文件中加入虛擬用戶名 xiaotong 和 xiaowang。
第二種做法,在配置文件中修改 chroot_local_user=YES。
經(jīng)過修改后,虛擬用戶登錄后其根目錄就限制在 /home/vsftpdguest 下,無法訪問其他目錄。
七、虛擬用戶的個(gè)人目錄
大家可以發(fā)現(xiàn),無論是哪個(gè)虛擬用戶,登錄后所在的目錄都是 /home/vsftpdguest,即都是 guest_username 用戶的自家目錄。下面,介紹如何為每個(gè)虛擬用戶建立自家目錄。首先,在主配置文件中加入以下選項(xiàng):
user_config_dir=/etc/vsftpd/vsftpd_user_conf
然后,生成 /etc/vsftpd/vsftpd_user_conf 目錄,并在該目錄下建立與特定虛擬用戶同名的文件:
[root@hpe45 root]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@hpe45 root]# cd /etc/vsftpd/vsftpd_user_conf
上述內(nèi)容就是如何進(jìn)行 VSFTP+MySQL 虛擬用戶配置,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。