Linux(Centos)配置vsftp使用账号密码(虚拟用户)登录ftp进行文件上传和修改
安装vsftp
yum install vsftpd -y
安装完成之后进入vsftp的配置文件夹
cd /etc/vsftpd/
文件夹内容如下
[root@VM-0-12-centos vsftpd]# ll
total 20
-rw------- 1 root root 125 Oct 14 00:10 ftpusers
-rw------- 1 root root 361 Oct 14 00:10 user_list
-rw------- 1 root root 5116 Oct 14 00:10 vsftpd.conf
-rwxr--r-- 1 root root 338 Oct 14 00:10 vsftpd_conf_migrate.sh
在当前目录下创建一个用户名和密码的文件
文件名名称为 ftp_user.txt
vim /etc/vsftpd/ftp_user.txt
再ftp_user.txt文件里配置用户和密码
yvioo
123456
kaifa
12345678
其中
yvioo 是ftp登录的用户名
123456 是ftp中yvioo用户登录的密码
kaifa 是ftp登录的用户名
12345678 是ftp中kaifa用户登录的密码
以此内推,可以添加多个
然后保存退出
wq!
执行命令 生成虚拟数据库
db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_login.db
其中
/etc/vsftpd/ftp_user.txt 是上面存放用户名和密码文件的绝对路径
/etc/vsftpd/ftp_login.db 这个是生成的数据库的路径 数据库名称为 ftp_login.db
设置生成的数据库的访问权限
chmod 777 /etc/vsftpd/ftp_login.db
编辑账号的pam验证文件
vim /etc/pam.d/vsftpd
在最上方增加
auth sufficient pam_userdb.so db=/etc/vsftpd/ftp_login
account sufficient pam_userdb.so db=/etc/vsftpd/ftp_login
其中
db=/etc/vsftpd/ftp_login 这个就是上一步生成的虚拟数据库(文件名称根据自己的来),注意:这里不用加 .db 后缀
如下图所示
创建一个文件夹
mkdir /home/vsftpd
新建一个系统用户vsftpd
用户登录终端设为/bin/false(即不能登录系统)
useradd vsftpd -d /home/vsftpd -s /bin/false
其中
vsftpd 这个就是创建的用户的用户名(这个下面配置文件里会使用)
/home/vsftpd 就是刚才创建的文件夹
根据需要创建修改/etc/vsftpd/vsftpd.conf,以下设置
vim /etc/vsftpd/vsftpd.conf
修改配置
#禁用匿名登入
anonymous_enable=YES 改为 anonymous_enable=NO
#监听为专用模式
listen=NO 改为 listen=YES
#将ipv6监听注释掉
listen_ipv6=YES 改为 #listen_ipv6=YES
在配置文件底部增加
#对用户访问只限制在主目录 不能访问其他目录(这个已经有了 但是默认是注释的 可以取消注释或者直接新增)
chroot_local_user=YES
#启用guest
guest_enable=YES
#使用虚拟账号形式(vsftpd 就是我们上面创建的用户的用户名)
guest_username=vsftpd
#虚拟账号配置目录(这个还没创建 我们下面再进行创建,先这样写)
user_config_dir=/etc/vsftpd/user_conf
#对vsftpd的用户使用pam认证
(这个就是我们上面改的pam验证文件的文件名,这个默认已经有了,所以不用添加, 没有的话再添加)
pam_service_name=vsftpd
#允许本地用户登录(这个默认的也有了,没有的话添加上)
local_enable=YES
然后保存退出
接着创建虚拟账号配置目录
mkdir /etc/vsftpd/user_conf
进入文件夹
cd /etc/vsftpd/user_conf/
创建文件
vim /etc/vsftpd/user_config/yvioo
其中
yvioo 就是我们上面ftp_user.txt中配置的ftp的账号的用户名
(这里创建的文件名要对应上,如果有多个ftp用户就创建多个ftp文件对应的用户名文件,然后在里面设置权限即可)
然后添加
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www
说明如下
#是否允许登陆用户有写权限。属于全局设置,默认值为YES。
write_enable=YES
#如果设为YES,则允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认值为YES。
anon_world_readable_only=NO
#如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。
anon_upload_enable=YES
#如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。
anon_mkdir_write_enable=YES
#如果设为YES,则允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名。(如果 anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;如果 anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。)默认值为NO。
anon_other_write_enable=YES
#当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。可以自己修改
local_root=/data/www
可以根据自己的需要添加,如果想拥有所有权限 就都加入
然后保存退出
给要远程的目录local_root添加权限
chmod 777 /data/www/
接着重启服务
#启动
service vsftpd start
#重启
service vsftpd restart
然后就可以用软件,使用用户名:yvioo 密码:123456 访问远程文件了
如果出现
连接失败
OOPS: vsftpd: refusing to run with writable root inside chroot()
出现这个报错
这是因为从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
我们在修改配置文件 在底部增加
allow_writeable_chroot=YES
然后重启即可
最新文章
- composer 使用详解
- windows平台源码编译最新版openssl
- 《Redis设计与实现》读书笔记
- Timer与TimerTask的真正原理&;使用介绍
- 如何配置Drupal数据库信息?
- linux面试题1
- 键盘KeyCode值列表
- 移动设备、手机浏览器Javascript滑动事件代码
- CentOS下MySQL无法正常启动错误
- 监测scroll
- Struts2的validator和WEB-INF下页面交互以及路径问题
- 浅谈数据结构vector
- centos7 docker升级到最新稳定版本
- 【腾讯Bugly干货分享】职场中脱颖而出的成长秘诀
- 超酷!纯CSS3烧烤动画实现教程
- U3D的结构体堆分配栈分配
- 《剑指offer》第二十四题(反转链表)
- 一分钟搞定:spring boot 热部署 (基于Idea)
- Django之进阶相关操作
- Android内存泄露总结
热门文章
- SNPEFF snp注释 (添加自己基因组)
- 半天做完的数据报表,YonBuilder只要十几分钟,0代码开发
- Qt最好用评价最高的是哪个版本?
- Learning Spark中文版--第五章--加载保存数据(2)
- 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)
- set、multiset深度探索
- 【swift】CoreData Crash(崩溃)(Failed to call designated initializer on NSManagedObject class)
- mybatis-plus条件构造用is开头的Boolean类型字段时遇到的问题
- Android Menu的基本用法
- android获取路径目录方法