ftp虚拟用户配置详解
什么是ftp虚拟用户
FTP的虚拟用户是特定服务的专用用户,拥有独立的用户/密码文件。所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录,各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定。
虚拟用户帐号有两种存储方式,一种是文件存储方式:编辑文本文件,此文件需要被编码为hash格式奇数行为用户名,偶数行为密码。另一种是数据库存储,存放在关系型数据库的表中,可实时查询数据库完成用户认证。接下来讲解如何详细实现上述这两种方式。
服务器端配置
一、安装vsftpd服务
1)安装命令:# yum install vsftpd lftp ftp –y
2)启动ftpd服务:#systemctl start vsftpd
3)设置服务开机自启:#systemctl enable vsftpd
二、设置内核配置
#vim /etc/sysconfig/selinux
SELINUX=disabled //重启系统使配置生效
三、防火墙配置
#firewall-cmd --permanent --add-service=ftp
success //更改防火墙设置为永久
#systemctl restart firewalld //重启防火墙
#systemctl stop firewalld //关闭防火墙
#systemctl restart vsftpd //重启ftp服务
四、在服务端配置用户
1、建立vsftpd服务的宿主用户
#useradd -d /home/ftp ftpuser //添加用户ftpuser,指定用户家目录为/home/ftp
2、//修改用户密码
#passwd ftpuser
3、设置用户登录shell
#usermod -s /sbin/nologin ftpuser
4、新建目录
#mkdir /home/ftp/ftpuser
#chmod -R 777 /home/ftp/ftpuser
五、日志文件
#touch /var/log/vsftpd.log //创建日志文件
#chown ftpuser:ftpuser /var/log/vsftpd.log //修改文件属性
六、配置服务
文件定义
1)/etc/vsftpd/ftpusers:黑名单文件,在此文件中的用户不允许访问FTP服务器。
2)/etc/vsftpd/user_list:白名单文件,在此文件中的用户允许访问FTP 服务器。
3)/etc/vsftpd/vsftpd.conf:ftp服务的核心配置文件。
4)/etc/vsftpd/vsftpd_conf_migrate.sh:vsftpd操作的-些变量和设置
修改vsftpd配置文件,配置如下:
pam_service_name=vsftpd //PAM使用的名称,默认值为/etc/pam.d/vsftpd。
guest_enable= YES //启用虚拟用户
guest_username=ftpuser //用来映射虚拟用户
user_config_dir=/etc/vsftpd/vuser_conf //虚拟用户配置目录
listen_port=21 //监听在21端口
userlist_enable=YES //只允许vsftpd.user_list文件中的用户登录vsftp服务
anonymous_enable=NO //不允许匿名用户登录
local_enable=YES //允许本地用户登录
anon_umask=066 //为虚拟用户设置文件创建的umask值
xferlog_file=/var/log/vsftpd.log //日志文件位置
ascii_upload_enable=YES //启用上传的ASCII传输方式
ascii_download_enable=YES //启用下载的ASCII传输方式
七、建立虚拟用户名单
#vim /etc/vsftpd/vusers.txt
八、认证文件
#gdbmtool /etc/vsftpd/login.pag store ftpuser 123456 //生成认证文件
九、编辑认证文件/etc/pam.d/vsftpd
#vim /etc/pam.d/vsftpd
先将配置文件中原有的 auth 及 account 的所有配置行均注释掉,添加一下内容:
auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login
十、创建虚拟用户权限配置文件存放位置
1.#mkdir /etc/vsftpd/vuser_conf //创建配置文件存放路径
2.#cd /etc/vsftpd/vuser_conf //进入此目录
3.#vim ftpuser 创建各用户自已的配置文件:(添加如下内容)
local_root=/home/ftp //虚拟用户登录家目录
anon_world_readable_only=NO //文件其他人必须有读的权限才允许下载
anon_upload_enable=YES //允许匿名用户对文件的下载
anon_mkdir_write_enable=YES //允许匿名用户对文件夹的创建
anon_other_write_enable=YES //允许匿名用户对文件和文件夹的删除和重命名
十一、重启vsftp服务
#systemctl restart vsftpd.service
客户端验证
一、访问验证
1)访问方式:ftp + ip地址,示例如下
[root@host1 ftp]# ftp 192.168.171.132
Connected to 192.168.171.132 (192.168.171.132).
220 (vsFTPd 3.0.3)
Name (192.168.171.132:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
2)验证用户登录目录
3)验证不允许登出家目录:
1.登录虚拟用户
2.尝试切换至/var目录
4)验证创建文件
1.登录虚拟用户
2.创建目录test111
3.在用户家目录验证目录test111是否存在
5)验证上传文件
1.在服务器端往用户目录上传文件
2.登录虚拟用户,可以查看上传的文件
二、遇到的问题
登录时遇到下图报错:
解决方法: vsftpd更新到3.0.5后出现这个报错,意思是增加对配置错误的强制检查需要在配置文件vsftpd.conf中加入allow_writeable_chroot=YES,重新启动vsftpd服务登录即可