Linux Pure-Ftpd 虚拟用户配置

时间:2022-08-28 10:37:23
本文本翻译自Pure-Ftpd官网文件:http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
翻译不好,有些地方进行了部分删除,不便之处 ,请大家多多见谅!!!
(以下的操作有的需要自己建立文件夹,并设置权限)!!!

-----------------------------------------------
Pure-Ftpd 虚拟用户配置

自从0.99.2版后,Pure-Ftpd 支持虚拟用户

虚拟用户是一种简单的机制,它可以存储用户的名字,密码,用户ID ,目录等 ,就像/etc/passwd 一样,但它不是/etc/passwd。 它是不同的文件,只对FTP 有效。


这意味着你可以很容易的创建FTP的帐号,而不用和系统帐号混在一起。

另外和系统帐号不同的是虚拟用户文件可以保存不同的用户的磁盘限额,速度等 。

虚拟帐号可以共享同一个系统帐号,并且它们有自己的主目录和操作范围。

所以在使用虚拟用户前我们要先创建一个系统用户。当然,你可以使用一个已经存在的帐号像("nobody") 但是不要用ROOT帐号。但最好用一个专用的帐号。

让我们创建 ftpgroup 组和 ftpuser用户。

在Linux/OpenBSD/NetBSD/Solaris/HPUXt/等 类UNIX系统可以这样做:

groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
 

FREEBSD系统:

pw groupadd ftpgroup
pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc

然后,所有虚拟用户的维护工作都可以用 "pure-pw"这个命令来操作。你也可以手动来编辑配置文件。(/etc/pureftpd.passwd)


在虚拟用户的配置文件里,一行一个用户,每行里可能有以下的语法:
<帐号>:<密码>:<用户ID >:<组ID >:<gecos>:<主目录>:<上传带宽>:<下载带宽>:<上传比率>: <下载比率>:<最大连接数>:<文件数量>:<空间大小>:<authorized local IPs>:<refused
local IPs>:<授权客户IP >:<拒绝客户端IP>:<时间限制>

除了帐号,密码,用户ID,组ID ,主目录,其它字段可以为空。

密码的加密算法和/etc/passwd中使用的一样

------------------------ CREATING A NEW USER ------------------------

创建一个新的用户。
使用下面的语法来创建一个新的用户:

pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
-D/-d <home directory> [-c <gecos>]
[-t <download bandwidth>] [-T <upload bandwidth>]
[-n <max number of files>] [-N <max Mbytes>]
[-q <upload ratio>] [-Q <download ratio>]
[-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]...]
[-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]...]
[-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]...]
[-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]...]
[-y <max number of concurrent sessions>]
[-z <hhmm>-<hhmm>] [-m]

让我们来创建一个“joe"用户,他的主目录 在/home/ftpusers/joe . 和"joe"关联的系统用户是"ftpusers"

pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe

Joe的用户密码要问二次。

使用 -d 这个参数 joe 将会被限定在他的主目录 里。如果你想他可以访问整个系统 加 -D 参数。

你不用创建/home/ftpusers/joe 目录, 如果你运行pure-ftpd 时使用了 -j 参数(--createhome) ,使用了这个参数,当用户第一次登录里他的主目录将自动创建。

-z 参数将允许用户在特定的时间内登录。如 -z 0900-1800 ,joe将只能在9-18点才能登录。注意:在此期间登录的用户可以在这个时间后登出。

-r 和 -R 在限制用户来源IP时很有用。可以用简单的IP/mask(-r 192.168.1.0/24),多个地址源(-r 192.168.1.0/24,10.1.0.0/16,127.0.0.1/32),单个IP(-r 192.168.1.4,10.1.1.5), 主机名( -r bla.bla.net,yopcitron.com), 或者以上的这个种形式的组合。

-y 来限制一个用户的并发连接数。 0表示无限制。通过这个限制可以避免加重服务器的负荷。可以用 per-ip 来替代。

好了。 “joe"已经被创建了,默认的虚拟用户名单被存在/etc/pureftpd.passwd 文件中。你可以 -f 开头来改变存储的位置。

让我们来看看其中的内容:

joe:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftpusers/joe/./:::::::::::::

可以看到,密码已经被加密了。

------------------------ 更改信息 ------------------------

一旦用户创建了,你可以更改他们的信息,如你可以增加带宽的限制,改变限额,增加他们的全名,更改上传下载的比例等。

"pure-pw usermod " 的使用方法和 " pure-pw useradd "一样,只是它是用来修改已经存在的用户信息的。

例如,你想增加限额给"joe" ,使joe 只能存1000个文件,和使用10M 的容量空间

pure-pw usermod joe -n 1000 -N 10

让我们看一下/etc/pureftpd.passwd :

joe:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftpusers/joe/./::::::1000:10485760::::::

你可以看到。限额在文件中用字节的形式来存储。

------------------------ 重新设置用户属性------------------------


取消文件数限制, 使用 pure-pw usermod <user> -n ''
取消空间容量限制, 使用 pure-pw usermod <user> -N ''
取消上传下载比例, 使用 pure-pw usermod <user> -q '' -Q ''
取消下载带宽限制, 使用 pure-pw usermod <user> -t ''
取消上传带宽限制,使用 pure-pw usermod <user> -T ''
取消IP 过滤, 使用 pure-pw usermod <user> <-i,-I,-r or -R> ''
取消时间限制 , 使用 pure-pw usermod <user> -z ''
取消并发连接数限制, 使用 pure-pw usermod <user> -y ''


------------------------ 删除用户 ------------------------


删除用户很简单,使用 "pure-pw userdel", 语法 如下:

pure-pw userdel <login> [-f <passwd file>] [-m]

删除JOE 可以为样做:

pure-pw userdel joe

他的主目录 内容还存在, 你可以手工删除。

------------------------ 改密码 ------------------------


改变一个用户的密码, 使用 "pure-pw passwd":

pure-pw passwd <login> [-f <passwd file>] [-m]

如改变joe 的密码:

pure-pw passwd joe 


------------------------ 显示信息 ------------------------


查看用户信息可以 阅读 /etc/pureftpd.passwd 文件,但很不方便也不直观,

使用 "pure-pw show" 更好一点, 它的语法如下:

pure-pw show <login> [-f <passwd file>]

来看一下joe 的信息:

pure-pw show joe


Login : joe
Password : $1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.
UID : 500 (ftpuser)
GID : 101 (ftpgroup)
Directory : /home/ftpusers/joe/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 1000 (enabled)
Max size : 10 Mb (enabled)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs : 192.168.0.0/16
Denied client IPs : 192.168.1.1,blah.verybadhost.com
Time restrictions : 0900-1800 (enabled)
Max sim sessions : 0 (unlimited)


"/./" 在主目录(/home/ftpusers/joe) 后面 意味着他不能看其它系统文件。


------------------------ 提交改变 ------------------------


注意:

你可以用以上的命令来增加,修改和删除用户信息,或者手工修改/etc/pureftpd.passwd文件, 但FTP服务程序并没有意识到你所做的修改,除非你提交他们。

提交更改的真实意思是要从/etc/pureftpd.passwd(或者其它你自己定义的文件)中创建一个新的文件。新文件是一个PureDB文件。它的信息和前面的文件是一样的。只是在这个文件中帐号被做了索引,可以在成千上万用户中快速查找。这个文件是个二进制文件,不要在你的终端打开它,很难开。

让我们从/etc/pureftpd.passwd 创建一个PureDB文件 ,这个文件位于/etc/pureftpd.pdf (也可以是其它位置)

pure-pw mkdb

这个命令读取/etc/pureftpd.passwd 并默认的创建/etc/pureftpd.pdb ,想读取其它文件,增加PDB文件,可以使用 -f <passwd file> 如: 

pure-pw mkdb /etc/accounts/myaccounts.pdb -f /etc/accounts/myaccounts.txt


只要你按下回车键,你对虚拟用户数据库所做的所有修改都会被执行,新的帐号被激活,被删除的用户不能再登录。不需要重新启动Pure-ftpd服务程序。

你也可以把改变数据库文件信息和提交执行一起进行,只要加一个 -m 开关。

pure-pw passwd joe -m

这个命令将会更改Joe的密码(在/etc/pureftpd.passwd ) 并且同时将这个改变提交到 /etc/pureftpd.pdb 中。

------------------------ 增加虚拟用户支持 ------------------------

要启用虚拟用户,你必须要让FTP服务程序支持, 在编译源程序时 ./configure 时加入 --with-puredb 。(--with-everything将加入所有特性)

然后把下面的开关加入到 pure-ftpd 其它开关后面。
-l puredb:/path/to/puredb_file

如果长选项支持的话,可以用--login 替代 -l.

让我们启动服务器并开启自动创建主目录和puredb 认证。
/usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &

试着 “ftp localhost" 用joe 登录。

------------------------ 转换系统用户 ------------------------

你可以转换所有的系统用户(/etc/passwd)为虚拟FTP用户。使用 "pure-pwconvert " 工具。
只要这样运行:

pure-pwconvert >> /etc/pureftpd.passwd

如果你是一个普通用户,上面的命令不会把密码转过来。如果你是超级用户,所有的内容都被拷过来。包括密码。


------------------------ 环境变量 ------------------------
PURE_PASSWDFILE 和 PURE_DBFILE 可以被 重新定义,如果没有被重新定义的话,它的默认值是

/etc/pureftpd.passwd 

/etc/pureftpd.pwd