Linux CentOS安裝搭建FTP文件服務


本文環境:centos7,IP=192.168.1.11

1.安裝vsftpd和默認配置啟動

  1.1 安裝vsftpd

yum install -y vsftpd

  1.2 啟動vsftpd

systemctl start vsftpd

查看vsftpd狀態和運行

systemctl status vsftpd

或者通過端口占用查看

netstat -nltp | grep 21

2.配置vsftpd

2.1 配置路徑

vsftpd 的配置目錄為 /etc/vsftpd,包含下列的配置文件:

  • vsftpd.conf 為主要配置文件
  • ftpusers 配置禁止訪問 FTP 服務器的用戶列表
  • user_list 配置用戶訪問控制

以下需要修改vsftpd.conf,所以都是基於使用

vim /etc/vsftpd/vsftpd.conf

2.2 配置端口

  2.2.1 添加要更改的監聽端口,可以在最下面添加配置

#remote_charset=CP1251
#
# Enable this options if you have double "я"
#
#double_377=0

listen_port=221

保存退出

  2.2.2 修改系統端口管理的services

vim /etc/services

將默認的21端口更改成自己的端口

# 21 is registered to ftp, but also used by fsp
ftp 221/tcp
ftp             221/udp          fsp fspd

2.3 禁用匿名用戶

# 禁用匿名用戶將 YES 改為 NO
anonymous_enable=NO

 2.4 禁止用戶切換目錄

# 禁止切換根目錄,解除注釋
chroot_local_user=YES

3 重新啟動vsftpd

systemctl restart vsftpd

注意:可能很多人和我一樣,遇到一個無法正常啟動的原因,如下解決。

a. 粗暴關閉防火牆或者放開端口

systemctl stop Firewalld

b. 關閉Linux新安全子系統SELinux(Security-Enhanced Linux)

查看SELinux運行狀態

sestatus -v

SELinux status:  enabled就是開啟的;disabled就是關閉

開啟的時候我們還需要看它的模式(Current mode),它有三種模式

enforcing:強制模式,代表 SELinux 運作中,且已經正確的開始限制 domain/type 了;

permissive:寬容模式:代表 SELinux 運作中,不過僅會有警告訊息並不會實際限制 domain/type 的存取;

disabled:關閉,SELinux 並沒有實際運作。

所以我們更改模式即可解決:

setenforce 0

優點:一條語句及時生效;

缺點:系統重起后恢復為enforcing模式。(可以自行搜索開機不恢復的方式,修改/etc/selinux/config文件,需要重啟機器,此處就不羅列了)

此時再重啟vsftpd,應該運行成功。

4. 添加FTP用戶和管理

  4.1 創建一個用戶 ftpuser

useradd ftpuser

  為用戶 ftpuser 設置密碼

echo "password" | passwd ftpuser --stdin

4.2 限制ftpuser僅有ftp訪問權限

限制用戶 ftpuser只能通過 FTP 訪問服務器,而不能直接登錄服務器:

usermod -s /sbin/nologin ftpuser

4.3 為ftpuser分配主目錄

     為用戶 ftpuser創建主目錄並約定:

    /data/ftp 為主目錄, 該目錄不可上傳文件 
    /data/ftp/pub 文件只能上傳到該目錄下

創建相關的目錄

mkdir -p /data/ftp/pub

4.4 設置訪問權限

chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub

設置用戶主目錄

usermod -d /data/ftp ftpuser

5 訪問ftp,驗證ftp

可以通過資源管理器或者瀏覽器訪問:

ftp://ftpuser:password@192.168.1.11/pub

 5.1 常見問題解決

很多時候服務正常啟動了,但是死活連不上,需要查看防火牆狀態,是否是防火牆阻礙了

systemctl status Firewalld

好,那我們停掉防火牆

systemctl stop Firewalld

可能出現了好轉,服務能訪問了,但是咱們想防火牆不能隨便關,是否可以一起存在呢,開放端口可以嗎?

↓注意:先打開防火牆,然后執行一下命令,每次cmd更改,都需要reload規則。

firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=21/udp --permanent

firewall-cmd   --reload

干脆來一個全的,21的端口開放。可能有人還會遇到我一樣的問題,不行。。。,是不是防火牆會攔住服務呢?

firewall-cmd --zone=public --add-service=ftp --permanent

firewall-cmd   --reload

終於,我這的問題解決了。

 

 

 

總結:本人遇到的問題,從網站上羅列下來的隨筆。


免責聲明!

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



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