Linux下使用vsftp搭建FTP服務器實現文件共享(帶有實戰分析)

FTP服務器(File Transfer Protocol Server)是在互聯網上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。

FTP(File Transfer Protocol: 文件傳輸協議)作用: Internet 上用來傳送文件的協議。

常見FTP服務器:

Windows:Serv-U FTP Server

Linux:ProFTPD:(Professional FTP daemon)一個Unix平臺上或是類Unix平臺上(如Linux, FreeBSD等)的FTP服務器程序。

本文的主角:vsftp。VSFTP是一個基於GPL發佈的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全。

特點:它是一個安全、高速、穩定的FTP服務器。本文從以下幾個方面來介紹ftp服務器:

一、學習一個新服務的方法

  • 二、VSFTP服務器的安裝配置。
  • 三、VSFTP服務器實戰

一、學習一個新服務的方法

1、  此服務器的概述:名字,功能,特點,端口號

2、  安裝

3、  配置文件的位置

4、  服務啓動關閉腳本,查看端口

5、  此服務的使用方法

6、  修改配置文件,實戰舉例

7、  排錯(從下到上,從內到外)

二、VSFTP服務器的安裝配置

本文的服務器架構:

FTP服務端:xiaolyu10  IP:192.168.31.10

FTP客戶端:xiaolyu11  IP:192.168.31.11

1. 安裝:

 yum安裝或rpm安裝均可。

[root@xiaolyu10 ~]# rpm -qa | grep vsftp
vsftpd-2.2.2-21.el6.x86_64
[root@xiaolyu10 ~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm

[root@xiaolyu10 ~]# yum install -y vsftp

[root@xiaolyu11 ~]# yum -y install  lftp

2. 配置文件:

[root@xiaolyu10 ~]# ls -l /etc/vsftpd
total 32
-rw-r--r-- 1 root root  13 Mar 16 15:14 chroot_list
-rw------- 1 root root  125 May 11  2016 ftpusers
-rw------- 1 root root  361 May 11  2016 user_list
-rw------- 1 root root 4644 Mar 16 15:13 vsftpd.conf
-rw------- 1 root root 4599 Mar 16 14:12 vsftpd.conf_bak
-rwxr--r-- 1 root root  338 May 11  2016 vsftpd_conf_migrate.sh

/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件

/etc/vsftpd/ftpusers:用於指定哪些用戶不能訪問FTP 服務器。  黑名單

/etc/vsftpd/user_list:指定允許使用vsftpd 的用戶列表文件。  白名單

vim  /etc/vsftpd/user_list

# 如果userlist_deny= YES(默認),絕不允許在這個文件中的用戶登錄ftp,甚至不提示輸入密碼

#prompt 提示

/etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操作的一些變量和設置腳本

/var/ftp/:默認情況下匿名用戶的根目錄

三、VSFTP服務器實戰

實戰1:

公司技術部準備搭建一臺功能簡單的FTP 服務器,允許所有員工上傳和下載文件,並允許創建用戶自己的目錄。

分析:

允許所有員工上傳和下載文件需要設置成允許匿名用戶登錄並且需要將允許匿名用戶上傳功能

開啓,

anon_mkdir_write_enable 字段可以控制是否允許匿名用戶創建目錄。

備份原配置文件:

[root@xiaolyu10 vsftpd]# cp vsftpd.conf vsftpd.conf_bak

[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf

允許匿名用戶訪問

anonymous_enable=YES

允許匿名用戶上傳文件並可以創建目錄

anon_upload_enable=YES

anon_mkdir_write_enable=YES 

啓動服務:

[root@xiaolyu10 ~]# service vsftpd restart

 

 

[root@xiaolyu10 pub]# chown ftp.ftp /var/ftp/pub/

然後測試,是可以新建文件夾了,但是不能重命名,不能刪除!

 

[root@xiaolyu10 ~]# mkdir /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# chown ftp.ftp /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# ll -d !$
ll -d /var/ftp/xiaolyudata
drwxr-xr-x 2 ftp ftp 4096 Mar 16 14:34 /var/ftp/xiaolyudata
[root@xiaolyu10 ~]#

 重啓服務:

[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[root@xiaolyu10 ~]#

 現在匿名上傳的文件是禁止刪除的。

 

 

這樣匿名用戶的上傳就算成功了

注:工作中,匿名用戶只是只讀訪問,寫的權限也沒有的。

補充:

如果想讓匿名用戶可以重命名或者刪除的權限,添加如下一條配置參數:

重啓服務:

[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_other_write_enable
                                                          [FAILED]

根據提示,說明我剛纔添加的那一行匿名寫權限的參數有問題

[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf

也就是說參數後面不能有多餘的空格。

 重新啓動就可以對重新命名和刪除文件夾了,

匿名用戶就可以刪除和修改,非常不安全,慎重使用這個參數。

注意,默認匿名用戶家目錄的權限是755,這個權限是不能改變的。切記!

[root@xiaolyu10 ~]# service vsftpd restart

 

實戰2:

公司內部現在有一臺FTP 和WEB 服務器,FTP 的功能主要用於維護公司的網站內容,包括上傳文件、創建目錄、更新網頁等等。公司現有兩個部門負責維護任務,他們分別適用team1 和team2帳號進行管理。先要求僅允許team1 和team2 帳號登錄FTP 服務器,但不能登錄本地系統,並將這兩個帳號的根目錄限制爲/var/www/html,不能進入該目錄以外的任何目錄。

ftp 和www web服務器相結合。

www web服務器根目錄:  /var/www/html

只允許:team1和team2兩用戶 可以上傳。 vsftp禁止匿名。

分析:

FTP 和WEB 服務器做在一起是企業經常採用的方法,這樣方便實現對網站的維護,爲了增強安全性,首先需要使用僅允許本地用戶訪問,並禁止匿名用戶登錄。其次使用chroot 功能將team1team2 鎖定在/var/www/html 目錄下。如果需要刪除文件則還需要注意本地權限 

解決方案:

1)建立維護網站內容的ftp 帳號team1 和team2 並禁止本地登錄,然後設置其密碼

[root@xiaolyu10 ~]# useradd -s /sbin/nologin team1
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team2
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.

2)配置vsftpd.conf 主配置文件並作相應修改

[root@xiaolyu10 vsftpd]# cp vsftpd.conf_bak vsftpd.conf
cp: overwrite `vsftpd.conf'? y
[root@xiaolyu10 vsftpd]# vim vsftpd.conf

#anonymous_enable=YES 
anonymous_enable=NO    
禁止匿名用戶登錄
#
# Uncomment this to allow local users to log in.
local_enable=YES  允許本地用戶登錄

繼續將:

修改爲:

local_root=/var/www/html:設置本地用戶的根目錄爲/var/www/html

chroot_list_enable=YES:激chroot 功能

chroot_list_file=/etc/vsftpd/chroot_list:設置鎖定用戶在根目錄中的列表文件。此文件存放要鎖定的用戶名

保存退出

3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帳號

[root@xiaolyu10 vsftpd]# touch /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# ll !$
ll /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 Mar 16 15:13 /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# vim /etc/vsftpd/chroot_list
  #寫入以下內容,一行,一個用戶名

team1

team2

4)重啓vsftpd 服務使配置生效

service vsftpd restart

5)修改本地權限

[root@xiaolyu10 vsftpd]# mkdir -p /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xr-x 2 root root 4096 Mar 16 15:16 /var/www/html/
[root@xiaolyu10 vsftpd]# chmod -R o+w /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xrwx 2 root root 4096 Mar 16 15:16 /var/www/html/

(6).測試:

 

[root@xiaolyu11 ~]# lftp 192.168.31.10 -uteam1,123456
lftp [email protected]:~> ls
drwxr-xr-x    2 500      500          4096 Mar 16 07:24 web
lftp [email protected]:~>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章