红联Linux门户
Linux帮助

请问vsftp下做了磁盘配额,为什么上传的文件变0字节?

发布时间:2009-09-08 14:58:06来源:红联作者:yukina
在RADHAT 8 下架设了VSFTP服务,想做磁盘配额,做测试的时候限定硬限制为100K,登陆FTP后,当文件上传到达100K后,发现一个问题:就是如果再上传的文件大于10K的,FTP就会提示文件夹错误(这是正确的);而如果文件小于10K的,它仍然能往上传,只不过传上FTP后会自动变成0字节,并不占用磁盘空间,而且可以不限制的传多个10K的文件,都是变0字节的。请问是什么原因哦,虽然是不占空间,但是如果数量大的话也不好啊,会造成误会以为文件都传上去了。大家请帮帮忙吧,感激不尽!
文章评论

共有 5 条评论

  1. 于 2012-12-10 23:14:40发表:

    我的也是,测试是0字节。让客户我认为传送成功。纠结。

  2. niupijieke 于 2009-12-23 23:21:44发表:

    磁盘配额,避免恶意用户用垃圾数据塞满你的硬盘
    假设我们的系统用户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设置磁盘配额

    # 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 (组的配额)
    如果一切按照你的意思实施了,那么我们就进行测试了!

    我们传了一个>1k的文件,没有成功,这样我们就成功的为用户ftpd增添了磁盘配额,要是哪一天你不想加磁盘配额了,怎么办?参看如下命令:

    取消某个文件系统的配额限制
    #quotaoff -vug /dev/sda6 //删除home分区的磁盘限额

    #删除/etc/fstab中设置配额的部分
    修改软配额的最大超越时间
    注意:
    /,/boot/,/proc,/mnt/cdrom等不要使用配额,没用。而且磁盘配额不适合FAT和FAT32系统。
    以后当新设置了某个用户的配额,可以使用如下命令,马上生效。
    # quotacheck -auvgm --是不尝试重新挂载文件系统

  3. niupijieke 于 2009-12-23 23:11:26发表:

    呵呵 上楼的研究得好深 向你学习

  4. yukina 于 2009-09-09 09:45:57发表:

    2# wang7131984
    那BLOCK应该怎么设置呢?

  5. wang7131984 于 2009-09-08 18:18:26发表:

    磁盘配额用两种,一种是用来限制inode节点的,一种是用来限制block的大小的。如果block设置不对就会创建没有大小的只有一个目录?的0字节文件。如果inode设置不正确,就限制文件的创建个数。