centos7安裝vsftpd,配置


安裝該軟件需要使用最高用戶(root)進行安裝

一. 安裝vsftp

查看是否已安裝

[root@mariadb-10 ~]# rpm -q vsftpd 
vsftpd
-3.0.2-21.el7.x86_64

或者

[root@mariadb-10 ~]# vsftpd -v vsftpd: version 3.0.2

在線安裝

yum -y install vsftpd

查看位置

[root@mariadb-10 ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

設置開機啟動

systemctl enable vsftpd

啟動

systemctl start vsftpd

重啟

systemctl restart vsftpd

停止

systemctl stop vsftpd

查看狀態

systemctl status vsftpd

 二. 配置防火牆

1.關閉SELinux

vi /etc/selinux/config

修改SELINUX=disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted

然后輸入命令

setenforce 0

注,臨時生效命令

修改firewall使之允許ftp功能啟動firewall

systemctl start firewalld.service

輸入命令

[root@mariadb-10 home]# firewall-cmd --permanent --zone=public --add-service=ftp
success

重啟firewall

[root@mariadb-10 home]# firewall-cmd --reload
success

如果沒有重要的數據在服務器里面,或者在本地虛擬機中外網無法訪問的情況下,建議直接關閉防火牆即可省略以上繁瑣的步驟

systemctl stop firewalld.service

三. 啟動ftp服務

 啟動ftp

systemctl start vsftpd

查看ftp狀態,返回以下說明服務已啟動

[root@mariadb-10 home]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since 四 2021-12-09 16:13:39 CST; 3s ago Process: 8706 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 8707 (vsftpd) CGroup: /system.slice/vsftpd.service └─8707 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 12月 09 16:13:39 mariadb-10.3.23 systemd[1]: Starting Vsftpd ftp daemon... 12月 09 16:13:39 mariadb-10.3.23 systemd[1]: Started Vsftpd ftp daemon.

設置開機自啟動

chkconfig vsftpd on

 三 ftp訪問匿名訪問測試

在瀏覽器輸入ftp服務訪問地址 ,例如 ftp://192.168.0.14/ ,安裝完畢默認匿名可訪問

 默認瀏覽的是/var/ftp目錄

四. 創建用戶

首先創建一個目錄,作為這個ftp用戶所擁有的目錄

mkdir -p /home/ftproot/ftptest

 創建用戶ftptest,並且指定其目錄為用戶目錄中創建的/home/ftproot/ftptest

useradd -d /home/ftproot/ftptest -g ftp -s /sbin/nologin ftptest

 -g ftp 表示該用戶屬於ftp分組 (ftp分組是內置的,本來就存在,不需要自己創建)

-s /sbin/nologin 表示這個用戶不能用來登錄secureCRT這樣的客戶端,這種不能登陸的用戶又叫做虛擬用戶

 創建過程給出的警告信息是正常的,不用理會

把目錄/home/ftproot/ftptest的擁有者設置為ftptest

chown -R ftptest /home/ftproot/ftptest

使ftptest用戶擁有這個目錄的讀寫權限 

chmod -R 775 /home/ftproot/ftptest

為ftptest用戶設置密碼 

[root@mariadb-10 vconf]# passwd ftptest
更改用戶 ftptest 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

  

五. 配置

目前 FTP 服務登陸允許匿名登陸,也無法區分用戶訪問,我們需要配置 FTP 訪問權限;

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

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

 配置文件位置

/etc/vsftpd/vsftpd.conf

建議先備份一下。

vi /etc/vsftpd/vsftpd.conf

編輯器顯示行號

:set number

 修改第12行,禁止匿名登錄

anonymous_enable=NO

限制用戶訪問,創建的ftptest用戶所擁有的目錄是 /home/ftproot/ftptest,如果不做限制,那么使用ftptest登陸之后可以切換到其他敏感目錄去,比如切換到/usr目錄去,這樣就存在巨大的安全隱患。 為了規避這個隱患,需要限制ftptest用戶只能通過ftp訪問到 /home/ftproot/ftptest 目錄以及子目錄。

第102行,去掉注釋

chroot_list_enable=YES

 第104行,去掉注釋

chroot_list_file=/etc/vsftpd/chroot_list

注:
chroot_list_enable=YES: 表示對用戶訪問進行限制
chroot_list_file=/etc/vsftpd/chroot_list 表示對chroot_list里面指定的用戶進行限制

vsftpd服務器,一旦某個用戶被限制訪問了,那么默認情況下,該用戶的寫權限也被剝奪了。 這就導致ftp客戶端連接上服務器之后無法上傳文件。這個時候,就需要打開此用戶的寫權限。

添加賬號到chroot_list里,一行一個用戶賬號

[root@localhost vsftpd]# vi /etc/vsftpd/chroot_list

filesync

 在vsftpd.conf的最后加上

allow_writeable_chroot=YES

 vsftpd有兩種端口:

一種是21端口,用來監聽客戶端連接請求的。 這個一般說來是固定的,就一直使用21端口。
一種是,一旦獲取到請求之后,再專門用戶服務端和客戶端傳輸數據的端口。 (安裝用的這種)

在vsftpd.conf的最后追加

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010

這表示使用被動模式,用於傳輸數據的端口分配從30000-30010之間

六. 用戶鑒權

因為用戶 ftptest 是 nologin的,所以存在鑒權的問題。 如果鑒權問題不解決,就是永不停息的 530錯誤。。。

解決辦法有如下兩種:

1. 方式一:編輯/etc/pam.d/vsftpd

vi /etc/pam.d/vsftpd

注釋下面這一行

#auth required pam_shells.so

這樣不去鑒權,從而允許 ftptest 這種 nologin用戶登錄 ftp 服務器

 2.方式二:shells 文件

在/etc/shells文件里面增加一行:/sbin/nologin

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin

這樣允許不能登錄系統的用戶通過鑒權

七: 重啟服務

systemctl restart vsftpd.service

然后用瀏覽器,ftp命令或ftp工具訪問了

 

 

 

 

 

 參考: 

https://blog.csdn.net/zwd926/article/details/89884089

https://blog.csdn.net/qq_28245087/article/details/85631049


免責聲明!

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



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