Centos7.9安装vsftp

Centos7.9安装vsftp

𝓓𝓸𝓷 Lv6

一、安装

在CentOS 7.9 上搭建 vsftpd服务器,可以通过 yum 命令进行在线安装,也可以下载vsftpd rpm包安装

1
2
3
dnf install vsftpd  db4-utils -y

yum -y install vsftpd db4-utils

二、启动vsftpd服务

1
2
3
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd

三、配置防火墙

1
2
3
4
5
6
7
8
9
10
11
CentOS 7 默认使用 firewalld 
开放FTP 端口(通常是21 端口):
firewall-cmd --zone=public --add-service=ftp --permanent
重新加载防火墙规则:
firewall-cmd --reload
检查服务状态:
systemctl status firewalld,确认 active (running) 为开启状态。

或者直接关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld

四、Vsftpd虚拟宿主用户

1
2
3
# useradd vsftpd -d /home/vsftpd -s /sbin/nologin

# chown -R vsftpd:vsftpd /home/vsftpd

五、创建虚拟用户

1
2
3
# vi /etc/vsftpd/virtual_users.txt
hruser
uhx_H30Wn28l

六、创建虚拟用户数据库

1
2
db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
chmod 600 /etc/vsftpd/virtual_users.db

七、配置 PAM 认证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# vi  /etc/pam.d/vsftpd

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_users

这将告诉 vsftpd 使用 /etc/vsftpd/virtual_users.db 作为虚拟用户认证数据库。如果输入用户名和密码登录没反应,则需要检查这里的认证文件是否设置正确

# more /etc/pam.d/vsftpd
#%PAM-1.0
#auth required pam_userdb.so db=/etc/vsftpd/virtual_users
#account required pam_userdb.so db=/etc/vsftpd/virtual_users
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_users
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

八、配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# vi /etc/vsftpd/vsftpd.conf

local_enable=YES
write_enable=YES
anonymous_enable=NO
guest_enable=YES
guest_username=vsftpd
chroot_local_user=YES
user_config_dir=/etc/vsftpd/virtual_users_conf
pam_service_name=vsftpd
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES


# 允许本地用户
local_enable=YES

# 允许写入
write_enable=YES

# 禁用匿名用户
anonymous_enable=NO

# 启用虚拟用户
guest_enable=YES
guest_username=ftp

# 使用 PAM 认证
pam_service_name=vsftpd.virtual

# 启用 chroot 将用户限制在主目录
chroot_local_user=YES

# 虚拟用户配置文件目录
user_config_dir=/etc/vsftpd/vuser_conf

九、为虚拟用户创建配置目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# mkdir    /etc/vsftpd/virtual_users_conf
# chown -R vsftpd.vsftpd /unixbak-exp01/backup/192.168.1.141

# vi /etc/vsftpd/virtual_users_conf/hruser

write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/unixbak-exp01/backup/192.168.1.141


参考如下设置:


(1) 仅下载权限

vim /etc/vsftpd/virtual_users_conf/hruser
anon_world_readable_only=NO
local_root=/unixbak-exp01/backup/192.168.1.141


(2) 上传、下载权限,不能删除、不能重命名

anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/unixbak-exp01/backup/192.168.1.141


(3) 全部权限:可上传、下载、删除和改名

write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/unixbak-exp01/backup/192.168.1.141

十、限制虚拟用户切换主目录

1
2
3
# vim /etc/vsftpd/chroot_list
hruser
user2

十一、重启vsftpd

1
service vsftpd restart

十二、报错处理

1.550 Permission denied
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(1) 检查/etc/vsftpd/vsftpd.conf里的参数是否生效

write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/unixbak-exp01/backup/192.168.1.141

(2) 检查目录权限:

# ll -ld /unixbak-exp01/backup/192.168.1.141/
drwxr-xr-x 2 vsftpd vsftpd 4096 1月 26 16:12 /unixbak-exp01/backup/192.168.1.141/

十三、FTP上传脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Windows bat上传文件脚本:

set BACKUP_DIR=D:\rman
set ymd=%date:~0,4%%date:~5,2%%date:~8,2%
cd /d %BACKUP_DIR%/%ymd%
Echo open 172.22.17.67>ftp.up
Echo hruser>>ftp.up
Echo uhx_H30Wn28l>>ftp.up
Echo binary >>ftp.up
Echo cd rman>>ftp.up
Echo prompt off>>ftp.up
Echo prompt off>>ftp.up
Echo mput *ymd*>>ftp.up
Echo bye >>ftp.up
ftp -is:ftp.up
del %BACKUP_DIR%\ftp.up /q

timeout /t 5 /nobreak >nul

set BACKUP_DIR=D:\dbbak\dmp
set ymd=%date:~0,4%%date:~5,2%%date:~8,2%
cd /d %BACKUP_DIR%
Echo open 172.22.17.67>ftp.up
Echo lisuser>>ftp.up
Echo uhx_H30Wn28l>>ftp.up
Echo binary >>ftp.up
Echo cd expdp>>ftp.up
Echo prompt off>>ftp.up
Echo prompt off>>ftp.up
Echo mput *%ymd%*>>ftp.up
Echo bye >>ftp.up
ftp -is:ftp.up
del %BACKUP_DIR%\ftp.up /q

forfiles /p "%BACKUP_DIR%" /s /m *.* /d -7 /c "cmd /c echo Deleting: @path && del @path"



这里是每个参数的解释:

/p "C:\example": 指定要搜索的目录。
/s: 搜索指定目录及其所有子目录。
/m *.*: 匹配所有文件(你也可以指定特定的文件扩展名,例如*.txt)。
/d -7: 仅选择修改日期在7天前的文件。
/c "cmd /c del @path": 对选定的文件执行命令。这里的命令是删除文件。@path是一个变量,代表当前处理的文件的完整路径。
如果你想在执行删除操作前先确认,你可以使用echo命令代替del命令来显示将要删除的文件,如下所示:

@echo off
forfiles /p "C:\example" /s /m *.* /d -7 /c "cmd /c echo Deleting: @path && del @path"


0 1 * * * /usr/bin/find /unixbak-exp01/backup/192.168.1.141/ -mindepth 2 -mtime +31 |/usr/bin/xargs rm -rf >> /tmp/delete_backup.log 2>&1
  • Title: Centos7.9安装vsftp
  • Author: 𝓓𝓸𝓷
  • Created at : 2026-01-26 20:46:35
  • Updated at : 2026-01-27 14:30:24
  • Link: https://www.zhangdong.me/vsftp-installation.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论