加强pureftp的功能!!!
以前我一直想在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自己顶了。没有人需要?
顶一下!
acl 就是访问控制列表