1. 系统环境
Deepin20.9
2. 在线安装
# apt install -y vsftp //安装ftp服务软件
# apt install -y db-util //安装虚拟用户密码库处理软件
3. 离线安装
3.1 下载依赖包
# apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends vsftpd | grep -v i386 | grep "^\w")
# apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends db-util| grep -v i386 | grep "^\w")
3.2 安装
# dpkg -i *.deb
4. 创建虚拟ftp目录
# mkdir -p /data/vftp/pub
# chmod a-w /data/vftp
5. 创建虚拟ftp用户
5.1 #创建虚拟用户源文件
-
一行用户名,一行密码
vi /etc/vsftpd/vusers.list
user1
user1pass
user2
user2pass
[EOF]
5.2 根据虚拟用户源文件生成虚拟用户密码库
# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
# chmod 600 /etc/vsftpd/vusers.db
5.3 创建虚拟ftp系统用户vftp和服务用户user1、user2
# useradd -g ftp -d /data/vftp -s /sbin/nologin vftp
# chown vftp.ftp /data/vftp
# useradd -g ftp -d /data/vftp/user1 -s /sbin/nologin user1
# chown user1.ftp /data/vftp/user1
# useradd -g ftp -d /data/vftp/user2 -s /sbin/nologin user2
# chown user2.ftp /data/vftp/user2
6. 配置虚拟用户验证
# vi /etc/pam.d/vsftpd
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
#auth required pam_shells.so #需注释
auth sufficient pam_userdb.so db=/etc/vsftpd/vusers #添加行,指向虚拟用户密码库
account sufficient pam_userdb.so db=/etc/vsftpd/vusers #添加行,指向虚拟用户密码库
7. 配置文件
7.1 vsftpd配置文件/etc/vsftpd.conf
listen=YES #启用服务
write_enable=YES #启用可写操作
listen_port=30021 #指定端口
#listen_address=xxx.xxx.xxx.xxx #指定主机IP
anonymous_enable=NO #禁用匿名服务
local_enable=YES #启用系统用户服务
local_umask=022
chroot_local_user=YES #启用禁止系统用户使用chroot()功能
#虚拟用户
pam_service_name=/etc/pam.d/vsftpd #指向虚拟用户验证配置文件
guest_enable=YES #启用虚拟用户服务
guest_username=vftp #支持虚拟用户服务的系统用户
user_config_dir=/etc/vsftpd/vusers #虚拟用户配置目录
chroot_list_enable=YES #启用禁止chroot()功能
chroot_list_file=/etc/vsftpd/vusers.list #指向需要禁止chroot()功能的用户文件
virtual_use_local_privs=YES #虚拟用户使用系统用户相同的权限
use_localtime=YES #使用系统时间
7.2 虚拟用户配置文件
-
/etc/vsftpd/vusers/user1
guest_enable=yes
guest_username=user1
local_root=/data/vftp/user1
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
write_enable=YES -
/etc/vsftpd/vusers/user2
guest_enable=yes
guest_username=user2
local_root=/data/vftp/user2
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
write_enable=YES
8. 启停服务
# systemctl enable vsftpd //启用自动启动服务
# systemctl start vsftpd //启动服务
# systemctl stop vsftpd //停止服务
# systemctl restart vsftpd //重启服务