236 条记录
23 私有链接
23 私有链接
VSFTP配置虚拟用户
安装依赖工具
sudo apt install -y vsftpd db-util
创建vsftpd专用目录
mkdir -p /etc/vsftpd/
创建ftp用户
sudo useradd -r -d /srv/ftp -s /usr/sbin/nologin ftpvirt
sudo mkdir -p /srv/ftp
sudo chown -R ftpvirt:ftpvirt /srv/ftp
sudo mkdir -p /etc/vsftpd/vuser_conf
sudo mkdir -p /srv/ftp/scientistzjf
sudo chown -R ftpvirt:ftpvirt /srv/ftp/scientistzjf
创建虚拟用户的用户名和密码,并转换成db数据
# virt_users.txt每两行一组
sudo tee /etc/vsftpd/virt_users.txt > /dev/null <<'EOF'
scientistzjf
YOUR_PASSWORD
EOF
sudo db_load -T -t hash -f /etc/vsftpd/virt_users.txt /etc/vsftpd/virt_users.db
sudo chmod 600 /etc/vsftpd/virt_users.*
将用户数据导入PAM中
sudo tee /etc/pam.d/vsftpd_virtual > /dev/null <<'EOF'
auth required pam_userdb.so db=/etc/vsftpd/virt_users
account required pam_userdb.so db=/etc/vsftpd/virt_users
EOF
编辑/etc/vsftpd.conf配置文件
# 禁止匿名
anonymous_enable=NO
# 允许非匿名登录(虚拟用户也算“非匿名”,必须开)
local_enable=YES
# 允许写
write_enable=YES
# PAM 指向我们刚建的虚拟用户认证
pam_service_name=vsftpd_virtual
# 启用 guest 映射:所有虚拟用户映射为 ftpvirt
guest_enable=YES
guest_username=ftpvirt
# 让虚拟用户拥有本地用户权限(否则像匿名一样限制多)
virtual_use_local_privs=YES
# 每个虚拟用户独立配置(非常好用)
user_config_dir=/etc/vsftpd/vuser_conf
# 建议启用(按需)
chroot_local_user=YES
allow_writeable_chroot=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.allowed_users
# 独立监听模式
listen_ipv6=NO
listen=YES
给vsftpd独立用户创建配置
sudo tee /etc/vsftpd/vuser_conf/scientistzjf > /dev/null <<'EOF'
local_root=/srv/ftp/scientistzjf
write_enable=YES
EOF
#此处local_root=/srv/ftp/scientistzjf是该用户的根目录,一定要给与ftp用户目录权限(ftpvirt:ftpvirt)
给vsftpd配置白名单(防止服务器本地用户登录)
echo "scientistzjf" | sudo tee /etc/vsftpd.allowed_users
sudo chmod 600 /etc/vsftpd.allowed_users
注意,vsftpd.conf中应该要有以下配置:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.allowed_users
重启VSFTPD服务
sudo systemctl restart vsftpd
sudo systemctl status vsftpd --no-pager
验证是否真的在监听 21 端口
sudo ss -lntp | grep ':21'