1. 程式人生 > >基於滴滴雲主機搭建 FTP 檔案共享伺服器(一)

基於滴滴雲主機搭建 FTP 檔案共享伺服器(一)

FTP 簡單介紹

什麼是 FTP 伺服器?

FTP 伺服器(File Transfer Protocol Server)是在網際網路上提供檔案共享儲存和訪問服務的計算機,它們依照 FTP 協議提供服務。

FTP(File Transfer Protocol: 檔案傳輸協議)是一種 Internet 上用來傳送檔案的協議,支援這種協議的伺服器就是 FTP 伺服器。

常見 FTP 伺服器如下:

  • Windows:Serv-U FTP Server

  • Linux:oftpd、ftpd、vsftpd、pure-ftpd、proftpd、wu-ftpd、glftpd

功能比較簡單的有 ftpd 和 Oftpd,前者與 FTP 客戶端工具 FTP 類似,只有標準的功能,此外支援 SSL。Oftpd 是一款非常小巧的匿名 FTP 伺服器。

可配製型高階的主要是 vsftpd 和 pure-ftpd。 這兩個側重於安全、速度和輕量級,在大型 FTP 伺服器上用得比較多,尤其是 vsftpd,這類伺服器對使用者認證和許可權控制比較簡單,更注重安全型和速度。Pure-ftpd 相對 vsftpd 要強大一些,支援的使用者認證方式也比較多。

配置性更好的是 proftpd、wu-ftpd 和 glftpd。Proftpd 的配置方式跟 Apache 非常類似,支援虛擬伺服器,可針對目錄、虛擬使用者進行許可權配製,可繼承和覆蓋。

今天主要介紹 VSFTP。

VSFTP 是一個基於 GPL 釋出的類 Unix 系統上使用的 FTP 伺服器軟體,它的全稱是 Very Secure FTP,它的優勢就是安全、高速、穩定的 FTP 伺服器。接下來介紹如何搭建這個檔案共享伺服器。

開始安裝

首先安裝 VSFTP

安裝前檢查一下包是否已經安裝,如下:

[[email protected] ~]#  rpm -qa | grep vsftp
vsftpd-3.0.2-22.el7.x86_64
[[email protected] ~]#

如果沒有安裝,使用如下方式安裝:

[[email protected]
~]# yum install vsftpd 已載入外掛:fastestmirror Loading mirror speeds from cached hostfile 正在解決依賴關係 --> 正在檢查事務 ---> 軟體包 vsftpd.x86_64.0.3.0.2-22.el7 將被 安裝 --> 解決依賴關係完成 依賴關係解決 ============================================================================================================================================================== Package 架構 版本 源 大小 ============================================================================================================================================================== 正在安裝: vsftpd x86_64 3.0.2-22.el7 base 169 k 事務概要 ============================================================================================================================================================== 安裝 1 軟體包 總下載量:169 k 安裝大小:348 k Is this ok [y/d/N]:

接著安裝 LFTP,這個可以用來登入瀏覽 FTP 共享文件:

[[email protected] ~]# yum install  lftp
已載入外掛:fastestmirror
base                                                                                                                                   | 3.6 kB  00:00:00     
epel                                                                                                                                   | 3.2 kB  00:00:00     
extras                                                                                                                                 | 3.4 kB  00:00:00     
updates                                                                                                                                | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 lftp.x86_64.0.4.4.8-8.el7_3.2 將被 安裝
--> 解決依賴關係完成

依賴關係解決

==============================================================================================================================================================
 Package                           架構                                版本                                           源                                 大小
==============================================================================================================================================================
正在安裝:
 lftp                              x86_64                              4.4.8-8.el7_3.2                                base                              751 k

事務概要
==============================================================================================================================================================
安裝  1 軟體包

總下載量:751 k
安裝大小:2.4 M
Is this ok [y/d/N]:

以上兩個都輸入 y 安裝即可,滴滴雲已經提供專業的 yum 安裝源,您可以放心的安裝相關服務。當然了,除了 yum 的安裝方式之外,您還可以選擇從官方下載原始碼或者 RPM 包來安裝,RPM 安裝命令:

rpm -ivh /home/demo/vsftpd-3.0.2-22.el7.x86_64.rpm

這根據您的使用方式來選擇,哪個方便使用哪個安裝。

開始配置

配置檔案位置

[[email protected] vsftpd]# pwd
/etc/vsftpd
[[email protected]255-1-40 vsftpd]# ll
總用量 20
-rw------- 1 root root  125 8月   3 2017 ftpusers
-rw------- 1 root root  361 8月   3 2017 user_list
-rw------- 1 root root 5030 8月   3 2017 vsftpd.conf
-rwxr--r-- 1 root root  338 8月   3 2017 vsftpd_conf_migrate.sh
[[email protected] vsftpd]#

/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/:預設情況下匿名使用者的根目錄,其目錄如下:

[[email protected] vsftpd]# cd /var/ftp/pub/
[[email protected] pub]# pwd
/var/ftp/pub
[[email protected] pub]#

服務啟動

我們先不做配置的情況下,看看預設能做什麼事情,啟動服務:

[[email protected] var]# systemctl  status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[[email protected] var]# systemctl  start vsftpd
[[email protected] var]# systemctl  status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2018-12-09 03:54:48 UTC; 1s ago
  Process: 9175 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 9176 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─9176 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

12月 09 03:54:48 10-255-1-40 systemd[1]: Starting Vsftpd ftp daemon...
12月 09 03:54:48 10-255-1-40 systemd[1]: Started Vsftpd ftp daemon.
[[email protected] var]#

滴滴雲主機預設安全組沒有開啟 21 埠,具體如何開啟參考滴滴雲官網介紹,開啟後如下:
在這裡插入圖片描述

訪問

以 mac 為例,mac 上自帶客戶端工具,其他作業系統也可以使用瀏覽器、資料夾資源管理器等工具進行訪問。

訪問協議字首都是 ftp://IP 地址,埠一般都是預設埠,開啟 mac 上的自帶工具 Finder,選擇前往,再選擇連線伺服器,如下:
在這裡插入圖片描述
進入如下介面,輸入 FTP 伺服器資訊:
在這裡插入圖片描述
預設只能使用匿名使用者訪問,如圖:
在這裡插入圖片描述

成功後如下圖:
在這裡插入圖片描述

下面做一些配置:
允許所有員工上傳和下載檔案,並允許建立使用者自己的目錄:

anon_mkdir_write_enable 欄位可以控制是否允許匿名使用者建立目錄。

檢視並備份原配置檔案:

[[email protected] vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[[email protected] vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[[email protected] vsftpd]#

允許匿名使用者訪問:

anonymous_enable=YES

允許匿名使用者上傳檔案並可以建立目錄:

anon_upload_enable=YES
anon_mkdir_write_enable=YES

如圖:
在這裡插入圖片描述

重新啟動服務:

[[email protected] vsftpd]# systemctl restart vsftpd
[[email protected] vsftpd]#

mac 終端:

dubodeMacBook-Pro-2:ftp dubobo$ ftp ftp://116.85.5.228/
Connected to 116.85.5.228.
220 (vsFTPd 3.0.2)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Switching to Binary mode.
ftp> ls
229 Entering Extended Passive Mode (|||63798|)


ftp: Can't connect to `116.85.5.228': Operation timed out
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
drwxr-xr-x    2 14       50             42 Dec 09 07:59 pub
drwxr-xr-x    2 0        0               6 Dec 09 08:18 test
226 Directory send OK.
ftp> 
ftp> 
ftp>

Windows 資源管理器:
在這裡插入圖片描述
解決辦法:
在這裡插入圖片描述

修改完後,再次訪問:
在這裡插入圖片描述

但是發現,能建立目錄,但不能刪除和重新命名資料夾,如圖所示:
在這裡插入圖片描述
在這裡插入圖片描述
我們建立一個資料夾,如下:

[[email protected] ftp]# mkdir /var/ftp/zhangsan
[[email protected] ftp]# chown ftp.ftp /var/ftp/
pub/      test/     zhangsan/ 
[[email protected] ftp]# chown ftp.ftp /var/ftp/zhangsan/
[[email protected] ftp]# systemctl restart vsftpd
[[email protected] ftp]

在這裡插入圖片描述

匿名使用者上傳檔案就算可以了,但是不能刪除和重新命名。

注:工作中,匿名使用者只是只讀訪問,寫的許可權也沒有的。

補充:如果想讓匿名使用者可以重新命名或者刪除的許可權,新增如下一條配置引數,即 anon_other_write_enable,如下:

#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

在這裡插入圖片描述

重新啟動服務就可以對重新命名和刪除檔案夾了。

[[email protected] ftp]# systemctl restart vsftpd

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

注意,預設匿名使用者家目錄的許可權是 755,這個許可權是不能改變的。

實戰演練

假設現有兩個部門負責產品文件,他們分別使用 user1 和 user2 帳號進行管理。要求只允許 user1 和 user2 帳號登入 FTP 伺服器,但不能登入本地系統,並將這兩個帳號的目錄限制為 /home/test,而且不能進入該目錄以外的任何目錄。

1.建立產品系統內容的 FTP 帳號 user1 和 user2 並禁止本地登入,然後設定其密碼

[[email protected] ftp]# useradd -s /sbin/nologin user1

同樣建立user2使用者。

修改兩個使用者密碼:

[[email protected] ftp]# passwd user1
更改使用者 user1 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[[email protected] ftp]# 
[[email protected] ftp]# 
[[email protected] ftp]# 

將 user2 同樣更改密碼,也可以直接使用命令 passwd user1 回車修改密碼。

2.配置 vsftpd.conf 主配置檔案並作相應修改

[[email protected] ftp]# vim /etc/vsftpd/vsftpd.conf
\# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO 禁止匿名使用者
\#
\# Uncomment this to allow local users to log in.
\# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES允許本地登陸
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES

繼續修改,將:

#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

修改為:

# chroot)
chroot_local_user=YES
local_root=/home/test
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

local_root=/home/test:設定本地使用者的根目錄為 /home/test
chroot_list_enable=YES:激 chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:設定鎖定使用者在根目錄中的列表檔案。此檔案存放要鎖定的使用者名稱

儲存並退出。

3.建立 /etc/vsftpd/chroot_list 檔案,新增 user1 和 user2 帳號

[[email protected] vsftpd]# touch /etc/vsftpd/chroot_list
[[email protected] vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[[email protected] vsftpd]#
[[email protected] vsftpd]# vim chroot_list 
[[email protected] vsftpd]# cat chroot_list 
user1
user2
[[email protected] vsftpd]#

按照上述配置修改好檔案。

建立對應文件目錄:

[[email protected] var]# mkdir /home/test
您在 /var/spool/mail/root 中有新郵件
[[email protected] var]# chmod 777 /home/test/

使用資源管理器建立一個資料夾並驗證:

會出現如下登入介面:
在這裡插入圖片描述

隨便建立一個目錄,如下:
在這裡插入圖片描述

[[email protected] var]# cd /home/test/
[[email protected] test]# ls
新資料夾
[[email protected] test]#

基本的測試完了,歡迎拍磚。