基于虚拟用户的FTP服务
基于虚拟用户的FTP服务
建立虚拟用户的账号数据库
1.创建文本格式的用户名、密码列表
奇数行为用户名,偶数行尾上一上中用户所对应的密码
vi /etc/vsftpd/vusers.list
mike
123
john
456
2.创建Berkeley DB格式的数据库文件
cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusers.db
file vusers.db //查看转换后的文件类型
-f 选项用于指定数据源文件
-T选项允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
-t hash 选项指定读取数据文件的基本方法。
为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以避免数据外泄。
chmod 600 /etc/vsftpd/vusers.*
ls -lh /etc/vsftpd/vusers.*
3.添加虚拟用户的映射账号、创建FTP根目录
使用FTP目录设为/var/ftproot/,映射账号的名称为virtual
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot //调整权限以允许浏览目录
为vsftpd服务添加虚拟用户支持
1.为虚拟用户建立PAM认证文件
vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
上述PAM配置内容中,通过“db=/etc/vsftpd/vusers”参数指定了要使用的虚拟用户数据库文件位置(省略了.db扩展名),即对应为/etc/vsftpd/vusers.db文件
2.修改vsftpd配置,添加虚拟用户支持
local_enable=YES //需映射本地用户,所以启用此项
write_enable=YES //启用上传写入支持
anon_umask=022 //指定上传权限掩码
guest_enable=YES //启用用户映射功能
guest_username=virtual //指定映射的系统用户名称
pam_service _name=vsftpd.vu //指定新的PAM认证文件
在vsftpd服务中,虚拟用户被默认作为匿名用户进行处理以降低权限,因此对应的配置项通常以anon_开头。 例如在设置虚拟用户所上传文件的默认权限掩码时,应采用配置项为annon_umask而不是local_umask
3.为不同的虚拟用户建立独立的配置文件
为FTP用户启用独立配置文件,需要修改vsftpd.conf配置文件,添加“user_config_dir”配置项。例如,以下设置表示从/etc/vsftpd/vusers_dir、目录中查找每个用户的独立配置文件
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
有了上述配置以后,就可以在/etc/vsftpd/vsuers_dir/目录中为每个虚拟用户分别建立配置文件了。例如,若要使虚拟用户john能够上传文件,创建目录,而用户mike仍然只有默认的下载权限,可以执行以下操作
mkdir /etc/vsftpd/vusers_dir/ //创建用户配置文件夹
cd /etc/vsftpd/vusers_dir/
vi john //为用户john建立独立的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
touch mike //为其他用户创建空的配置文件
service vsftpd reload //重新加载配置
在vsftpd.conf文件中启用了“user_config_dir”配置项以后,应该为每一个虚拟用户都建立一个单独的配置文件(可以是空文件),否则该用户可能会无法登陆。在每个用户的独立配置文件中,可以添加新的配置项来限制访问权限,下载速率等。
有了虚拟用户数据文件,并为vsftpd正确添加了虚拟用户支持以后,就可以重新加载vsftpd服务程序了。用户可以使用FTP客户程序访问该FTP服务器,以虚拟用户账号进行测试。根据之前的配置过程,至少应确认一下结果。
- 用户Mike可以登录,并能够正常浏览、下载文件,但不能上传文件
- 用户john可以登录,且可以正常浏览、下载文件,也可以上传文件。
- Linux主机中的系统用户将无法登录