用shell用户或虚拟用户登录pureftpd

  摘要:讲解了Unix系统下pureftpd如何用shell用户登录,以及如何用虚拟用户登录。

  目录:

  一、系统真实(shell)用户登录

  二、puredb虚拟用户支持

  三、技巧

  ------------------------------------------------------------------分 割 线-----------------------------------------------------------------

  一、系统真实(shell)用户登录

  默认配置文件允许匿名用户登录,同时允许系统真实用户登录。经过上面的步骤后(详情见我的另一篇文章《pureftpd基础:安装、配置、实现匿名登录》),这时我们用系统用户登录,是可以登录,并且可以上传、下载、建目录和删除等。

  如果要让 FTP 只支持系统真实用户登录,你只要稍微修改一下 pureftpd 的配置文件就可以了。

  # ee /usr/local/etc/pure-ftpd.conf

  ChrootEveryone yes

  NoAnonymous yes

  UnixAuthentication yes //用“/etc/passwd”中的用户认证

  只需以上三行就可以实现只允许系统真实用户登录 FTP 。系统真实用户会登陆到自己的系统主目录中,可下载,可上传,可删除,没有任何限制。但是由于有 chroot 的限制,所以无法去真实系统的其它目录而已。在实际应用中,这种用法并不多见,我也就不费篇幅介绍了。

  二、puredb虚拟用户支持

  1、建立 FTP 专用的系统用户。

  自从 0.99.2 版本开始,pure-ftpd 就开始支持虚拟用户。

  虚拟用户方式是一个简单的用户列表机制,类似于“/etc/passwd”,它将用户的相关信息,如口令、姓名、 uid、gid、主目录等,存入一个文本文件。但是该文本文件文件只适用于 FTP 。这意味着,你可以很容易地设置 FTP 虚拟帐号,而不需要在系统中添加系统用户,以免和系统用户混淆在一起。

  同时,可以为这些虚拟用户单独设置配额、ratio、带宽等限制,这些功能是系统用户认证无法实现的。很多虚拟用户可以共享同一个系统用户的属性,因此建议为这些虚拟用户单独创建一个系统用户,从而方便管理。

  你可以使用系统已经存在的帐号,比如“nobody”用户,作为虚拟用户的系统帐号。但最好使用一个单独的帐号,专门对应 FTP 。我们选择新建系统用户(经测试,在 linux 系统中如果用 linux 系统自带的 ftp 用户,在用虚拟用户登陆时会出现不被信任的提示。大家也可以做做实验,看是不是这样)。建立方法如下:

  对于 Linux/OpenBSD/NetBSD/Solaris/HPUX/ 或其它的类 Unix 系统,使用下面的命令:

  groupadd ftpgroup

  useradd -g ftpgroup -d /home/ftp -s /sbin/nologin ftpuser

  对于 FreeBSD ,用下面的命令:

  # pw groupadd ftpgroup

  # pw useradd ftpuser -g ftpgroup -d /home/ftp -s /sbin/nologin

  系统帐号建立好后,我们就开始着手准备虚拟用户了。

  2、建立虚拟用户。

  使用 ”pure-pw”命令实现创建、修改和删除虚拟用户等操作。虚拟用户的信息以每个用户一行的方式存放在相应的文本文件中。你也可以手工编辑这个文件。其存储格式如下:

<account>:<password>:<uid>:<gid>:<gecos>:<home directory>:<upload bandwidth>:<download bandwidth>:<upload ratio>:<download ratio>:<max number of connections>:<files quota>:<size quota>:<authorized local IPs>:<refused local IPs>:<authorized client IPs>:<refused client IPs>:<time restrictions>

  除了帐号、口令、uid、gid 和 home directory 之外,其它的可以是空值。

  下面是 pure-pw 命令用法。

  (1)创建新用户。

  要创建一个新用户,用下列的语法。  

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]

  假设我们要创建“tim”这样一个虚拟用户,则可以使用如下命令:

  # pure-pw useradd tim -u ftpuser -d /home/ftp/tim

  其中:

  -u 将虚拟用户 tim 同系统用户 ftpuser 关联在一起。

  -d 参数使 tim 只能访问其 home 目录。而如果想让他访问整个文件系统,可以用 -D 选项。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzyzxs.html