# 1.建立用户数据库

touch /home/ftpuser.txt

echo test111 >> ftpuser.txt

# 账户奇数行

echo pass111 >> ftpuser.txt  

# 密码偶数行

echo test222 >> ftpuser.txt

echo pass222 >> ftpuser.txt


# 安装软件

rpm -qf $(which db_load)

db4-utils-4.3.29-9.fc6

rpm -ivh db4_utlis-*.rpm


# 生成密码文件

db_load -T -t hash -f /home/ftpuser.txt /etc/vsftpd/vsftpd_login.db  与pam认证文件内名称相同


# 2.建立验证模式文件

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

vi /etc/pam.d/vsftpd 与 vsftpd.conf 内 pam_service_name= vsftpd 相同

# 添加

# 与密码文件名称相同

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login


# 3.建立一个所有虚拟用户使用的系统用户

useradd -d /home/vsftp virtual

chmod 755 /home/vsftp


# 4.修改配置文件启用虚拟用户

guest_enable=YES # 开启虚拟用户功能

guest_username=virtual # 指定虚拟用户使用的系统用户

pam_service_name=vsftpd # 以/etc/pam.d/验证模式文件名相同


# 5.重新启动后可以用虚拟用户登陆了.

# 为虚拟用户设置不同权限

virtual_use_local_privs

# 设置为YES 时,虚拟用户使用与本地用户相同权限,设置为NO时,虚拟用户使用与匿名用户相同权限

# 测试登录

可以用 [username]:[password]@IP地址


# 为每个用户设置不同权限

1.添加per_user

功能参数,如果开启了此功能,必须为每一个用户都有配置文件

vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vsftp_user_conf


2.在/etc/vsftpd/vsftp_user_conf

这个目录下建立与虚拟用户同名的文件,文件中写入用户的私有参数

# 禁止test111上传文件

echo "write_enable=NO" > /etc/vsftpd/vsftp_user_conf/test111


3.重启动 vsftpd

登录测试.