通过上面提到的命令,你可以创建、修改和删除虚拟用户,甚至可以手工方式编辑“/usr/local/etc/pureftpd.passwd”文件。但是,只有提交这些更改,pure-ftpd 访问才能生效。类似数据库中的事务处理。
提交更改,意味着系统会根据(或者指定的其它文件)来创建一个 pure-ftpd 可读的二进制格式的文件。 该二进制文件中的帐号是分类存储并索引优化了的,可以加快访问速度。
创建 PureDB 文件的命令如下:
# pure-pw mkdb
运行命令后,系统会在“/usr/local/etc/pureftpd.passwd”文件所在目录自动生成“/usr/local/etc/pureftpd.pdb”索引文件。
如果你想从你指定的 passwd 文本文件中生成PureDB 文件,用“-f”选项。
# pure-pw mkdb /etc/accounts/ftpusers.pdb -f /etc/accounts/ftpusers.txt
创建了 PureDB 文件(也就是提交)后,不必重启 pure-ftpd 服务,对虚拟用户进行的创建、修改和删除等操作立即生效。
同时,也可以通过“-m”选项,让“/usr/local/etc/pureftpd.passwd”文本文件在修改(如添加用户、修改密码、删除用户等等)后自动提交。命令格式如下:
# pure-pw passwd joe –m
这个命令将修改“/usr/local/etc/pureftpd.passwd”文本文件中的用户密码,并将更改提交给“/usr/local/etc/pureftpd.pdb”。
4、更改配置文件让虚拟用户生效
将配置文件中的 PureDB 文件路径改为你的PureDB 文件路径。
# ee /usr/local/etc/pure-ftpd.conf
PureDB /usr/local/etc/pureftpd.pdb //Puredb路径
通过以上建立的用户,可上传,可下载,可删除,拥有全部权限。可以通过对目录的限制来达到对用户权限的限制,以后再讲解。
开启虚拟用户后,如果在配置文件中设置“UnixAuthentication no”,pureftpd就只支持虚拟用户登录,不支持系统真实用户登录。如果设置“UnixAuthentication yes”,pureftpd只支持虚拟用户登录,同时支持系统真实用户登录。
三、技巧
1、将系统用户转换为虚拟用户。
你可以用“pure-pwconvert”命令,将系统(/etc/passwd)用户转换为虚拟用户。
命令如下:
# pure-pwconvert >> /usr/local/etc/pureftpd.passwd
如果你以非特权的系统用户身份运行该命令,密码栏将是空的。如果你以 root 用户身份运行该命令,所有特性都被复制过来,甚至是经过哈希函数加密的密码。
这个转换只会把有 shell 访问权的用户转换过来,shell 访问设置为 nologin 的将不被转换。
系统用户转化为虚拟用户的意义在于,同一个用户名可以用不同的密码访问 FTP 和 Telnet 。
2、环境变量
默认的情况下,如果指定了环境变量 PURE_PASSWDFILE ,则虚拟用户的 passwd 文件位置由该变量的值指定。否则,默认是位置是“/usr/local/etc/pureftpd.passwd”(Linux 中是“/etc/pureftpd.passwd”)。
同样,PURE_DBFILE 环境变量用来指定 pdb 文件的位置。默认是“/usr/local/etc/pureftpd.pdb”(Linux中“/etc/pureftpd.pdb”)。