Linux网络操作系统-第35节-配置FTP服务器(二)虚拟用户与禁锢
上节允许系统用户登录 FTP,隐患很大:FTP 明文传密码,谁拿到就是真实系统账号。虚拟用户方案:账号只存在于 FTP 自己的认证库,不碰 /etc/passwd。

一、虚拟用户四步搭建
# ① 准备账号文本(奇数行用户名,偶数行密码) vim /etc/vsftpd/login.txt tom tom123 jerry jerry456 # ② 生成 Berkeley DB 认证库 dnf install -y libdb-utils # 老版本叫 db4-utils db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db chmod 600 /etc/vsftpd/login.db # ③ 改 PAM 认证指向该库(/etc/pam.d/vsftpd) auth required pam_userdb.so db=/etc/vsftpd/login account required pam_userdb.so db=/etc/vsftpd/login # ④ vsftpd.conf 启用 guest_enable=YES guest_username=ftp # 虚拟用户映射到的系统身份
二、禁锢用户在自家目录
chroot_local_user=YES # 所有用户锁在自己目录 allow_writeable_chroot=YES # 2.3.5+ 安全增强:可写目录需放行
禁锢后用户登录看到的就是家目录本身,cd .. 也出不去——想改系统文件?门都没有。
虚拟用户的价值:泄露一个 FTP 密码 ≠ 泄露一台服务器。chroot 两行参数是 vsftpd 高频考点,也是「500 OOPS: vsftpd: refusing to run with writable root」报错的答案——加上 allow_writeable_chroot=YES 即可。

