Linux上安裝vsftp(CentOS)

1.安裝vsftp

在安裝前查看是否已安裝vsftpd

# 查看是否已安裝 方法一
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-21.el7.x86_64
# 查看是否已安裝 方法二
[root@localhost ~]# vsftpd -v
vsftpd: version 3.0.2
# 安裝 vsftpd
[root@localhost ~]# yum -y install vsftpd

查看位置

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

啓動vsftpd服務

systemctl start vsftpd.service

關閉firewall和SELinux 

setenforce 0   # 設置SELinux 成爲permissive模式  (關閉SELinux)
setenforce 1   # 設置SELinux 成爲enforcing模式   (開啓SELinux)
# 或者修改配置
vi /etc/selinux/config
# SELINUX=enforcing
# 註釋掉
# SELINUXTYPE=targeted
# 註釋掉
SELINUX=disabled
# 增加
:wq! #保存退出
setenforce 0

 或者設置SELinux

getsebool -a | grep ftp
setsebool -P ftpd_full_access on
systemctl stop firewalld.service
#停止firewall
systemctl disable firewalld.service
#禁止firewall開機啓動

如果你不願意關閉防火牆,需要防火牆添加FTP服務。

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

或者

firewall-cmd --add-port=21/tcp --permanent
firewall-cmd --reload
firewall-cmd --add-port=10060-10090/tcp --permanent
firewall-cmd --reload

修改配置文件

配置文件/etc/vsftpd/vsftpd.conf

# 不允許匿名訪問,禁用匿名登錄
anonymous_enable=NO
# 啓用限定用戶在其主目錄下       
chroot_local_user=YES
# 使用本地時(自行添加)      
use_localtime=YES
# 允許使用本地帳戶進行FTP用戶登錄驗證      
chroot_list_enable=YES
local_enable=YES
# 如果啓用了限定用戶在其主目錄下需要添加這個配置       
allow_writeable_chroot=YES
# 啓用上傳和下載的日誌功能,默認開啓。
xferlog_enable=YES
# 設置本地用戶默認文件掩碼022        
local_umask=022
# 使用本地時(自行添加)
use_localtime=YES
# 啓用限定用戶在其主目錄下      
listen_port=21
chroot_local_user=YES
idle_session_timeout=300
# 數據連接超時時間
data_connection_timeout=120
# 設定啓用虛擬用戶功能
guest_enable=YES
# 指定虛擬用戶的宿主用戶
#guest_username=wiseasy
# 虛擬用戶配置文件目錄
user_config_dir=/etc/vsftpd/vconf
# NO時,虛擬用戶和匿名用戶有相同的權限,默認是NO
virtual_use_local_privs=YES
# 被動模式最小端口號10060
pasv_min_port=6000
# 被動模式最大端口號10090
pasv_max_port=7000
pasv_promiscuous=YES
#關閉PASV模式的安全檢查
pasv_enable=YES
##主動模式
accept_timeout=5
connect_timeout=1
pam_service_name=vsftpd
#禁止反向域名解析,若是沒有添加這個參數可能會出現用戶登陸較慢,或則客戶鏈接不上ftp的現象
#reverse_lookup_enable=NO
#設定虛擬用戶的權限符合他們的宿主用戶
#virtual_use_local_privs=YES
write_enable=YES

匿名登錄

安裝完默認情況下是開啓匿名登錄的,對應的是 /var/ftp 目錄,這時只要服務啓動了,就可以直接連上FTP了。默認用戶名是ftp,密碼是空的。如果你在配置裏面配置了anonymous_enable=NO,匿名就無法登錄。

$ ftp 192.168.188.114

Connected to 192.168.188.114.
220 (vsFTPd 3.0.2)
Name (192.168.188.114:kennywang): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||47867|).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 12 Jan 18 06:31 README.md
drwxr-xr-x    2 0        0               6 Nov 05 19:43 pub
226 Directory send OK.

創建宿主用戶

新建系統用戶ftpuser,用戶目錄爲/home/vsftpd, 用戶登錄終端設爲/bin/false(即使之不能登錄系統)

# 方法一
# 創建用戶 ftpuser 指定 `/home/vsftpd` 目錄
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser

# 設置用戶 ftpuser 的密碼
passwd ftpuser
# 把 /home/vsftpd 的所有權給ftpuser.root
chown -R ftpuser.root /home/vsftpd

# 方法二
useradd ftpuser -d /home/vsftpd -s /bin/false
chown ftpuser:ftpuser /home/vsftpd -R 

# 如果虛擬用戶的宿主用戶爲www,需要這樣設置
# www目錄是你應用的目錄
chown www:www /home/www -R

刪除用戶 userdel ftpuser 

建立虛擬用戶文件

touch /etc/vsftpd/vuser_passwd
# 編輯虛擬用戶名單文件:(
# 第一行賬號,第二行密碼,注意:不能使用root做用戶名,系統保留)
vi /etc/vsftpd/vuser_passwd 
# 編輯內容,下面是 vuser_passwd 內容
wcj
123456
hss
123456
#保存退出

生成虛擬用戶數據文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db

 創建用戶配置

mkdir /etc/vsftpd/vuser_conf  # 建立虛擬用戶個人vsftp的配置文件
cd /etc/vsftpd/vuser_conf     # 進入目錄
touch hss wcj

每一個文件配置文件都差不多,只是參數local_root不一樣。 

local_root=/home/vsftpd/hss   # 用戶 hss 配置目錄,這個地方不一樣
write_enable=YES              # 允許本地用戶對FTP服務器文件具有寫權限
anon_world_readable_only=NO
anon_upload_enable=YES        # 允許匿名用戶上傳文件(須將全局的write_enable=YES,默認YES)
anon_mkdir_write_enable=YES   # 允許匿名用戶創建目錄
anon_other_write_enable=YES   # 允許匿名用戶刪除和重命名權限(自行添加)

創建用戶目錄 

每個用戶目錄文件夾是有root用戶創建的,也就是上面local_root配置目錄,其權限應設置爲755。因爲權限的問題在該文件夾內無法直接上傳文件。而如果設置爲777則無法訪問,這是由於vsftpd的安全性設置。解決上傳問題的方法是在local_root文件夾內新建一個upload的文件夾,權限設置爲777,可將文件上傳到該文件夾。

mkdir -p /home/vsftpd/hss     # 每個用戶對於一個目錄,創建兩個目錄“hss”、“wcj”

# 下面是目錄結構
/home/vsftpd
      ├── hss
      │   ├── filename.md
      │   └── upload
      └── wcj
          └── filename.md


# 賦予其權限
chmod -R 777 /var/vsftpd/hss/upload/

# 在/var/ftp下新建一個目錄來實現匿名用戶上傳
mkdir /var/ftp/upload

vsftpd中幾種用戶的區分:

本地用戶:用戶在FTP服務器擁有賬號,且該賬號爲本地用戶的賬號,可以通過自己的賬號和口令進行授權登錄,登錄目錄爲自己的home目錄$HOME 
虛擬用戶:用戶在FTP服務器上擁有賬號,但該賬號只能用於文件傳輸服務。登錄目錄爲某一特定的目錄,通常可以上傳和下載 
匿名用戶:用戶在FTP服務器上沒有賬號,登錄目錄爲/var/ftp

 最後重啓vsftpd服務器

systemctl restart vsftpd.service
systemctl restart vsftpd.service  # 重啓服務
systemctl start vsftpd.service    # 啓動服務
systemctl status vsftpd.service   # 服務狀態查看

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章