vsftpd使用虛擬賬號功能以及設置相關權限
我們登錄FTP有三種方式,匿名登錄、本地用戶登錄和虛擬用戶登錄。
匿名登錄:在登錄FTP時使用默認的用戶名,一般是ftp或anonymous。
本地用戶登錄:使用系統用戶登錄,在/etc/passwd中。
虛擬用戶登錄:這是FTP專有用戶,有兩種方式實現虛擬用戶,本地數據文件和數據庫服務器。
FTP虛擬用戶是FTP服務器的專有用戶,使用虛擬用戶登錄FTP,只能訪問FTP服務器提供的資源,大大增強了系統的安全。
例:FTP虛擬賬號
公司為了宣傳最新的產品信息,計劃搭建FTP服務器,為客戶提供相關的文檔的下載。對所有互聯網開放共享目錄,允許下載產品信息,禁止上傳。公司的合作單位能夠使用FTP服務器進行上傳和下載,但不可以刪除數據。需要保證服務器的穩定性並做優化。
創建FTP虛擬賬號。允許客戶使用FTP賬號下載文件。合作夥伴賬號:vip賬號 可以上傳文件。
需考慮到服務器的安全性,所以關閉實體用戶登錄,是用虛擬賬號驗證機制,並對不同賬號設置不同的權限。 保證服務器的性能,還需要根據用戶等級,限制客戶端的連接數以及下載速度。
1、創建用戶數據庫:
(1)創建用戶文本文件
先建立用戶文本文件vsftpd_virtualuser.txt,添加兩個虛擬賬號,公共賬號ftp以及客戶賬號vip
[[email protected] vsftpd]# vim /etc/vsftpd/vsftpd_virtualuser.txt #寫入以下內容,格式:一行賬號一行密碼。
ftp #用戶 123456 #密碼 vip 123456
(2)生成數據庫
保存虛擬賬號和密碼的文本文件無法被系統賬號直接調用。我們需要使用db_load命令生成db數據庫文件。
安裝:
[[email protected] vsftpd]# rpm -qf `which db_load`
db4-utils-4.7.25-22.el6.x86_64
[[email protected] vsftpd]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
選項:
-T 允許應用程序能夠將文本文件轉譯載入進數據庫。
-t hash 使用hash碼加密。
-f 指定包含用戶名和密碼文本文件。此文件格式:奇數行用戶名、偶數行密碼。
[[email protected] vsftpd]# rm -rf vsftpd_virtualuser.txt #為了安全,刪除此文件。後期將不再使用此文件。
(3)修改數據庫文件訪問權限
[[email protected] vsftpd]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db [[email protected] vsftpd]# ls -l /etc/vsftpd/vsftpd_virtualuser.db -rw------- 1 root root 12288 9月 24 13:16 /etc/vsftpd/vsftpd_virtualuser.db
2、配置PAM文件
為了使服務器能夠使用數據庫文件,對客戶端進行身份驗證,需要調用系統的PAM模塊。
PAM概述:
PAM(Pluggable Authentication Module)為可插拔認證模塊,不必重新安裝應用系統,通過修改指定的配置文件,調整對該程序的認證方式。PAM模塊配置文件路徑為/etc/pam.d/目錄,此目錄下保存著大量與認證有關的配置文件,並以服務名稱命名。
[[email protected] vsftpd]# vim /etc/pam.d/vsftpd
修改vsfptd對應的PAM配置文件/etc/pam.d/vsftpd。將默認配置使用“#”全部註釋,添加兩行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
3、創建虛擬賬號對應的系統用戶及FTP共享的目錄。
對於公共賬號和客戶賬號,因為需要配置不同的權限,所以可以將兩個賬號的目錄進行隔離,控制用戶的文件訪問。公共賬號ftp對應系統賬號ftpuser,並指定其主目錄為/var/ftp/share,而客戶賬號vip對應系統賬號ftpvip,指定主目錄為/var/ftp/vip。
[[email protected] vsftpd]# useradd -d /var/ftp/share ftpuser [[email protected] vsftpd]# useradd -d /var/ftp/share ftpvip [[email protected] vsftpd]# chmod -R 500 /var/ftp/share/ #修改權限 [[email protected] vsftpd]# chmod -R 700 /var/ftp/vip/ [[email protected] vsftpd]# chown ftpuser /var/ftp/share [[email protected] vsftpd]# chown ftpvip /var/ftp/vip
chmod -R 500 /var/ftp/share/ : 公共賬號ftp只允許下載,修改share目錄其他用戶權限 rx 可讀可執行。
chmod -R 500 /var/ftp/vip/ : 客戶賬號vip允許上傳和下載,所以對vip目錄權限設置為 rwx ,可讀可寫可執行。
4、建立配置文件:
一個配置文件無法實現此功能,需要為每個賬戶建立獨立的配置文件,並根據需要進行相應的設置。
(1)修改vsftpd.comf 主配置文件
[[email protected] vsftpd]# cat /etc/vsftpd/vsftpd.conf | grep -v "#" anonymous_enable=NO #不允許匿名登錄 local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd max_clients=300 #設置FTP服務器最大接入客戶端數為300個 max_per_ip=10 #設置每個IP地址最大連接數為10 user_config_dir=/etc/vsftpd/vuserconfig #設置虛擬賬號的主目錄為/vuserconfig userlist_enable=YES tcp_wrappers=YES
(2)建立虛擬賬號配置文件
在user_config_dir指定路徑下,建立與虛擬賬號同名的配置文件並添加相應的配置字段。
首先建立公共賬號ftp的配置文件
[[email protected] vuserconfig]# mkdir /etc/vsftpd/vuserconfig [[email protected] vuserconfig]# touch /etc/vsftpd/vuserconfig/ftp [[email protected] vuserconfig]# touch /etc/vsftpd/vuserconfig/vip
配置虛擬賬號配置文件,寫入以下內容:
[[email protected] vuserconfig]# vim /etc/vsftpd/vuserconfig/ftp guest_enable=yes guest_username=ftpuser anon_world_readable_only=no anon_max_rate=50000
解釋:
guest_enable=yes #開啟虛擬賬號登錄
guest_username=ftpuser #設置ftp 對應的系統賬號名稱為ftpuser
anon_world_readable_only=no #允許匿名用戶瀏覽整個服務器的文件系統
anon_max_rate=50000 #限定傳輸速率為50KB/s
註意:
vsftpd對於文件傳輸速度限制並不是絕對鎖定在一個數值上,而是在80%~120%之間變化,比如設置100KB/s,則實際速度在80~120KB/s之間變化。
[[email protected] vuserconfig]# vim /etc/vsftpd/vuserconfig/vip guest_enable=yes guest_username=ftpvip anon_world_readable_only=no write_enable=yes anon_mkdir_write_enable=yes anon_upload_enable=yes anon_max_rate=100000
解釋:
guest_enable=yes #開啟虛擬賬號登錄
guest_username=ftpvip #設置ftp對應的系統賬號為ftpvip
anon_world_readable_only=no #允許匿名用戶瀏覽整個服務器的文件系統
write_enable=yes #允許在文件系統寫入權限
anon_mkdir_write_enable=yes #允許創建文件夾
anon_upload_enable=yes #開啟匿名賬號的上傳功能
anon_max_rate=100000 #限定傳輸速度為100KB/s
重啟vsftpd服務使配置文件生效
[[email protected] ~]# service vsftpd restart 關閉 vsftpd: [確定] 為 vsftpd 啟動 vsftpd: [確定]
測試:可以通過ftp客戶端和Windows進行測試。
(1)公共賬號ftp測試
在公共賬號測試前,我們先建立個測試文件。
[[email protected] ~]# cp /mnt/Packages/mysql-embedded-5.1.73-8.el6_8.x86_64.rpm /var/ftp/share #共享的文件要大一些,方面後期測試下載速度。 [[email protected] ~]# cp -r /boot/grub/ /var/ftp/share/ #復制一個目錄
在Linux下測試。
ftp客戶端命令:
lftp ftpIP -u username,passwd
或:
lftp ftpIP -u username
使用公共賬號ftp,登錄ftp服務器
[[email protected] ftp]# lftp 192.168.2.208 -u ftp,123456 lftp [email protected]:~> ls drwxr-xr-x 2 0 0 4096 Sep 24 06:30 grub -r--r--r-- 1 0 0 2567552 Sep 24 06:29 mysql-embedded-5.1.73-8.el6_8.x86_64.rpm -r-x------ 1 0 0 2007 Sep 24 05:03 passwd -r-x------ 1 0 0 821772288 Sep 24 05:01 text.txt lftp [email protected]:/> get mysql-embedded-5.1.73-8.el6_8.x86_64.rpm 2567552 bytes transferred in 51 seconds (48.8K/s) #速度限制在50KB/s左右
使用vip賬號登錄ftp服務器
[[email protected] ftp]# lftp 192.168.2.208 -u vip 口令: lftp [email protected]:~> ls -rw-r--r-- 1 0 0 91459584 Sep 24 06:53 text.txt lftp [email protected]:/> put text.log #可以上傳 lftp [email protected]:/> ls -rw------- 1 505 505 0 Sep 24 06:55 text.log -rw-r--r-- 1 0 0 91459584 Sep 24 06:53 text.txt lftp [email protected]:/> rm -r text.log #無法刪除 rm: Access failed: 550 Permission denied. (text.log) [[email protected] ftp]# cp /var/ftp/share/mysql-embedded-5.1.73-8.el6_8.x86_64.rpm /var/ftp/vip/a.zip lftp [email protected]:~> ls -r--r--r-- 1 0 0 2567552 Sep 24 07:00 a.zip -rw------- 1 505 505 0 Sep 24 06:55 text.log lftp [email protected]:/> get a.zip 2567552 bytes transferred in 26 seconds (97.6K/s) #速度在100KB/s左右
到這一步,我們已經成功創建了兩個虛擬賬號vip以及ftp,並且權限全部設置完畢。
如果後期vip賬號想要刪除某個文件怎麽辦呢?
drwx------ 2 505 505 4096 Sep 24 06:22 text.log lftp [email protected]:/> rm text.log/ rm: Access failed: 550 Permission denied. (text.log/) #刪除失敗
編輯vip賬號的配置文件,添加一行。
[[email protected] vuserconfig]# vim vip guest_enable=yes guest_username=ftpvip anon_world_readable_only=no write_enable=yes anon_mkdir_write_enable=yes anon_upload_enable=yes anon_max_rate=100000 anon_other_write_enable=yes #添加此行
重啟vsftpd服務重讀配置文件
[[email protected] vuserconfig]# service vsftpd restart 關閉 vsftpd: [確定] 為 vsftpd 啟動 vsftpd: [確定]
再次嘗試刪除文件
[[email protected] ~]# lftp 192.168.2.208 -u vip 口令: lftp [email protected]:~> ls -r--r--r-- 1 0 0 2567552 Sep 24 07:00 a.zip -rw------- 1 505 505 0 Sep 24 06:55 text.log lftp [email protected]:/> rm -r text.log rm 成功, 刪除 `text.log‘ lftp [email protected]:/> #成功刪除文件
本文出自 “PooV的博客” 博客,請務必保留此出處http://xyhms.blog.51cto.com/12505169/1968187
vsftpd使用虛擬賬號功能以及設置相關權限