Chinaunix

标题: vsftp限制上传单个文件大小? [打印本页]

作者: coldcoffee    时间: 2009-09-23 12:54
标题: vsftp限制上传单个文件大小?
在/etc/security/limits.conf中写入内下内容:
test1          hard    fsize          1024

可以限制test1用户在本机登录后,创建的文件为1M。但通过ftp上传的文件就限制不住了,谁能指点一下?
作者: xuledw    时间: 2009-09-23 16:14
做磁盘限额?
作者: coldcoffee    时间: 2009-09-23 17:12
磁盘限额是限制总的文件大小,我现在想限制单个文件的大小
作者: coldcoffee    时间: 2009-09-24 14:03
顶一下,没有高人吗?
作者: yonggang-2001    时间: 2009-09-24 17:36
在vsftpd.conf种有这两项可以限制传输速率:
local_max_rate(本地用户的传输速率)
anon_max_rate(匿名用户的传输速率),不知道是不是你要的答案!
作者: coldcoffee    时间: 2009-09-24 19:09
原帖由 yonggang-2001 于 2009-9-24 17:36 发表
在vsftpd.conf种有这两项可以限制传输速率:
local_max_rate(本地用户的传输速率)
anon_max_rate(匿名用户的传输速率),不知道是不是你要的答案!


这个是限制传输速度的,跟我要求的限制建立文件大小没有关系,不过还是要谢谢你
作者: coldcoffee    时间: 2009-09-25 10:49
顶一下
作者: liuziyang    时间: 2009-09-26 10:18
原帖由 coldcoffee 于 2009-9-23 12:54 发表
在/etc/security/limits.conf中写入内下内容:
test1          hard    fsize          1024

可以限制test1用户在本机登录后,创建的文件为1M。但通过ftp上传的文件就限制不住了,谁能指点一下?



这是个办法, 你再检查一个/etc/pam.d/login 和 vsftpd里面是否都有调用limit.so模块。

另外,可以做一个循环检测脚本,发现过大的文件就删除!
作者: marsaber    时间: 2009-09-26 12:55
标题: 回复 #8 liuziyang 的帖子
人家是限制单个文件传输的大小。

网上貌似也没好办法啊。
作者: kns1024wh    时间: 2009-09-27 14:49
标题: 回复 #1 coldcoffee 的帖子
不使用ftp客户端 改用net2ftp的网页方式应该是可以的
作者: coldcoffee    时间: 2009-09-28 14:05
这是个办法, 你再检查一个/etc/pam.d/login 和 vsftpd里面是否都有调用limit.so模块。


我在两个文件里都加了,还是不行。
作者: blueswxs    时间: 2009-11-12 17:51
原帖由 coldcoffee 于 2009-9-23 12:54 发表
在/etc/security/limits.conf中写入内下内容:
test1          hard    fsize          1024

可以限制test1用户在本机登录后,创建的文件为1M。但通过ftp上传的文件就限制不住了,谁能指点一下?



这办法行不通。连接过程中没有加载这个环境限制。

vsftpd软件我看了一下man手册也没发现。

使用辅助手段吧,上传完文件后期在作检查吧。
作者: 7717060    时间: 2009-11-12 19:56
应该用quota
作者: blueswxs    时间: 2009-11-13 10:04
原帖由 7717060 于 2009-11-12 19:56 发表
应该用quota


在quota中如何限制单个文件?
作者: 7717060    时间: 2009-11-16 10:01
原帖由 blueswxs 于 2009-11-13 10:04 发表


在quota中如何限制单个文件?

不好意思看错了,我在网上查了一下也是没有什么好的办法解决,不知道lz想做什么,其实可以通过php来实现他说的上传文件大小限制,ftp只提供下载.
作者: ly215197    时间: 2009-11-16 15:50
为FTP增加磁盘配额,从而避免恶意用户用垃圾数据塞满你的硬盘
我首先要说的是这个功能是系统自带的,而不是vsftp 的功能之一,千万别搞混了。好了,我们先假设我们的系统用户ftpd的主目录是/home/ftpd,它是建立在/home分区中,那么如果我们要对ftpd用户进行磁盘限额,那我们需要修改/etc/fstab中根分区的记录,将/home分区的第4个字段改成defaults,usrquota,如下:
LABEL=/home   /home   ext3    defaults,usrquota     1 2
# reboot  //重新启动系统使设置生效
也可以用
# mount -o remount /dev/sda6  ///dev/sda6的挂接点就是/home,这样可以不用启动系统。
这里我还要说明一下,如果我们对一个组进行磁配额,那我们需要增加参数grpquota,例如
LABEL=/home   /home   ext3    defaults,grpquota     1 2
也可以
LABEL=/home   /home   ext3    defaults,usrquota,grpquota     1 2
你想怎么限制都可以,自己组合参数吧。
# quotacheck -avu
说明:a-自动开启挂载文件系统的配额,v-显示信息,u-启用用户配额or g-启用组配额
# edquota ftpd //为用户ftpd设置磁盘配额
OR
# edquota -g grp  //为组grp设置磁盘配额
系统会自动打开配额文件,如下:
Disk quotas for user ftpd (uid 502):
Filesystem         blocks       soft       hard     inodes     soft     hard
/dev/sda6           424          0          0         13        0        0
第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置。我设置了硬块限度为1KB,是为了测试方便。
# quotaon  -avu  //打开磁盘配额监控进程,u是用户g是组,这里我没设置g参数
要校验用户的配额是否被设置,我们可以使用以下命令:
# quota ftpd
Disk quotas for user ftpd (uid 502):
Filesystem  blocks   quota   limit    grace   files   quota   limit   grace
/dev/sda6     424*    0      1            13      0      0         
# edquota –t(-g)来设置过渡期(grace period) //当然只针对软限制而言
和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem             Block grace period     Inode grace period
/dev/sda6                     7days                  7days
按你的需要修改后存盘退出
用以下命令显示磁盘配额使用状态
# repquota  -a  或 repquota  /dev/sda6(用户配额)
# repquota -g -a 或 repquota -a /dev/sda6 (组的配额)
如果一切按照你的意思实施了,那么我们就进行测试了!如下图4
我们传了一个>1k的文件,没有成功,这样我们就成功的为用户ftpd增添了磁盘配额,要是哪一天你不想加磁盘配额了,怎么办?参看如下命令:
取消某个文件系统的配额限制
#quotaoff  -vug /dev/sda6  //删除home分区的磁盘限额
#删除/etc/fstab中设置配额的部分
修改软配额的最大超越时间
注意:
/,/boot/,/proc,/mnt/cdrom等不要使用配额,没用。而且磁盘配额不适合FAT和FAT32系统。
以后当新设置了某个用户的配额,可以使用如下命令,马上生效。
# quotacheck -auvgm       --是不尝试重新挂载文件系统
作者: admam    时间: 2009-11-19 13:58
paste for you

# cd /usr/local/proftpd/bin/
# ftpquota -create -type=tally -table-path=/usr/local/proftpd/etc/ftpquota.tallytab
# ftpquota -create -type=limit -table-path=/usr/local/proftpd/etc/ftpquota.limittab
# ftpquota --type=limit --table-path=/usr/local/proftpd/etc/ftpquota.limittab --add-record --quota-type=user --name=tom --units=Mb --bytes-upload=50 --bytes-xfer=1

# (上面意思是:限定tom用户空间大小为50M,上传文件大小为1M)

ftpquota 具体用法参照 ftpquota --help
作者: sqsqsqsq2001    时间: 2010-03-30 15:00
这个功能实现的话不错
作者: coldcoffee    时间: 2010-08-10 17:19
这是个办法, 你再检查一个/etc/pam.d/login 和 vsftpd里面是否都有调用limit.so模块。

另外,可以 ...
liuziyang 发表于 2009-09-26 10:18


不好意思,一年后再回头看这个问题,之前工程做了一半,就没有进行,所以也没有管。现在做的工程又是这个要求,
我在/etc/pam.d/login和/etc/pam.d/vsftpd文件里都加了:
session    required     pam_limits.so

还是限制不了文件。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2