vsftpd虚拟用户配置

网上有很多文章,如果你简单照着配置,大概率是不行的,因为每个人的软件和系统环境都有所差异,所以本文不是告诉你一步一步怎么配置,而是把过程中的要点记录下来,便于排查问题。

虚拟用户归属的系统用户

我们也称为虚拟用户的宿主用户,这里我们一般建议直接使用ftp账户:

ftp:x:104:107:ftp daemon,,,:/srv/ftp:/bin/false

guest_enable=YES
guest_username=ftp

虚拟用户chroot目录

一般我们使用虚拟用户,每个虚拟用户都配置成拥有自己专有的目录和权限。目录配置如下:

user_config_dir=/etc/vsftpd/vusers
user_sub_token=$USER
local_root=/home/virtual/$USER

虚拟用户权限

经过实际验证,主要是配置anon_umask来控制文件权限,通过anon_xxx来配置动作行为。

pam配置

网上的文章大部分是基于db4工具db_load 下的pam_userdb.so 的pam配置,并没全场景通过,有待后继进一步确认。在实际的验证中,测试实际通过使用的的是pwdfile库:

auth required pam_pwdfile.so pwdfile /etc/vsftpd/vsftpd.passwd
account required pam_permit.so

这个库的对应账号数据不是通过db_load,而是openssl工具:

openssl passwd -1 "$VSFTPD_USER_PASS"

文件夹及目录权限

经过配置,如果你发现,所有的账户还是不能达到预期的权限控制和可达性,请结合 anon_umask 来确认用户的chroot 目录及所操作文件的实际权限

SELinux

需要进行相应的ftp权限配置,或者关闭

参考配置

vsftpd.conf

###
# Config file for vsftpd
###

# Daemon options
listen=YES
listen_ipv6=NO
session_support=NO

# Log In Options and Access Controls
anonymous_enable=YES
anon_root=/home/virtual/share 
ftpd_banner=Wellcom to iTransCloud ftp server!
local_enable=YES

# pam
pam_service_name=vsftpd

# Local User Options
chmod_enable=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
guest_enable=YES
guest_username=ftp
local_umask=0022
anon_umask=0222
user_config_dir=/etc/vsftpd/vusers
user_sub_token=$USER
local_root=/home/virtual/$USER

# ascii 
ascii_upload_enable=YES
ascii_download_enable=YES

# Directory Options
dirlist_enable=YES
dirmessage_enable=NO
force_dot_files=NO
hide_ids=NO
ls_recurse_enable=NO
use_localtime=YES

# File Transfer Options
download_enable=YES
chown_uploads=NO
write_enable=YES

# Logging Options
dual_log_enable=NO
log_ftp_protocol=NO
syslog_enable=NO
vsftpd_log_file=/var/log/vsftpd/vsftpd.log
xferlog_enable=YES
xferlog_std_format=NO

# Network Options
connect_from_port_20=YES
listen_port=21
pasv_enable=YES
pasv_address=changeme
pasv_min_port=changeme
pasv_max_port=changeme
pasv_promiscuous=NO
port_enable=YES

# Connection Options
tcp_wrappers=YES
max_clients=10
max_per_ip=5
max_login_fails=3

# Tweak
seccomp_sandbox=NO
allow_writeable_chroot=YES

虚拟用户配置文件

这里给出的是一个读写全权限的配置,其他组合自行修改

anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_umask=0022

匿名用户

在支持虚拟用户的支持,是可以实现支持匿名访问的,实现的要点也是,关注配置和被访问文件夹以及被访问文件的权限设置,设置正确,就可以支持了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注