搭建ftp的一個案例

ftp簡介
FTP(File Transfer Protocol, FTP)是TCP/IP網絡上兩臺計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最早使用的協議之一,它屬於網絡協議組的應用層。FTP客戶機可以給服務器發出命令來下載文件,上載文件,創建或改變服務器上的目錄。
工作模式
FTP兩種工作模式:主動模式(Active FTP)和被動模式(Passive FTP)
1.主動模式:FTP客戶端隨機開啓一個大於1024的端口N向服務器的21號端口發起連接,然後開放N+1號端口進行監聽,並向服務器發出PORT N+1命令。服務器接收到命令後,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口N+1,進行數據傳輸。 
2.被動模式:FTP庫戶端隨機開啓一個大於1024的端口N向服務器的21號端口發起連接,同時會開啓N+1號端口。然後向服務器發送PASV命令,通知服務器自己處於被動模式。服務器收到命令後,會開放一個大於1024的端口P進行監聽,然後用PORT P命令通知客戶端,自己的數據端口是P。客戶端收到命令後,會通過N+1號端口連接服務器的端口P,然後在兩個端口之間進行數據傳輸。 
注意:被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTp服務器的情況,因爲在這種情況下,防火牆通常配置爲不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連接請求通過。因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。
案例:
現給公司的員工提供ftp的服務,並且在ftp上放置了公司的公共文檔,只允許全體許員(匿名的賬號)工進行下載,其他的權限均不允許。但是對於一些高級員工來說,他們可以上傳資料到ftp上(最大空間爲10M),擁有增加、刪除、修改的權限。規定匿名的賬號下載速率100k/s,而本地賬號(高級員工)的上傳下載速率爲1M/s. 另外只允許同時在線100個用戶,只可以同時開啓2個連接窗口。
實驗環境:
操作系統 linux redhat enterprise 5 版本號2.6.18-164.el5
實驗步驟:
一:新增一塊20G的硬盤,進行分區、格式化和掛載等操作
1:查看系統的硬盤
[root@localhost ~]# fdisk -l
wps_clip_p_w_picpath-9729
2:在第二塊硬盤上新建一個分區/dev/sdb1
[root@localhost ~]# fdisk /dev/sdb
wps_clip_p_w_picpath-5633
3:重新加載系統內核程序
[root@localhost ~]# partprobe /dev/sdb
4:將/dev/sdb1分區格式化爲 ext3的格式
[root@localhost ~]# mkfs -t ext3 /dev/sdb1
wps_clip_p_w_picpath-31031
5:創建一個掛載點,並掛載該分區/dev/sdb1
[root@localhost ~]# mkdir /mnt/ftppart
[root@localhost ~]# mount /dev/sdb1 /mnt/ftppart/
6:查看分區的使用情況
[root@localhost ~]# df -h
文件系統              容量  已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
                       17G  5.0G   11G  32% /
/dev/sda1              99M   15M   80M  16% /boot
tmpfs                 188M     0  188M   0% /dev/shm
/dev/hdc              2.8G  2.8G     0 100% /media/RHEL_5.4 i386 DVD
/dev/sdb1              20G  173M   19G   1% /mnt/ftppart
[root@localhost ~]#
二:安裝vsftpd的rpm包
首先我們要將光盤掛載,使用rpm安裝就要進到Serrver目錄下
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
Preparing...                ########################################### [100%]
package vsftpd-2.0.5-16.el5.i386 is already installed     #表明已經安裝過了
[root@localhost Server]#
三:創建目錄/mnt/ftppart/public用來放置公司的手冊
[root@localhost Server]# cd /mnt/ftppart/
[root@localhost ftppart]# mkdir public
[root@localhost ftppart]# cd public/
[root@localhost public]# touch p_shouce1
[root@localhost public]# touch p_shouce2
[root@localhost public]# touch a b c
[root@localhost public]# ll
總計 0
-rw-r--r-- 1 root root 0 04-16 03:41 a
-rw-r--r-- 1 root root 0 04-16 03:41 b
-rw-r--r-- 1 root root 0 04-16 03:41 c
-rw-r--r-- 1 root root 0 04-16 03:00 p_shouce1
-rw-r--r-- 1 root root 0 04-16 03:00 p_shouce2
四:查看系統的賬號
[root@localhost public]# tail /etc/passwd
wps_clip_p_w_picpath-20262
添加添加兩個用戶user1,user2,併爲其設置密碼爲“123”
[root@localhost public]# useradd user1
[root@localhost public]# echo "123"|passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
[root@localhost public]# useradd user2
[root@localhost public]# echo "123"|passwd --stdin user2
Changing password for user user2.
passwd: all authentication tokens updated successfully.
[root@localhost public]#
wps_clip_p_w_picpath-17171
五:對匿名用戶進行設置
1:將ftp服務器的匿名賬號的默認根目錄/var/ftp修改爲/mnt/ftppart/public目錄
[root@localhost public]# vim /etc/vsftpd/vsftpd.conf
wps_clip_p_w_picpath-26831
2:將新建賬戶的家目錄/home修改爲 /mnt/ftppart/home 目錄
[root@localhost public]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost public]# 
[root@localhost public]# useradd -D -b /mnt/ftppart/home
[root@localhost public]# useradd -D
GROUP=100
HOME=/mnt/ftppart/home     #對比之下發現這一行發生了改變,這既是我們要做的
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost public]#
3:增加一個用戶user3進行測試
[root@localhost ~]# useradd user3
[root@localhost ~]# tail /etc/passwd
wps_clip_p_w_picpath-2812
六:針對於高級員工(即本地賬號)進行相關的設置
1:編輯當前目錄
[root@localhost ~]# vim /etc/passwd
wps_clip_p_w_picpath-25221
2: 在服務器上創建home目錄
[root@localhost public]# cd /mnt/ftppart/
[root@localhost ftppart]# 
[root@localhost ftppart]# mkdir home
[root@localhost ftppart]# ll
總計 24
drwxr-xr-x 2 root root  4096 04-16 03:16 home
drwx------ 2 root root 16384 04-16 02:56 lost+found
drwxr-xr-x 2 root root  4096 04-16 03:00 public
[root@localhost ftppart]#
3:移動“user1”.“user2”的家目錄到/mnt/ftppart/home
[root@localhost ~]# cd /home/
[root@localhost home]# ll
總計 8
drwx------ 3 user1 user1 4096 04-16 03:01 user1
drwx------ 3 user2 user2 4096 04-16 03:02 user2
[root@localhost home]# mv user1 user2 /mnt/ftppart/home/
[root@localhost home]# cd /mnt/ftppart/home/
[root@localhost home]# ll
總計 8
drwx------ 3 user1 user1 4096 04-16 03:01 user1
drwx------ 3 user2 user2 4096 04-16 03:02 user2
[root@localhost home]#
七:對員工進行下載速度及連接數的限制
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
wps_clip_p_w_picpath-31020
八:對用戶進行磁盤配額
1:修改fstab表格
[root@localhost ~]# vim /etc/fstab
wps_clip_p_w_picpath-5919
2:重新掛載/dev/sdb1 分區
[root@localhost ~]# mount -o remount /dev/sdb1
[root@localhost home]# mount
wps_clip_p_w_picpath-10878
3:對/dev/sdb1 分區進行磁盤配額的檢測
[root@localhost ~]# cd /mnt/ftppart/
[root@localhost ftppart]# quotacheck -augv -c
quotacheck: Scanning /dev/sdb1 [/mnt/ftppart] quotacheck: Cannot stat old user quota file: 沒有那個文件或目錄
quotacheck: Old group file not found. Usage will not be substracted.
done
quotacheck: Checked 13 directories and 12 files
quotacheck: Old file not found.
[root@localhost ftppart]# ll
總計 32
-rw------- 1 root root  7168 04-16 03:29 aquota.user
drwxr-xr-x 4 root root  4096 04-16 03:18 home
drwx------ 2 root root 16384 04-16 02:56 lost+found
drwxr-xr-x 2 root root  4096 04-16 03:00 public
[root@localhost ftppart]#
4:針對user1進行磁盤配額,限制爲10M空間的大小
[root@localhost ftppart]# edquota -u user1
wps_clip_p_w_picpath-12265
5:對於user2 來說
[root@localhost ftppart]# edquota -p user1 user2
[root@localhost ftppart]#
[root@localhost ftppart]# edquota -u user2
wps_clip_p_w_picpath-2946
6:開啓磁盤配額,並設置爲開機加載
[root@localhost ftppart]# quotaon /dev/sdb1
[root@localhost ftppart]# echo "quotaon/dev/sdb1">>/etc/rc.d/rc.local
[root@localhost ftppart]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
quotaon/dev/sdb1         #可以看到已經加載到了開機的腳本里面了
7:重新啓動vsftpd的服務後我們就能驗證了
[root@zzu ftppart]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
十:驗證
1:對於匿名賬號
查看
wps_clip_p_w_picpath-30173
上傳
wps_clip_p_w_picpath-15688
刪除
wps_clip_p_w_picpath-6596
2:對於高級員工user1的測試
登錄並新建文件夾
wps_clip_p_w_picpath-22922
wps_clip_p_w_picpath-4664
上傳
wps_clip_p_w_picpath-22811
wps_clip_p_w_picpath-26334
3:基於下載速度的驗證,使用FlashFXP Evaluation Copy軟件測試(只要是980kb~1020kb之間的就算是正常的範圍)
wps_clip_p_w_picpath-14014
wps_clip_p_w_picpath-14933
 
 
小結:這次實驗我們學習到如何搭建一個ftp服務器,這對一些小型的公司就是很實用的,對於一些教育機構及一些小型局域網都是有一定作用的,大家都做一做,還是很有用的!
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章