安裝該軟件需要使用最高用戶(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