vsftpd 是一款运行于 Linux 环境的 ftp 服务器。本文将介绍配置其具备不同权限用户(管理员、只可上传、只可下载)的方法。
下文以 Ubuntu 18.04 为例。
通过 apt
指令安装 vsftpd
和 db-util
apt install vsftpd
apt install db-util
建立用户文件夹:
mkdir /home/vsftpuser
在用户文件夹下,建立 777 权限文件夹用于数据传输:
cd /home/vsftpuser
mkdir data
chmod 777 /home/vsftpuser/data
新建不可以登录的用户 vsftpuser
:
useradd -s /sbin/nologin -d /home/vsftpuser -M vsftpuser
修改用户密码:
passwd vsftpuser
建立文件 vim /home/vsftpd/u_list.txt
(奇数行用户名,偶数行密码):
admin
adminpassword
uploader
uploaderpassword
downloader
downloaderpassword
使用 db-utils
加密用户列表文件并修改权限:
db_load -T -t hash -f /home/vsftpd/u_list.txt /home/vsftpd/u_list.db
chmod 600 /home/vsftpd/u_list.db
修改文件 vim /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 required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/home/vsftpd/u_list
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/home/vsftpd/u_list
vim /home/vsftpd/conf/admin
:
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
local_root=/home/vsftpuser
vim /home/vsftpd/conf/downloader
:
anon_world_readable_only=NO
local_root=/home/vsftpuser
vim /home/vsftpd/conf/uploader
:
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
download_enable=NO
local_root=/home/vsftpuser
vim /etc/vsftpd.conf
:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
connect_from_port_20=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
pam_service_name=vsftpd
# 虚拟用户配置
guest_enable=YES
guest_username=vsftpuser
user_config_dir=/home/vsftpd/conf
ascii_upload_enable=YES
ascii_download_enable=YES
utf8_filesystem=YES
# 启用下面六行可以让 vsftpd 工作在被动模式
# 如需要让 ftp 工作在主动模式需要注释下面六行
listen_port=21
pasv_enable=YES
pasv_min_port=8700
pasv_max_port=8900
pasv_address=101.101.101.101
pasv_addr_resolve=YES
如果使用云服务器,则需要配置开启 20/21 端口
/etc/init.d/vsftpd restart