centos7搭建FTP服務器


1. 安裝

# 安裝 vsftpd
yum -y install vsftpd

 

2. 啟動服務並添加到開機自啟

復制代碼
# 啟動 vsftpd
systemctl start vsftpd

# 設置開機啟動
systemctl enable vsftpd

# 查看服務狀態和端口(默認端口是 21 )
systemctl status vsftpd
netstat -nltp | grep 21

--------------------------------------
-bash: netstat: 未找到命令
執行  yum -y install net-tools
--------------------------------------
復制代碼

 

3. 防火牆設置

3.1 關閉防火牆

# 關閉防火牆
systemctl disable firewalld

# 查看防火牆狀態
systemctl status firewalld

 

3.2 關閉 selinux

復制代碼
# 臨時關閉
getenforce
setenforce 0
getenforce

#永久關閉
vi /etc/sysconfig/selinux
#SELINUX=enforcing 
SELINUX=disabled

# 重啟服務器
reboot
復制代碼

因為我已經永久關閉 selinux 了,所以臨時關閉提示信息是這些,正常情況下提示信息如下所示

 

4. 配置

4.1 配置文件說明

# 配置文件在 /etc/vsftpd 目錄下
vsftpd.conf   核心配置文件
ftpusers     黑名單,不允許訪問 FTP 服務器的用戶列表,一行一個賬號
user_list    白名單,允許訪問 FTP 服務器的用戶列表,一行一個賬號

 

4.2 配置本地登錄

(1) 修改配置文件

復制代碼
# 備份
mv vsftpd.conf vsftpd.conf.bak
# 編輯配置文件
vi vsftpd.conf
復制代碼
# 是否允許虛擬用戶訪問
anonymous_enable=NO
#
# 是否允許本地用戶登錄 ftp
local_enable=YES
#
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=6000
data_connection_timeout=1200
connect_from_port_20=YES
#
# 將不在 /etc/vsftpd/chroot_list 文件中的用戶限制在其家目錄下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#
# 當用戶主目錄不在根目錄下時需要添加此參數
allow_writeable_chroot=YES
#
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# 本地用戶的 ftp 根目錄
local_root=/data/ftpdata
listen=YES
listen_ipv6=NO
#
# 認證
pam_service_name=vsftpd
#
tcp_wrappers=YES
復制代碼
復制代碼

chroot_list 在安裝時是沒有的,這個需要自己創建

在配置文件中 chroot_local_user=YES 和 chroot_list_enable=YES ,這表示

① 所有用戶都被限制在其主目錄下

② 使用 chroot_list_file 指定的用戶列表 /etc/vsftpd/chroot_list ,這些用戶作為“例外”,不受限制

cd /etc/vsftpd/

# 編輯 chroot_list 將 root 加進去
vi chroot_list

 

/var/log/xferlog 需要創建

   該日志文件記錄 FTP 會話,可以顯示出用戶向 FTP 服務器或從服務器拷貝了什么文件。會顯示用戶拷貝到服務器上的用來入侵服務器的惡意程序,以及該用戶拷貝了哪些文件供他使用。
  該文件的格式為:第一個域是日期和時間,第二個域是下載文件所花費的秒數、遠程系統 名稱、文件大小、本地路徑名、傳輸類型(a:ASCII,b:二進制)、與壓縮相關的標志或tar,或"_"(如果沒有壓縮的話)、傳輸方向(相對於服務 器而言:i代表進,o代表出)、訪問模式(a:匿名,g:輸入口令,r:真實用戶)、用戶名、服務名(通常是ftp)、認證方法(l:RFC931,或 0),認證用戶的ID或"*"。

cd /var/log
touch xferlog

 

修改了配置文件之后要重啟 vsftpd 服務 systemctl restart vsftpd ,以生效配置。

 

(2) 創建本地用戶並設置密碼

復制代碼
# 添加用戶,指定其家目錄、所屬組及登入后所使用的 shell,/sbin/nologin 表示不允許 login 系統
# 主用戶
useradd ftpuser -d /data/ftpuser -s /sbin/nologin  -g ftp

# 子用戶
useradd ftp_liu -d /data/ftpdata/ftp_liu -s /sbin/nologin  -g ftp

useradd ftp_li -d /data/ftpdata/ftp_li -s /sbin/nologin  -g ftp
...

# 設置密碼 
passwd ftpuser
復制代碼

 

  (3) 添加白名單

cd /etc/vsftpd/
vi user_list 
ftpuser

 

(4) 修改目錄權限

chmod 755 /ftpuser/
chown -R ftpuser:ftp /ftpuser/

 

(5) 修改 /etc/pam.d/vsftpd

為什么要修改這個文件呢?

我們前面在配置文件中設置 pam_service_name=vsftpd ,即指定 vsftpd 的認證走/etc/pam.d/vsftpd 文件。

 

 

(6) 登錄測試

前面在配置文件中,我們配置了 chroot_local_user=YES 和 chroot_list_enable=YES ,所以沒有寫進 chroot_list 中的用戶都會被限制在當前用戶目錄下,不能往上一級切換

 

簡單說明一下,如圖所示, ljq_1 目錄的權限是 700 ,即該目錄除了目錄的所有者具有完整的權限之外,其他所有用戶對該目錄完全沒有任何權限。所以可以通過調整目錄的權限規定每個 ftp 用戶能進行的操作。

復制代碼
# 參數簡介
r  讀( 看目錄有什么,如 ll ) w  可以在目錄里創建、刪除、移動文件、文件夾,如 touch mkdir rm mv cp x  表示用戶可進入到該目錄中
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM