lftp介绍:
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常想一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。
1.lftp使用的环境:
在使用lftp之前,需要先编辑/etc/sysconfig/selinux文件,将selinux功能设置为disabled即关闭,然后重启生效。selinux相当于一个系统保护程序,开启的话可能会造成lftp部分功能的使用障碍。
在重启之后可以使用getenforce查看selinux状态:
接下来就是对vsftpd服务的安装了,安装之后开启服务,并且在防火墙设置允许ftp通过防火墙访问:
2.本地用户和匿名用户接入的权限设定:
编辑/etc/vsftpd/vsftpd.conf文件,设定匿名用户不可以连接访问,本地用户可以:
本地用户连接方式:lftp ip -u username
匿名用户连接方式:lftp ip
在文件配置完成之后需要systemctl restart vsftpd.service重启服务以读取新的配置,之后用户的权限就得到了限制:
3.匿名用户上传文件权限:
同样配置文件内容之后重启服务,若设置anon_world_readable_only=NO表示匿名用户可以进行下载和删除(包括重命名):
:
由于虚拟用户接入后默认在/var/ftp目录下,要在pub目录里上传文件和建立文件夹,就需要设定ftp用户组对pub目录的权限,设定权限之后就可以以匿名用户的方式登陆并上传文件passwd和建立目录jianlimulu:
4.速率限制:
对匿名用户上传文件的速率限制的配置文件内容:
在速率设定之前,将截取的1000M文件上传到pub目录,可以看到上传的平均速率为38.91M/s,在设定速率之后,上传速度就变得非常慢了:
5.用户跳出家目录的设定:
匿名用户连接之后默认在/var/ftp目录下,本地用户连接之后默认在该用户的家目录下,如果不想接入的用户对本地数据的操作就需要限定用户不能够跳出所在目录:
在/etc/vsftpd目录下,编辑文件chroot_list,将不想跳出所在目录的用户名称写入,这样该文件就成了一个黑名单:
接下来,在配置文件里面设定黑名单读取路径。当chroot_local_user=YES时,chroot_list文件就成了一份白名单,只有该文件里面的用户能够跳出所在目录了:
文件配置完成之后重启服务,黑名单中的westos用户将无法跳出到/mnt目录,而linux用户可以:
6.设定用户是否可以接入:
在/etv/vsftpd目录下有两个名单,一个时ftpusers永久黑名单,一个是user_list黑名单。当user_list变为白名单,且两个名单中出现相同的用户时,由于ftpusers优先级高所以默认该用户无法接入。
在user_list中写入westos用户,设定该用户无法接入:
在配置文件中开启黑名单并重启服务:
以wetsos用户身份登陆失败。当配置文件中有指令行userlist_deny=NO 时,user_list就由黑名单变成了白名单。
7.虚拟用户的建立:
vim /etc/vsftpd/westosfile,输入用户账户和密码:
以hash方式给westosfile加密并生成文件westosfile.db:
在/etc/pam.d目录下编辑文件westos,这里面是虚拟用户登陆时账户和密码的路径:
编辑配置文件,此处的pam_service_name的westos需要与pam.d目录下的文件名一致,表示去pam.d目录下读取账户和密码。guest_username=linux是指虚拟用户借用linux用户的身份:
重启服务后接入,此时虚拟用户访问的是linux用户的家目录,内容是linux用户的文件:
8.设定虚拟用户登入后进入指定的家目录:
根目录下建立目录vsfdir,并建立user1,user2,user3作为虚拟用户的家目录,此处的家目录名称需要与虚拟用户名称相同:
配置文件:local_root=/vsfdir/$USER为虚拟用户的家目录路径,user_sub_token则是将$指令引入。重启服务后可以在上图看到当虚拟用户user1登入时,所在的是user1家目录,有user1目录下的文件file1:
9.参考:
lftp出错报告的原因