vsftpd usage

安装

1
2
# ubuntu
$ sudo apt install vsftpd

配置

配置文件路径

1
2
# ubuntu
/etc/vsftpd.conf

配置项

1
listen=YES    # 是否监听网络端口, 默认NO

用户

本地用户

1
local_enable=YES    # 允许使用本地用户账号密码登录

虚拟用户

仅用于登录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
# [required] 安装 pam & htpasswd
$ sudo apt install libpam-pwdfile apache2-utils

# [required] 创建目录
$ sudo mkdir /home/ftp
$ sudo mkdir /etc/vsftpd

# [required] /etc/vsftpd.conf 修改为如下配置
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER # root, 登录前确保用户目录已存在
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd_user_conf
allow_writeable_chroo=YES

# [required] 创建ftp用户
$ sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user-name # then enter password
# -c: create, 如需额外添加,去除该参数

# [required] /etc/pam.d/vsftpd 替换为如下内容
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

# [required] 创建没有shell登录权限的本地用户 vsftpd,用于虚拟用户登录
$ sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
# [optional] 验证
$ id vsftpd

# [optional untested] 用户独立配置,配置文件路径为 ${user_config_dir}/${user},以 wii 为例
$ sudo vim /etc/vsftpd_user_conf

# [required] 重启vsftpd
$ sudo service vsftpd restart

参考