vsftpd服務器同時支持匿名用戶、本地用戶、和虛擬用戶三類用戶賬號,使用虛擬用戶賬號能夠提供集中管理的ftp根目錄,同時將用於ftp登陸的用戶名、密碼與系統賬號區別開來,進一步加強ftp的安全性。數據庫
下面咱們看一個實例:vim
公司對全部權互聯網開放共享目錄,容許下載產品信息,禁止上傳。公司的合做單位可以使用FTP服務器進行上傳和下載,但不能夠刪除數據。而且保證服務器的穩定性,進行適當優化設置??瀏覽器
分析:安全
公司的服務器對互聯網都是公開的,考慮到安全性咱們就可使用vsftpd的虛擬用戶賬號,而分析這個需求主要涉及到兩類用戶,一類是隻能查看和下載不能上傳,而另外一類則是能查看、上傳、下載但不能夠刪除數據,在就是爲了服務器的性能咱們能夠根據用戶的等級限制用戶的鏈接數和下載速率!服務器
解決方案:app
1.創建虛擬用戶的用戶名/密碼數據庫tcp
vim vusers.listide
testftp
1234 //當總提示密碼錯誤時檢查下此處是否是多了空格
vipftp
工具
5678 //奇數行用戶名,偶數行是密碼性能
2.用db_load工具將其轉化爲DB數據庫文件(適用db_load命令工具必須先安裝db4-utils-4.3.29-9.fc6.i386.rpm)
db_load -T -t hash -f vusers.list vusers.db //-T表示容許適用程序將文本轉化爲DB數據文件,-t指定讀取數據的基本方法
-f 指定轉換文件
[root@localhost vsftpd]# chmod 600 vusers.* //下降文件權限來提升安全性
3創建訪問的根目錄及虛擬用戶對應的系統賬號
[root@localhost vsftpd]# useradd -d /var/ftp/share -s /sbin/nologin ftpuser
[root@localhost vsftpd]# useradd -d /var/ftp/vip -s /sbin/nologin vipuser
ll -ld /var/ftp/share/
drwx------ 4 ftp ftp 4096 10-27 13:27 /var/ftp/share/
[root@localhost vsftpd]# chmod -R 500 /var/ftp/share/ //由於ftp用戶只能查看和下載不能寫入(上傳)
[root@localhost vsftpd]# chmod -R 700 /var/ftp/vip/ //vip用戶能夠下載上傳等。。
[root@localhost ~]# touch /var/ftp/share/testftp.txt
[root@localhost ~]# touch /var/ftp/vip/vipftp.txt //創建測試文件
4.創建PAM認證文件
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0 //堅定不能省掉#%PAM-1.0這個內容
auth required pam_userdb.so db=/etc/vsftpd/vusers //db指向剛纔轉換過來的vusers.db,擴展名.db能夠省略
account required pam_userdb.so db=/etc/vsftpd/vusers
5創建配置文件
anonymous_enable=NO
local_enable=YES // 啓用虛擬用戶須要啓用本地用戶
guest_enable=YES //啓用用戶名映射功能
guest_username=ftpuser //將映射用戶指定爲ftpuser
chroot_local_user=YES //將本地用戶禁錮在本身的宿主目錄中
user_config_dir=/etc/vsftpd/vconfig //爲不一樣的虛擬用戶創建獨立的配置文件
max_clients=300 //最多容許300個客戶端同時鏈接
max_per_ip=10 //來自同一IP最大鏈接數爲10
anon_max_rate=50000 //設置傳輸速率爲50kb
anon_world_readable_only=NO //容許匿名用戶瀏覽器整個服務器的文件系統,不寫貌似瀏覽不到ftp資源
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu //指明PAM配置文件
userlist_enable=YES
tcp_wrappers=YES
6.爲不一樣的用戶創建獨立的配置文件:
mkdir /etc/vsftpd/vconfig
vim /etc/vsftpd/vconfig/vipftp
guest_enable=YES //這些就是獨立配置文件的vipftp的內容
guest_username=vipuser
write_enable=YES
anon_upload_enable=YES //容許上傳
anon_mkdir_write_enable=YES
anon_max_rate=100000 //傳輸速率100kb
anon_world_readable_only=NO //容許匿名用戶瀏覽器整個服務器的文件系統,不寫貌似瀏覽不到ftp資源
7.從新啓動服務
service vsftpd restart
8.驗證:
[root@localhost ~]# ftp 192.168.0.60
Connected to 192.168.0.60.
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 (192.168.0.60:root): testftp //使用testftp登陸測試
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,60,174,83)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Oct 27 10:34 testftp.txt
226 Directory send OK. //能夠瀏覽資源
ftp> get testftp.txt
local: testftp.txt remote: testftp.txt
227 Entering Passive Mode (192,168,0,60,181,117)
150 Opening BINARY mode data connection for testftp.txt (0 bytes).
226 File send OK. //下載成功
ftp> put install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,0,60,165,227)
550 Permission denied. //上傳失敗。權限拒絕。。
testftp的全部條件都知足。。。實驗成功了!!!
[root@localhost ~]# ftp 192.168.0.60
Connected to 192.168.0.60.
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 (192.168.0.60:root): vipftp //vipftp用戶登陸測試
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,60,104,76)
150 Here comes the directory listing.
drwx------ 2 501 501 4096 Oct 27 10:40 cmd
drwx------ 2 501 501 4096 Oct 27 10:42 kkkkkk
-rw-r--r-- 1 501 501 0 Oct 27 10:35 vipuser.txt
226 Directory send OK. //能瀏覽資源
ftp> get vipuser.txt
local: vipuser.txt remote: vipuser.txt
227 Entering Passive Mode (192,168,0,60,197,75)
150 Opening BINARY mode data connection for vipuser.txt (0 bytes).
226 File send OK. //下載成功
ftp> put install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,0,60,76,88)
150 Ok to send data.
226 File receive OK.
43957 bytes sent in 0.051 seconds (8.4e+02 Kbytes/s) //上傳成功
ftp> rm -rf vipuser.txt
550 Permission denied. //不能刪除現有資源
呵呵。。是否是全部條件都知足了!!
任務完成!!