免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 28423 | 回复: 13
打印 上一主题 下一主题

[FTP] [原创]pureftpd使用详解 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-31 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-29 16:12 |只看该作者 |倒序浏览
排版美观的版本,请看我博客中的日志,出处哪里的链接即是。




( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net



作者:indian

版本:v1.3

出处:http://indian.blog.163.com/blog/static/1088158200891134536877

版权:作者保留对本文的一切修改、发布等权力。任何人未经允许不得转载或复制本文部分或全部内容。



关键词:ftp, pureftpd, pureftpd安装配置, pureftpd 权限



摘要:详细讲解了Unix系统下如何安装配置pureftpd。特别是解决了很多人提到的匿名用户无法登录的问题。



目录:
一、安装
二、启动
三、匿名登录



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



一、安装
我是以FreeBSD为平台的,其它Unix/Linux平台请参考相关shell命令。在shell提示符下输入:

# cd /usr/ports/ftp/pure-ftpd

# make install clean

# rehash

FreeBSD会以ports方式安装pureftpd。其它平台的安装方法参看相关文章。





二、启动
将配置文件的样例文件复制为配置文件:

# cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf

用配置文件启动 PureFTPd :

# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf



注意:如果是其它平台,或者采用编译方式安装,路径可能与上面的不同。







三、匿名登录
用 flashfxp 连接,只能系统用户连接(用“/etc/passwd”文本文件中的用户认证)。 这是因为默认的配置文件中是允许匿名用户和系统用户(根帐号 root 除外)都可以访问的。但这时匿名用户还无法访问,出现“421 无法建立安全匿名 FTP”错误。还需要几个步骤才能实现匿名登录。

pureftpd 的官方文件(http://download.pureftpd.org/pub/pure-ftpd/doc/README)说:

------------------------ SETTING UP AN ANONYMOUS FTP ------------------------

If a 'ftp' user exists and its home directory is reachable, Pure-FTPd will
accept anonymous login, as 'ftp' or 'anonymous'. Files have to be located in
the home FTP directory. There's no need for 'bin', 'lib', 'etc' and 'dev'
directories, nor any external program. Don't chown the public files to
'ftp', just writable directories ('incoming') .

就是说需要存在一个名称必须为“ftp”的系统用户,并且它的主目录可用。就可以实现匿名用户登录了。



心得:很多人在问为什么不能匿名登录,原因就在于没有“ftp”系统帐号,以及没有创建主目录。




1、为匿名用户添加系统帐号和组。

增加一个“ftp”组:

# pw groupadd ftp

如果组存在,直接添加用户即可。

添加“ftp”系统用户:

# pw useradd ftp -g 14 -d /var/ftp -s /sbin/nologin

其中的 “/var/ftp”就是匿名用户的主目录,你可以指定为其它目录,比如“/home/ftp”等。

14是“ftp”组的组id 。其它的 www 系统用户的 uid/gid 是:“80/80”,等等(见 /etc/passwd )。

如果发现帐号是存在的,那么请检查帐号的主目录是否存在,如果不存在,也会提示上述错误。



2、建立匿名用户的主目录。

# mkdir /var/ftp

# mkdir /var/ftp/readme

其中“mkdir /var/ftp/readme”是给个参照,因为“/var/ftp”是空的。

3、测试。

马上用 flashfxp 匿名登录,见到 readme 文件夹了,成功,激动!但是上传、下载、建目录什么的都不允许,要实现这些功能需要进一步修改配置文件,这个在我后续文章中有详细讲解。







~ 全文完~





          印第安

      2008年10月11日15:44:17 v1.0 初稿

      2008年10月11日18:56:40 更新

      2008年10月11日19:09:57 更新

      2008年10月11日21:13:46 更新

      2008年10月13日20:36:10 v1.1 更新,添加虚拟用户认证。

      2008年10月14日15:12:47 更新,排版美化。

      2008年10月15日14:15:21 更新

      2008年10月16日13:40:00 更新

      2008年10月16日19:05:06 v1.2 更新,加入 pure-pw 语法。

      2008年10月17日14:48:59 更新

      2009年7月25日15:01:17 更新为1.3





( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net

[ 本帖最后由 wolfg 于 2009-8-20 17:46 编辑 ]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-31 06:20:00
2 [报告]
发表于 2009-07-29 16:15 |只看该作者

[原创]FreeBSD学习笔记18-pureftpd使用详解(2)-用shell用户或虚拟用户登录pureftpd

排版美观的版本,请看我博客中的日志,出处哪里的链接即是。



( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net



作者:indian

版本:v1.3

出处:http://indian.blog.163.com/blog/static/1088158200891621053789

版权:作者保留对本文的一切修改、发布等权力。任何人未经允许不得转载或复制本文部分或全部内容。



关键词:ftp, pureftpd, 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 选项。

执行完上述命令后,会提示输入密码,两次输入 tim 用户的密码即可。用户的口令会根据系统对加密方式的支持情况,选择一个最安全的方式进行加密。

然后需要建立“/home/ftp/tim”目录,并修改它的属性。

# mkdir /home/ftp

# mkdir /home/ftp/tim

注意:在配置文件中有选项自动建立主目录。

CreateHomeDir     yes //设置为 yes 创建新虚拟用户时 pureftpd 自动创建用户的主目录。

但是有一点需要大家注意,就是它只支持二层目录的建立而不支持三层以上目录的建立。举个例子,如果我们创建虚拟用户是用如下语句:

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

而这时系统只有“/home”目录而没有“/home/ftp”目录,那么在 test 用户第一次登陆时 pureftpd 会创“/home/ftp”目录。

如果我们改变以上命令如下:

# pure-pw useradd test -u ftp -d /home/ftp/test

而这时系统只有“/home”目录或“/home/ftp”目录,而没有“/home/ftp/test”目录,那么我们登陆时会得到没有主目录的提示。



其他参数含义:

-z 选项运用用户在一天当中指定的时间段连接服务器。如 -z 0900-1800 ,则该用户只能在上午 9 点到晚上 6 点之间连接服务器。

-r 选项或 -R 选项,可以限制用户从指定 IP 和掩码连入服务器。如,单一的 IP/掩码对(-r 192.168.1.0/24)。多个IP/掩码对用英文逗号隔开(-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)。或者以上形式的任何组合。(-r,允许;-R拒绝)

-y ,用户同一时间的并发连接数。或者 0 意味着不限制。也就是同一 IP 的连接数。

-f ,默认虚拟用户的信息会被存放在“./etc/pureftpd.passwd”文件中,通过该选项可以改变该文件的位置。



默认的存储用户信息的文件存放在“./etc/pureftpd.passwd”,我用 ports 方式安装的 pureftpd ,其存放位置在“/usr/local/etc/pureftpd.passwd”。
我们看下这个文本文件的内容。

# cat /usr/local/etc/pureftpd.passwd

tim:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftp/tim/./:::::::::::::

密码是系统自己加密的。



(2)更改用户。

与 pure-pw adduser 不同的是,使用 pure-pw usermod 不是创建一个用户,而是更改已存在用户的某些属性。

例如,我们给 joe 用户添加一个限额,限制 joe 用户最多拥有1000个文件,最大10 Megabytes 空间。命令如下:

# pure-pw usermod joe -n 1000 -N 10

重置某些属性的语法如下:

pure-pw usermod <user> -n ''       :禁用文件配额
pure-pw usermod <user> -N ''      :禁用文件大小配额
pure-pw usermod <user> -q '' -Q ''    :禁用 ratio
pure-pw usermod <user> -t ''       :禁用下载带宽限制
pure-pw usermod <user> -T ''      :禁用上传带宽限制
pure-pw usermod <user> <-i,-I,-r or -R> ''  :禁用 IP 过滤
pure-pw usermod <user> -z ''      :禁用时间段约束
pure-pw usermod <user> -y ''      :禁用并发数限制



(3)删除用户。

删除一个用户的命令语法是:

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

这时,用户的信息会被从指定的 passwd 文件中删除,但是用户的 home 目录会被保留,需要手工删除。



(4)修改口令。

更改一个用户口令的语法是:

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

  

(5)显示用户信息。

“ ./etc/pureftpd.passwd” 文件中记录的信息不方便用户的阅读,因此 pure-ftpd 提供了显示用户信息的命令。其语法是:

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

例如:

# pure-pw show joe Login              : joePassword           : $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/16Denied  client IPs : 192.168.1.1,blah.verybadhost.comTime restrictions  : 0900-1800 (enabled)Max sim sessions   : 0 (unlimited)主目录后面的“/./”表示用户目录是被锁定的。





3、提交更改。

重要:

通过上面提到的命令,你可以创建、修改和删除虚拟用户,甚至可以手工方式编辑“/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”)。







附:useradd 语法规范

指令名称:useradd

功能介绍:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

语法格式:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]

常用参数说明:

-c <备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。

-d <登入目录>  指定用户登入时的启始目录。

-D  变更预设值。

-e <有效期限>  指定帐号的有效期限。

-f <缓冲天数>  指定在密码过期后多少天即关闭该帐号。

-g <群组>  指定用户所属的群组。

-G <群组>  指定用户所属的附加群组。

-m  自动建立用户的登入目录。

-M  不要自动建立用户的登入目录。

-n  取消建立以用户名称为名的群组。

-r  建立系统帐号。

-s <shell>   指定用户登入后所使用的shell。

-u <uid>  指定用户ID。





pure-pw 语法:

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 ip>/<mask>] [-R <deny client ip>/<mask>]
   [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
   [-y <max number of concurrent sessions>]
   [-z <hhmm>-<hhmm>] [-m]pure-pw usermod <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 ip>/<mask>] [-R <deny client ip>/<mask>]
     [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
     [-y <max number of concurrent sessions>]
     [-z <hhmm>-<hhmm>] [-m]pure-pw userdel <login> [-f <passwd file>] [-m]pure-pw passwd  <login> [-f <passwd file>] [-m]pure-pw show    <login> [-f <passwd file>]pure-pw mkdb    [<puredb database file> [-f <passwd file>]]pure-pw list    [-f <passwd file>]-d <home directory> : chroot user (recommended)
     -D <home directory> : don't chroot user
     -<option> '' : set this option to unlimited
     -m : also update the /usr/local/etc/pureftpd.pdb database
     For a 1:10 ratio, use -q 1 -Q 10
     To allow access only between 9 am and 6 pm, use -z 0900-1800





~ 全文完~





          印第安

      2008年10月11日15:44:17 v1.0 初稿

      2008年10月11日18:56:40 更新

      2008年10月11日19:09:57 更新

      2008年10月11日21:13:46 更新

      2008年10月13日20:36:10 v1.1 更新,添加虚拟用户认证。

      2008年10月14日15:12:47 更新,排版美化。

      2008年10月15日14:15:21 更新

      2008年10月16日13:40:00 更新

      2008年10月16日19:05:06 v1.2 更新,加入 pure-pw 语法。

      2008年10月17日14:48:59 更新

      2009年7月25日15:16:36 更新为v1.3





( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-31 06:20:00
3 [报告]
发表于 2009-07-29 16:16 |只看该作者

[原创]FreeBSD学习笔记28-pureftpd使用详解(3)-Pureftpd的权限控制

( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net



作者:indian

版本:v1.0

出处:http://indian.blog.163.com/blog/static/1088158200962534955611

版权:作者保留对本文的一切修改、发布等权力。任何人未经允许不得转载或复制本文部分或全部内容。



关键词:ftp, pureftpd, pureftpd安装配置, pureftpd 权限



摘要:Unix系统下pureftpd使用详解。特别是解决了很多人匿名用户无法登录的问题。与数据库的结合使得管理成千上万的用户很轻松。



目录:
一、Unix系统权限概述
二、匿名用户的权限
三、真实用户和虚拟用户的权限



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



pureftpd的权限控制是通过系统目录的权限来实现的。



一、Unix系统权限概述
1、访问权限

Unix 文件系统是一个能够支持多个用户同时访问的文件系统。文件访问权限分为三种类型的用户:文件属主或用户(User),同组用户(Group),其他用户(Other)。

用户对文件或目录的访问权限有三种:读(r)、写(w)和执行(x)。



2、文件访问权限

如果用户具有读文件的访问权限,就可以查看文件的内容;具有写文件的访问权限,就可以修改文件的内容;具有执行文件的访问权限,就可以运行程序文件。



3、目录访问权限

对于目录来说,读访问权限允许用户列出目录的内容;写访问权限运行用户在目录中创建或删除文件及目录;执行访问权限允许用户使用 cd 命令进入目录或使用该目录作为路径名的一部分。



重要:pureftpd的权限控制是通过系统目录的权限来实现的。







二、匿名用户权限
1、变更匿名用户主目录的所有者。

按照《FreeBSD学习笔记12-pureftpd使用详解(1)-安装配置》一文中的步骤,在系统中创建了匿名用户的主目录后,匿名用户无法进行上传、下载、建目录、删除等等操作。这是因为匿名用户的主目录的所有者不是系统“ftp”用户。

# ls -l /home/
total 6
drwxr-xr-x  3 root    wheel  512 Oct 16 04:42 ftp
drwxr-xr-x  2 indian  wheel  512 Oct 11 12:55 indian
drwxr-xr-x  2 test    wheel  512 Oct 11 12:55 test我们看到 ftp 目录的所有者为 root 。我们更改“ftp”目录的所有者,目录有 rwx 权限。

# chown ftp:14 /home/ftp# ls -l /home/total 6drwxr-xr-x  3 ftp     ftp    512 Oct 16 04:42 ftpdrwxr-xr-x  2 indian  wheel  512 Oct 11 12:55 indiandrwxr-xr-x  2 test    wheel  512 Oct 11 12:55 test用 flashfxp 匿名连接。现在匿名用户可以上传文件,但是不能下载文件、建文件夹和删除文件。当你下载时看到没有被管理员核准。

550-This file has been uploaded by an anonymous user. It has not
550 yet been approved for downloading by the site administrators.
传送失败!

2、允许匿名用户下载。

修改配置文件,允许下载文件。

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

AnonymousCanCreateDirs      no

AnonymousCantUpload         no“AntiWarez yes ”意思是不接受所有者为 “ftp” 的文件的下载,我们把它设置为 “no”,重启 pureftpd 服务,就可以下载文件了。

“ AnonymousCanCreateDirs no”,意思是匿名用户是不能创建目录,我们把它设置为“yes”,重启 pureftpd 服务,匿名用户就可以创建目录了。

“AnonymousCantUpload no”,意思是匿名用户可以上传文件,如果设置为“yes”,匿名用户不能上传。



3、只允许匿名用户登录。

默认配置文件允许匿名用户和系统帐户登录。如果只允许匿名帐户登录,修改默认配置文件:

AnonymousOnly yes //是否只让匿名登录

重启服务器或重启服务(必须)后,就只能匿名登录了。无论你用什么帐号,甚至用不存在的帐号登录(乱码也行,只要 ftp 服务器的 IP 是对的)都只会登录到匿名用户的主目录。





三、真实用户和虚拟用户的权限
系统真实用户和PureDB虚拟用户的权限由系统目录和文件权限决定。

1、具有管理权限的用户。

具有管理权限的用户也就是有上传、下载、建目录和删除权限的用户。

# pw groupadd ftpadmingroup
# pw useradd ftpadmin -g ftpadmingroup
# pure-pw useradd tom -u ftpadmin -d /home/ftpadmin

# ls -l /hom/e

total 8drwxr-xr-x  6 ftp       ftp            512 Oct 16 09:45 ftpdrwxr-xr-x  5 ftpadmin  ftpadmingroup  512 Oct 16 11:02 ftpadmindrwxr-xr-x  2 indian    wheel          512 Oct 16 09:51 indiandrwxr-xr-x  2 test      wheel          512 Oct 11 12:55 test“ftpadmin”用户对“ftpadmin”目录有 rwx 的权限。



2、系统目录的 r 权限,控制 FTP 的列表权限。

# chmod u-r /home/ftpadmin
# ls -l /home/

total 8drwxr-xr-x  6 ftp       ftp            512 Oct 16 09:45 ftpd-wxr-xr-x  5 ftpadmin  ftpadmingroup  512 Oct 16 11:02 ftpadmindrwxr-xr-x  2 indian    wheel          512 Oct 16 09:51 indiandrwxr-xr-x  2 test      wheel          512 Oct 11 12:55 test去掉“ftpadmin”目录的 r 权限。FTP 不能列表,可以上传、建目录。但是如果知道文件路径,照样可以下载和删除文件。



3、系统目录所有者的 w 权限,控制 FTP 的删除、重命名和建目录权限。

# chmod u+r-w /home/ftpadmin
# ls -l /home/

total 8drwxr-xr-x  6 ftp       ftp            512 Oct 16 09:45 ftpdr-xr-xr-x  5 ftpadmin  ftpadmingroup  512 Oct 16 11:02 ftpadmindrwxr-xr-x  2 indian    wheel          512 Oct 16 09:51 indiandrwxr-xr-x  2 test      wheel          512 Oct 11 12:55 test去掉 ftpadmin 目录所有者的 w 权限后,pureftpd 的虚拟用户不能删除、重命名文件或目录,不能建目录。但是可以下载文件。



4、系统目录所有者的 x 权限,控制 FTP 的列表、上传、下载、建目录和删除等全部权限。

# chmod u+rw-x ftpadmin# ls -ltotal 8drwxr-xr-x  6 ftp       ftp            512 Oct 16 09:45 ftpdrw-r-xr-x  4 ftpadmin  ftpadmingroup  512 Oct 16 11:48 ftpadmindrwxr-xr-x  2 indian    wheel          512 Oct 16 09:51 indiandrwxr-xr-x  2 test      wheel          512 Oct 11 12:55 test去掉 ftpadmin 目录所有者的 x 权限后,pureftpd 的虚拟用户不能列表、上传、下载、建目录和删除。





总结:系统目录和文件的权限决定 pureftpd 虚拟用户的权限。







~ 全文完~





          印第安

      2009年7月25日15:50:00 v1.0 初稿









( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-31 06:20:00
4 [报告]
发表于 2009-07-29 16:44 |只看该作者

[原创]FreeBSD学习笔记11-pureftpd使用详解(4)-:用MySQL管理PureFTPd用户

( 声明:原创文章,未经授权,不得转载。作者:印第安 http://blog.kysf.net

  
出处:http://indian.blog.163.com/blog/static/108815820089935639912


摘要:讲解Unix系统下pureftpd怎么实现用MySQL管理用户。与其它工具的结合可以实现更多应用,只有想不到,没有做不到。



目录:

一、PureFTPd和MySQL的结合

二、pureftpd与其它工具的结合





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





一、PureFTPd和MySQL的结合
自从0.99.1版本开始,PureFTPd就内置了MySQL数据库支持。如果启用了MySQL数据库支持,那么所有的用户信息都可以从mysql数据库中获取。这样就可以用数据库来管理用户了,特别是在用户数量巨多时。



安装了MySQL数据库服务器端(具体安装步骤见相关文章)后,我们还需要下面的一些步骤完成mysql的支持。



1、建立用户数据库。

在mysql中建立名字为“pureftpd”的数据库。



# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.0.67-log FreeBSD port: mysql-server-5.0.67_1



Type 'help;' or '\h' for help. Type '\c' to clear the buffer.



mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| phpmyadmin         |

| test               |

+--------------------+

4 rows in set (0.04 sec)



mysql> create database pureftpd;

Query OK, 1 row affected (0.01 sec)



mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| phpmyadmin         |

| pureftpd           |

| test               |

+--------------------+

5 rows in set (0.01 sec)



mysql>





2、建立用户表。



mysql> use pureftpd;

Database changed

mysql> CREATE TABLE users (

    ->   User VARCHAR(16) BINARY NOT NULL,

    ->   Password VARCHAR(64) BINARY NOT NULL,

    ->   Uid INT(11) NOT NULL default '-1',

    ->   Gid INT(11) NOT NULL default '-1',

    ->   Dir VARCHAR(12 BINARY NOT NULL,

    ->   PRIMARY KEY  (User)

    -> );

Query OK, 0 rows affected (0.03 sec)



mysql>





3、添加用户。



mysql> INSERT INTO users VALUES("jack","jack",2000,2000,"/home/ftp";           Query OK, 1 row affected (0.01 sec)



mysql> SELECT * FROM users;

+------+----------+------+------+-----------+

| User | Password | Uid  | Gid  | Dir       |

+------+----------+------+------+-----------+

| jack | jack     | 2000 | 2000 | /home/ftp |

+------+----------+------+------+-----------+

1 row in set (0.01 sec)



mysql>



如果这时我们用“jack”用户登录FTP,会提示错误。还需要添加 PureFTPd-mysql 文件的支持。





4、添加mysql配置文件。

将配置文件的样例文件复制为配置文件:



# cp /usr/local/etc/pureftpd-mysql.conf.sample /usr/local/etc/pureftpd-mysql.conf




修改 mysql 配置文件以适合使用。



# ee /usr/local/etc/pureftpd-mysql.conf



  将其中的数据库用户名和密码更改为你指定的用户名和密码。



# Mandatory : user to bind the server as.

MYSQLUser       root



# Mandatory : user password. You must have a password.

MYSQLPassword   rootpass




  


5、开启mysql支持。



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

MySQLConfigFile      /usr/local/etc/pureftpd-mysql.conf  //mysql配置文件路径





重启服务器后,就可以用“jack”用户登录了。

注意,要有“/home/ftp”主目录,要不然是无法登录的。



心得:mysql数据库中的“Uid”和“Gid”字段指的是Unix系统用户的uid或gid。“User”字段就是mysql的虚拟用户了。如果“/home/ftp”的属主是ftpuser,其uid/gid是1003/1001,权限为755。那么“jack”对“/home/ftp”目录的访问权限就是rx。也就是mysql数据库中的“Uid”和“Gid”字段决定用户的权限。

  





二、pureftpd与其它工具的结合
Pureftpd还可以与LDAP、TLS、PostgreSQL等工具结合,具体的使用方法请参看其它文章。



值得一提的是,与数据库结合的意义在于可以扩展应用。



比如:



l         用php编写前台页面管理用户,让用户自己修改密码。这个可以应用于虚拟主机管理界面中。

l         将用户数据表与论坛或网站的用户数据表整合,可以在论坛或网站中实现 FTP 功能。

l         将用户数据表与邮件服务的用户数据表整合,可以实现邮件系统中的网盘功能,就像163邮箱中的网盘一样。



诸如此类应用,等等。

  

  

           印第安

      2008年11月4日23:36:10 v1.0

      2008年11月4日23:57:14 更新

      2009年7月25日15:53:45 更新

论坛徽章:
0
5 [报告]
发表于 2009-07-29 18:21 |只看该作者
不错,原创文件就是好!

支持分享经验

论坛徽章:
0
6 [报告]
发表于 2009-08-20 17:47 |只看该作者
感谢分享,支持原创!

论坛徽章:
0
7 [报告]
发表于 2009-12-07 11:47 |只看该作者
参考楼主的范例,已实现了利用pure-ftpd自己的存储格式构建了虚拟用户的分别控制!

挺满意的。用户的细粒度的控制,共享的控制。很有FreeBSD的风格!

谢谢分享。

论坛徽章:
0
8 [报告]
发表于 2010-01-26 21:24 |只看该作者
楼主和各位前辈好,我遇到一个pureftpd相关的用户权限的问题,是这样的:
我通过pureftpd+mysql实现虚拟用户的认证,最终的效果和楼主大哥说的这句话一样的。

“心得:mysql数据库中的“Uid”和“Gid”字段指的是Unix系统用户的uid或gid。“User”字段就是mysql的虚拟用户了。如果 “/home/ftp”的属主是ftpuser,其uid/gid是1003/1001,权限为755。那么“jack”对“/home/ftp”目录的访问权限就是rx。也就是mysql数据库中的“Uid”和“Gid”字段决定用户的权限。”

但是,我是结合apache来做的web虚拟主机服务器,用mkdir()建立的目录,其所有者为FreeBSD内置的www用户,这样的话,ftp帐号登录用户就无法操作mkdir()所建的目录了,只有读权限。每次我都要进入系统chmod 777一下才可以。请问怎么才能解决这个问题呢?谢谢!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-31 06:20:00
9 [报告]
发表于 2010-05-10 21:51 |只看该作者
本帖最后由 indian 于 2010-05-10 21:54 编辑
楼主和各位前辈好,我遇到一个pureftpd相关的用户权限的问题,是这样的:
我通过pureftpd+mysql实现虚拟用户的认证,最终的效果和楼主大哥说的这句话一样的。

“心得:mysql数据库中的“Uid”和“Gid”字段指的是Unix系统用户的uid或gid。“User”字段就是mysql的虚拟用户了。如果 “/home/ftp”的属主是ftpuser,其uid/gid是1003/1001,权限为755。那么“jack”对“/home/ftp”目录的访问权限就是rx。也就是mysql数据库中的“Uid”和“Gid”字段决定用户的权限。”

但是,我是结合apache来做的web虚拟主机服务器,用mkdir()建立的目录,其所有者为FreeBSD内置的www用户,这样的话,ftp帐号登录用户就无法操作mkdir()所建的目录了,只有读权限。每次我都要进入系统chmod 777一下才可以。请问怎么才能解决这个问题呢?谢谢!qionger83 发表于 2010-01-26 21:24



    apache 对应的FreeBSD内置用户是www,Pureftpd对应的内置用户是ftp,要实现你说的那个情况,把Pureftpd对应的内置用户换成www用户。或者单独建一个专门用户,比如wwwftp,不过这样就要改Pureftpd和Apache的对应系统用户。

论坛徽章:
0
10 [报告]
发表于 2010-08-05 20:22 |只看该作者
学习还真的不容易呀,得天天找东西看,希望高手推荐点好书!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP