踩了好多坑,耶学到很多东西,这里先贴出两篇东西的链接
http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html这是虚拟用户参考的文章基本按照这样做了,
http://suchalin.blog.163.com/blog/static/55304677201266104536534/这是脱坑的一篇文章,尽然配置了虚拟用户不能用本地登陆了,多坑啊
0、先普及一下知识:
vsftp提供3种远程的登录方式:
(1)匿名登录方式
就是不需要用户名,密码。就能登录到服务器电脑里面
(2)本地用户方式
需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户
(3)虚拟用户方式
同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)
1、前言:
不难看出虚拟用户并不是真的用户,而是用了linux某种机制去验证是否存在而已。
PS:感觉有点像javaee的文本检验的配置文件。。。感觉而已啦。
2、配置:
额,就是配置,因为软件都安装好。因为以前linux只有命令行,所以现在也只能还用老旧的配置方式了,有个界面多好啊,点点点,就好了,不乱说话了,配置额。
(1)首先,我们需要一个给pam验证的db文件:
需求:一个文本(装用户名密码),一个db软件,一个db文件
思路就是用db软件将文本转换为db文件。(是啰嗦了吧)需要添加新用户就重新生成一个新的同名db文件吧
软件:
apt-get install db5.3-util(记得在root下执行)
文本:
我是第二行用户名
我是第一行密码
我是第四行用户名
我是第三行密码
----etc.
基本就这一个规律吧,自己观察,不懂就看多几篇配置文章吧,勉强拉过去,嘻嘻
db文件:
db5.3_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
(这里我的配置用户文本是/etc/csftpd下的login.txt,通过命令生成了在/etc/vsftpd下的vsftpd_login.db文件)
权限设置:
chmod 600 /etc/vsftpd/vsftpd_login.db(这个权限就是,只能root用户可以读写)
额。总算生成了。
(2)为pam添加指向db的配置
在/etc/pam.d文件夹下有个vsftpd,在最前面添加:(你也可以理解为最前面追加下面的两行,因为我看其他教程的时候,好迷茫啊,他们在说什么鬼)
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
(3)建立一个新用户,并设置权限
useradd -d /home/ftp -s /sbin/nologin virtual
(还是那一句,没有这个文件夹就新建吧,总是新建很坑,但我也是新手啊,只能这么解决了)
chmod 755/home/ftp
(4)追加配置
guest_username=virtual(这个对应刚才新建的用户,可以看到这里就是指定一个普通用户而已)
至于他们是怎么关联的,好像看不粗来怎么关联的,但是就是能用了,呵呵
(5)为每一虚拟用户添加权限
在/etc/vsftpd文件夹下,新建一个vsftpd_user_conf文件夹(总之你看到少了什么就建什么吧,毕竟linux有那么一句话,一切皆文件)
并且在/etc/vsftpd.conf追加user_config_dir=/etc/vsftpd/vsftpd_user_conf,不难看出是我们新建的文件夹啊
mkdir /etc/vsftpd/vsftpd_user_conf
(建立文件夹)
touch /etc/vsftpd/vsftpd_user_conf/ftp6
(创建文件,这个命名有讲究,需要与db文件中的用户名相同,所以呢?我建了一个叫ftp6的虚拟用户啊)
我们打开ftp6,添加需要的配置(这个看个人情况添加)
local_root=/home/ftp/ftp6
#这里的虚拟用户目录可以根据实际情况修改,还有就是这个ftp6没有也是需要自己创建的
write_enable=YES
(至于安全性那些也要你自己确定啦)
好啦配置到这里结束,每个用户的权限请自行配置