加强pureftp的功能!!!

发布于 2022-10-02 23:55:06 字数 14593 浏览 16 评论 0

以前我一直想在pureftpd上实现这样的功能::
学生能上传作业到老师的ftp目录上,但是,学生不能删除自己上传的文件(包括其他同学的文件). 很多人告诉我用acl.  可是我又菜!!!!!.不

知道acl是什么东动。弄来弄去,自己弄出来了。

收先要安装两个pureftp,当然其中一个pureftp不能用21端口了.
安装mysql
rpm -Uvh MySQL-server-4.0.13-0.i386.rpmrpm -Uvh MySQL-client-4.0.13-0.i386.rpmrpm -Uvh MySQL-devel-4.0.13-0.i386.rpmrpm -Uvh

MySQL-shared-4.0.13-0.i386.rpmrpm -Uvh MySQL-shared-compat-4.0.13-0.i386.rpm

安装pureftpd
root@linux root]# tar zxvf pure-ftpd-1.0.15.tar.gz[root@linux root]# cd pure-ftpd-1.0.21[root@linux

pure-ftpd-1.0.21]#./configure \--prefix=/usr/local/pureftpd --with-ldap \--with-mysql \--with-pgsql \--with-puredb

\--with-shadow \--with-pam \--with-paranoidmsg \--with-welcomemsg \--with-uploadscript \--with-cookie \--with-virtualchroot

\--with-virtualhosts \--with-virtualroot \--with-diraliases \--with-quotas \--with-sysquotas \--with-ratios \--with-ftpwho

\--with-throttling \--with-language=simplified-chinese

[root@linux pure-ftpd-1.0.21]#make
[root@linux pure-ftpd-1.0.21]#make check
[root@linux pure-ftpd-1.0.21] #make install
[root@linux pure-ftpd-1.0.21]# cd configuration-file
[root@linux configuration-file]# chmod u+x pure-config.pl
[root@linux configuration-file]# cp pure-config.pl /usr/local/pureftpd/bin
[root@linux configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc
[root@linux configuration-file]# cd ..
[root@linux pure-ftpd-1.0.21]# cp pureftpd* /usr/local/pureftpd/etc/

说明
-prefix=/usr/local/pureftpd \ 软件安装到/usr/local/pureftpd目录下
--with-ldap \                                启用LDAP认证
--with-mysql \                                启用MySQL认证
--with-pgsql \                                启用PgSQL认证(Postgresql 这里我用的是最新版7.3.3)
--with-puredb        \                        启用puredb 认证Pureftpd 自带的Virtual-Users
--with-shadow \                        启用UNIX Shadow 认证就是系统用户
--with-pam \                                启用PAM模块认证,PAM是一种为通用设计的认证模块。
                                                常见PAM模块有pam-mysql、pam-pgsql、pam-ldap……
--with-paranoidmsg \
--with-welcomemsg \                登录FTP显示欢迎信息
--with-uploadscript \                上载脚本
--with-cookie \                                作用cookie
--with-virtualchroot         \                chroot模式
--with-virtualhosts \
--with-virtualroot \
--with-diraliases \
--with-quotas \                                启用PureFtpd自身Quota功能
--with-sysquotas \                        允许使用操作系统的Quota(磁盘限额)
--with-ratios \                                上传、下载比率如:1:5
--with-ftpwho \                        使用pure-ftpwho命令查看线上用户 (建议不用)  
--with-throttling \                        频宽可设限.
--with-largefile \                        载超过2G的文件.
--with-language=simplified-chinese
                                                Socket 会话显示出来的信息的语言.缺省为英语.
                                                simplified-chinese        简体中文

pureftp配置文件

ChrootEveryone yes
chroot每一个用户,等同于Proftpd 中的DefaultRoot~ , 可以限制用户在某个地方活动,增强服务器的安全性
TrustedGID 50
#以上两者要一起用
BrokenClientsCompatibility no
MaxClientsNumber            500
#最大链接数
Daemonize                   yes
#Fork in background 以守护进程方式在后台运行
MaxClientsPerIP 5
#每个ip最多链接数,最好设小点。
VerboseLog no
#是否要把所有client端的指令都log下来
DisplayDotFiles no
#显示开头的文件
AnonymousOnly no
#是否只让匿名登录
NoAnonymous yes
#不开放匿名登入
SyslogFacility ftp
#应该是对日志做一下过滤 (auth, authpriv, daemon, ftp, security, user, local*)可以让日志只记录想要的信息
DontResolve yes
#不反向解释客户端的ip
MaxIdleTime 5
#最大闲置時間

MySQLConfigFile               /usr/local/pureftpd/etc/pureftpd-mysql.conf
#使用MySQL认证

ExtAuth                       /var/run/ftpd.sock
#pure-authd socket 路径 (详细请看 README.Authentication-Modules)
PAMAuthentication             yes
#开启PAM认证
UnixAuthentication yes
#如果你想要有简单的Unix(/etc/passwd)的认证的話
LimitRecursion              2000         8
#ls最多列出3000个文件.最深8层
AnonymousCanCreateDirs      no
#匿名用户可以创建目录
MaxLoad 4
#当system load超过4時.使用者将不能再下载
PassivePortRange          30000 50000
#被动连接应答范围
ForcePassiveIP                192.168.0.1
#不会译
AnonymousRatio                1 10
#Anonymous连接上传/下载比率
UserRatio                 1 10
#用户上传/下载比率(注:如果使用ldap,mysql,pgsql,pam不要启用该功能,否则你在ldap等中设置的Ratio无校)
AntiWarez no
#上传的文件不能被下载(owner is ftp).等到local admin确认
Bind                      172.16.1.52
#要绑定和ip/port,在你的系统中有两个FTP Server这样你其中一个FTP就要使用其它端口。
#格式->; 127.0.0.1,21 如果只写port表All ip,port
AnonymousBandwidth            8
#Anonymous 带宽,单位KB/s
UserBandwidth             8
#用户带宽,单位KB/s
Umask 073:072
#上传文件的Umask.(<umask for 文件>;:<umask for 目录>
MinUID 500
# UID至少多少才能登录
AllowUserFXP yes
#支不支持FXP
AllowAnonymousFXP           no
#Anonymous支不支持FXP
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
#(”.”)开头的文件能不能被读/写,UNIX Like下以点开头的文件是隐藏文件ls –a才能列出
#Pureftpd Quota模式下做产生” .ftpquota”文件。
AutoRename no
#上传文件若有相同文件名自动改名(file.1,file.2...)
AnonymousCantUpload         no
#匿名用户上传文件
TrustedIP 10.1.1.1
#锁IP.
LogPID
#Log文件添加PID
AltLog stats:/ftp/etc/log/pureftpd.log
#log存放地点,注日志有几种常用的格式
#clf 类似apache格式,stats UNIX log格式,w3c 标准W3C格式,可能是HTML格式
NoChmod yes
#不给Chmod指令的权限
KeepAllFiles yes
#使用者可续传.但不可刪除文件
CreateHomeDir no
#如果user的home不存在自动建立
Quota                       1000:10
#Quota <文件数>;:<容量Megabytes >;,FTP限制10M空间,可以上传1000个文件(注:如果使用ldap,mysql,pgsql,pam不要启用该功能,否则你

在ldap等中设置的Quota无校)
PIDFile /ftp/etc/log/pure-ftpd.pid
#记录pure-ftpd的PID文件
CallUploadScript yes
#呼叫UploadScript
MaxDiskUsage 99
#当硬盘使用率到多少時将停止上传
NoRename yes
#用户不能重命名文件名
CustomerProof yes
PerUserLimits 3:20
#<每个账号最多可登入几次:Anonymous最多可同時登入几次>;

创建mysql数据库

进入mysql
CREATE DATABASE pureftpd;
grant all on pureftpd.* to pureftpd@localhost identified by '123456'

CREATE TABLE `users` (`User` varchar(16) NOT NULL default '',  `Password` varchar(64) NOT NULL default '',  `Uid` varchar(11)

NOT NULL default '-1',  `Gid` varchar(11) NOT NULL default '-1',  `Dir` varchar(12 NOT NULL default '',  `QuotaSize`

smallint(5) NOT NULL default '0',  `QuotaFiles` int(11) NOT NULL default '0',`ULBandwidth` smallint(5) NOT NULL default '0',  

`DLBandwidth` smallint(5) NOT NULL default '0',  `ULRatio` smallint(6) NOTNULL default '0',  `DLRatio` smallint(6) NOT NULL

default '0',  `comment` tinytext NOT NULL,  `ipaccess` varchar(15) NOT NULLdefault '*',  `status` enum('0','1') NOT NULL

default '0', PRIMARY KEY  (`id`,`User`),  UNIQUE KEY `User` (`User`)) TYPE=MyISAM AUTO_INCREMENT=5 ;

向表中加数据
INSERT INTO `users` VALUES ('wangmuomuo', '123', '505', '505', '/tmp', 0, 0, 0, 0, 0, 0, '', '*', '1', );

配置mysql

MYSQLServer     127.0.0.1                 #MYSQL服务器的IP
MYSQLPort       3306                      #MYSQL 端口号
MYSQLSocket     /var/lib/mysql/mysql.sock   #使用UNIX.sock本地连接 注:MYSQLServer 与 MYSQLSocket 选择一种即可

MYSQLUser       pureftpd                  #MYSQLUser        数据用户名
MYSQLPassword   123456                    #MYSQL数据库用户的密码
MYSQLDatabase   pureftpd                   #FTP数据数据库
MYSQLCrypt      crypt                     #密码加密方式"cleartext", "crypt", "md5" and "password"
# cleartext 明文,crypt,md5,password是Backend password(‘your-passwd’)函数(MYSQL数据库所使用的password()函数)

MYSQLGetPW      SELECT Password FROM users WHERE User="\L"         # 密码字段,我使用users表中的Password做为密码字段
MYSQLGetUID     SELECT Uid FROM users WHERE User="\L"            #UID用户ID字段
MYSQLDefaultUID 1000                                         #默认的UID (注:如何开启该选项,MYSQLGetUID将失去作用)
MYSQLGetGID     SELECT Gid FROM users WHERE User="\L"        #GID组ID字段
MYSQLDefaultGID 1000                            #默认的GID (注:如何开启该选项,MYSQLGetGID将失去作用)

MYSQLGetDir     SELECT Dir FROM users WHERE User="\L"           #FTP用户目录如/home

MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE User="\L"          #磁盘限额,文件数限制。如1000,允许用户上传1千个文件

MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE User="\L"              #磁盘限额,FTP用户空间限制(单位为M),如:100M

MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L"            #上传/下载比率。MySQLGetRatioUL为上传比,MySQLGetRatioDL

下载比。如:1:5

MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"               

#下传/下载带宽(单位KB/s)。MySQLGetBandwidthUL上传带宽,MySQLGetBandwidthDL下载带宽。如上传500KB/s,下载50KB/s

测试pureftpd

[root@linux root]# /usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

用户名wangmuomuo
密码123

再安装一个学生用的ftp
安装路径要不一样的才行!!!!!
并且学生的ftp用的数据表应当是和老师用的饿数据表不一样才行.我用的是(stuftp) 学生的UIG和教师的UID不同。

配置如下:    其中老师用的ftp(用了21断口的哪个),Umask     073:072
               学生用的ftp(用了其他断口的)             Umask     370:270
              老师(王某某)的目录为:/home/teacher/王某某
              那么他的学生(1班的学生)公用一个目录为:/home/teacher/王某某/1班
             2班的学生的目录是/home/teacher/王某某/2班
         
               
这样设置后;学生自己上穿的文件是可以读的,文件夹可以打开,但是不能删除文件和文件夹;而老师可以读写学生的文件。

这是用了linux对用户的文件权限的机制;

如果安装3个或更读 pureftpd 会能有什么更好的功能呢?望大家一起实验。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的呼吸 2022-10-09 23:55:06

自己顶了。没有人需要?

宛菡 2022-10-09 23:55:06

顶一下!

acl  就是访问控制列表

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文