公司里经常要共享文件,很多人用FTP服务器来传资料。时间一长,有些同事上传一堆视频、大文件,占满了硬盘,结果别人连文档都存不进去。这时候就得给FTP用户设个磁盘配额,一人一块地,谁也不能乱占。
先确认系统支持配额功能
大多数Linux系统的FTP服务基于vsftpd或ProFTPD,而磁盘配额主要靠操作系统的quota功能来控制。首先要确保你的服务器文件系统开启了user quota支持。比如你的FTP用户是独立的系统账户,就可以通过以下步骤开启:
编辑 /etc/fstab 文件,找到对应分区(通常是根分区或/home),在挂载选项里加上 usrquota,例如:
/dev/sda1 / ext4 defaults,usrquota 0 1
保存后重启系统,或者重新挂载分区并运行 quotacheck -cum / 来生成配额文件。
启用和初始化磁盘配额
运行下面命令开启配额:
quotaon /
然后给某个用户设置最大空间限制。比如你想让ftpuser最多只能用500MB空间:
edquota -u ftpuser
这个命令会打开编辑器,找到 blocks 那一行,修改软限制(soft)和硬限制(hard)为 512000(单位是KB,500×1024=512000)。保存退出就行。
配合FTP服务生效
只要用户的系统配额设好了,不管他通过FTP还是本地登录,超出限制就无法再写入文件。vsftpd本身不直接管理配额,但依赖系统层面的限制,所以用户上传到一半失败,很可能就是触碰了磁盘配额。
查看当前使用情况
随时可以查某人用了多少空间:
quota -u ftpuser
输出会显示当前使用的块数和限制值,一眼就能看出有没有超。
有次我们团队做项目,临时开了几个FTP账号给外包人员传图,每人限500MB。结果有人想偷懒,把整个备份库塞进来,系统直接拒绝,提醒“磁盘配额 exceeded”,反而帮我们避开了数据混乱的问题。
其实设配额不难,关键是在问题发生前动手。尤其多人共用服务器时,提前规划好每个人的空间,比出事后再清理省心得多。