ubuntu下pure-ftpd配置实例讲解(转载)

目的

创建如下表所示的ftp服务器:

目录 用途
/var/ftp ftp根目录,ftpadmin掌控。
/var/ftp/public 公共目录,由匿名用户读取。
/var/ftp/public/incoming 公共上传目录,由匿名用户读写。
/var/ftp/teams/teama 小组a专用目录,小组成员可读写。
/var/ftp/teams/teamb 小组b专用目录,小组成员可读写。

个人感觉pure-ftpd工作原理很大程度上依赖linux对用户、目录权限的管理,如果没接触过这个问题,可以先简单参考下这篇文章。

过程

创建目录

用以下命令创建相应目录。

mkdir /var/ftp
mkdir /var/ftp/public
mkdir /var/ftp/public/incoming
mkdir /var/ftp/teams

注意到只创建到/var/ftp/teams,并没有创建teama和teamb目录,这两个目录可以由pure-ftpd自动创建,后面会看到。

创建用户组和用户

下表是对用户组和用户的需求说明

用户 用户组 用途
ftpadmin ftpadmins 掌控ftp。
teamuser ftpadmins 掌控相应的目录,如teama或teamb。
ftp ftpusers 一般用户。pure-ftpd以此为匿名用户。

下面是达到这个需求的命令操作和简单的解释。

创建ftpadmins和ftpusers两个用户组。

groupadd ftpadmins
groupadd ftpusers

创建ftpadmin和teamuser两个用户,它们都属于ftpadmins组,-d /dev/null表明不给该账户指派主目录,-s /bin/false表明该账户不能单独登陆系统,因为这些账户是打算用于pure-ftpd的,不是要真正在linux中使用的账户。

useradd -g ftpadmins -d /dev/null -s /bin/false ftpadmin
useradd -g ftpadmins -d /dev/null -s /bin/false teamuser

创建ftp用户,他属于ftpusers组,由于他是pure-ftpd认定的匿名账户,不需要用pure-ftpd的虚拟用户二次配置,因此现在就要用-d /var/ftp/public指明该账户主目录。

useradd -g ftpusers -d /var/ftp/public -s /bin/false ftp

设置权限

目录和用户已经有了,现在就要根据需求设置目录与用户间的权限了。

将/var/ftp的所属者和所属组设置为ftpadmin和ftpadmins。

chown -R ftpadmin:ftpadmins /var/ftp

将/var/ftp设置为所属者(ftpadmin)完全掌控,所属组(ftpadmins)可读,其它用户可读。

chmod -R 755 /var/ftp

将/var/ftp/public/incoming设置为任意用户可读写。

chmod -R 777 /var/ftp/public/incoming

将/var/ftp/teams设置为所属者和所属组掌控,其他用户不可见。

chmod -R 770 /var/ftp/teams

安装pure-ftpd

用命令行直接安装即可。

apt-get install pure-ftpd

(选)可以用以下两行卸载以前安装过的pure-ftpd。

apt-get remove pure-ftpd
apt-get autoremove

配置pure-ftpd

下表是对pure-ftpd的配置需求。

需求 设置
允许匿名登陆 NoAnonymous=no
限制用户在其主目录下 ChrootEveryone=yes
禁止用户删除文件 KeepAllFiles=yes,TrustedGID组除外
TrustedGID 先通过id ftpadmin察看ftpadmins的gid,再设置TrustedGID=gid
自动创建虚拟用户主目录 CreateHomeDir=yes
每个IP最多5个连接 MaxClientsPerIP=5
同时最多100个连接 MaxClientsNumber=100
最多使用磁盘50%空间 MaxDiskUsage=50
端口号为8021 Bind=8021

注意:ubuntu下,pure-ftpd的配置信息位于/etc/pure-ftpd/conf目录中,且以文件名作为参数名,文件内容作为参数值的形式存在。

根据pure-ftpd的配置信息在ubuntu下的特点,用下面的方法来完成上表中的参数设置。

cd /etc/pure-ftpd/conf
echo 'no' > NoAnonymous
echo 'yes' > ChrootEveryone
echo 'yes' > KeepAllFiles
echo '1004' > TrustedGID [注意:gid可使用id ftpadmin察看得知,不一定是1004。]
echo 'yes' > CreateHomeDir
echo '5' > MaxClientsPerIP
echo '100' > MaxClientsNumber
echo '50' > MaxDiskUsage
echo '8021' > Bind

重启ftp服务器

service pure-ftpd restart [注意:只要修改了这类配置就需要重启]

配置pure-ftpd的虚拟用户

pure-ftpd是通过配置自己的虚拟用户来访问ftp的,然后用对应的系统用户来进行实际的文件操作,下表是对虚拟用户的需求说明。

虚拟用户 对应的系统用户 用途
admin ftpadmin 掌控/var/ftp。
teama teamuser 掌控/var/ftp/teams/teama。
teamb teamuser 掌控/var/ftp/teams/teamb。

注意:以上配置中未出现匿名配置条目,因为pure-ftpd以ftp用户作为匿名用户,因此匿名用户对应的就是ftp用户,其操作权限也就是ftp用户的操作权限,这在前面使用useradd添加ftp用户时已经设置了。

创建虚拟用户admin,对应ftpadmin,注意:之前用useradd创建ftpadmin时并未指定主目录,现在可以给admin指定。

pure-pw useradd admin -u ftpadmin -d /var/ftp

创建teama和teamb两个虚拟用户,都对应teamuser用户,他们对应的主目录也是此时指定的。

pure-pw useradd teama -u teamuser -d /var/ftp/teams/teama
pure-pw useradd teamb -u teamuser -d /var/ftp/teams/teamb

注意:之前并未创建过关teama和teamb目录,但配置pure-ftpd是指定了CreateHomeDir=yes,因此在使用虚拟用户teama或teamb初次登陆ftp时,对应的主目录会被自动创建,提前创建好当然也是可以的。

更新pure-ftpd的数据库。

pure-pw mkdb [注意:在用过一个或一连串pure-pw指令后,要用pure-pw mkdb更新数据库]

链接pure-ftpd数据库

感觉这步应该在安装时自动完成,不知为啥非得人工设置。没办法,那就设置吧。

ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60pureDB

有时/etc/pure-ftpd/conf/PureDB不存在,那就这样建立一下: echo ‘/etc/pure-ftpd/pure-ftpd.pdb’ > /etc/pure-ftpd/conf/PureDB 其实就是建立一个PureDB文档,里面内容是/etc/pure-ftpd/pure-ftpd.pdb,这大概是pure-ftpd数据库所在。至于为啥ln时得叫做60pureDB,我也不清楚,希望得到解答。

pure-ftpd安装-配置完毕

不知是不是该恭喜你了呢,到这里工作就完毕了,最好重启一下,然后运行ftp。

service pure-ftpd start

测试ftp

是该试试ftp能否正常工作的时候了,建议安装FileZilla。

apt-get install filezilla

然后就使用各种用户登陆进行操作,看看是否符合当初的规划吧。如果一切如愿以偿,就自己恭喜一下自己吧,可以放松一会儿了。

最近更新

猜你喜欢

最近的文章

VMware CentOS LVM磁盘扩容

一. 在虚拟机上增加磁盘空间如下图。增加完后会有提示 “磁盘已成功扩展。您必须从客户机操作系统内部对磁盘重新进行分区和扩展文件系统。是继续完成以下步骤才算...…

Linux VMware LVM继续阅读
更早的文章

Linux命令大全

下面整理了一些Linux系统命令线上查询及帮助命令 (2 个)man 查看命令帮助,命令的词典,更复杂的还有 info,但不常用。help 查看 Linu...…

Linux 命令继续阅读