1. 检查内核情况

检查当前内核是否支持quota,当前内核配置文件在/boot下

如果当前内核不支持quota,需要重新编译内核将quota support编译进核心:

File systems  --->  [*] Quota support

2. 修改/etc/fstab,对所选文件系统激活配额选项

vim/etc/fstab

3. 重新挂载文件系统

添加了 usrquota 和 grpquota 选项后,重新挂载每个相应 fstab 条目被修改的文件系统。如果某文件系统没有被任何进程使用,使用 umount 命令后再紧跟着 mount 命令来重新挂载这个文件系统。如果某文件系统正在被使用,要重新挂载该文件系统的最简捷方法是重新引导系统或者使用命令:

[root@station1 ~]#mount -o remount,usrquota,grpquota /home。

一定不要忘记usrquota,grpquota

4. 扫描相应文件系统,用quotacheck命令生成基本的配额文件。

[root@station1 ~]# quotacheck-cugmv /home

运行 quotacheck 命令,quotacheck 命令检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用来的表。该表会被用来更新操作系统的磁盘用量文件。此外,文件系统的磁盘配额文件也被更新。 要在文件系统上创建配额文件

所用选项如下:

a — 检查所有启用了配额的在本地挂载的文件系统

v — 在检查配额过程中显示详细的状态信息

u — 检查用户磁盘配额信息

g — 检查组群磁盘配额信息

quotacheck 运行完毕后,和启用配额(用户和/或组群)相应的配额文件中就会写入用于每个启用了配额的文件系统(如 /home )的数据。

要定期运行它的最简单方法是使用 cron。以根用户身份,你既可以使用 crontab -e 命令来调度定期的 quotacheck,也可以在以下目录之一内放置一个运行 quotacheck 的脚本(使用最时候你需要的间隔期间):

• /etc/cron.hourly

• /etc/cron.daily

• /etc/cron.weekly

• /etc/cron.monthly

最精确的配额统计数据可以在所分析的文件系统没有被活跃使用时获得。因此,cron 任务应该在文件系统被最少使用时调度。如果这一时间在使用配额的文件系统中并不统一,则使用多个 cron 任务在不同的时间为每个文件系统运行 quotacheck。

5. 用quotaon命令激活配额。

[root@station1 ~]#quotaon /home

6. 用edquota命令,对特定用户采用配额限制。edquota –u username

要为用户配置配额,以根用户身份在 shell 提示下执行以下命令:

edquota -u username

为每个你想实现配额的用户执行该步骤。例如,如果在 /etc/fstab 中为 /home 分区启用了配额,执行了 edquota testuser 命令后,系统默认的编辑器

中就会有如图显示:

文件内有七个栏目:

Filesystem => 进行配额管制的文件系统。

blocks => 已经使用的区块数量(单位1KB)

soft => block 使用数量的"软性"限制

hard => block 使用数量的"硬性"限制

inode => 已经使用的 inode 数量

soft => inode 使用数量的"软性"限制

hard => inode 使用数量的"硬性"限制

edquota –t和 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/hdb1 10days 10days

另外以上两个操作可以使用

以上设置也可以使用 setquota 命令设置:

setquota -u someone 0 0 3 5 /dev/loop0

setquota -t 864000  864000  /dev/loop0

ps. 864000 为 10 天的秒数. 一小时=3600秒, 一天=86400秒

 #. 磁盘配额完毕后,必须以 quotaon  -av 的命令启用配额管理。

7. 测试:su username,进行测试:dd if=/dev/zero of=file1 bs=1k count=50。

8.管理磁盘配额

如果配额被实现,它们就需要被维护 — 主要维护方式是观察。查看配额是否被超出并确保配额的正确性。 当然,如果用户屡次超出他们的配额或者持续地达到他们的软限,系统管理员就可以根据用户类型和磁盘空间对他们工作的影响来做出几种决策。管理员可以帮助用户来检索对磁盘空间的使用,也可以按需要增加用户的配额。

1. 报告磁盘配额

创建磁盘用量报告需要运行 repquota 工具。例如,repquota /home 命令会生成以下输出:

*** Report for user quotas on device /dev/hda3

Block grace time: 7days; Inode grace time: 7days

 Block limits                File limits

User            used    soft    hard  grace    used  soft  hard  grace

-------------------------------------------

naima      --     540       0       0            125     0     0

testuser  --  440400  500000  550000          37418     0     0

要查看所有启用了配额的文件系统的磁盘用量,使用以下命令:repquota –a

这份报告虽然看起来很简单,有几点仍需要做一下说明。显示在每个用户后面的 -- 是一种判断用户是否超出其块限度或内节点限度的快速方法。如果任何一个软限被超出,相应的 - 行就会被 - 代替;第一个 - 代表块限度,第二个代表内节点限度。 grace 列通常是空白。如果某个软限被超出,这一列就会包含过渡期中的剩余时间。如果过渡期已超过了,其中就会显示 none。

2.磁盘配额的启用和禁用

你可以不必把配额设置为 0 来禁用它们。要关闭用户和组群配额,使用以下命令:

 quotaoff –vaug

如果 -u 或 -g 选项没有被指定,只有用户配额被禁用。如果只指定了 -g 选项,只有组群配额会被禁用。

要重新启用配额,使用带有同样选项的 quotaon 命令。

例如,要为所有文件系统启用用户和组群配额:

quotaon –vaug

要为指定文件系统(如 /home)启用配额:

quotaon -vug /home

如果 -u 或 -g 选项没有指定,那么仅用户配额会被启用。如果只指定了 -g 选项,仅组群配额会被启用。

3. 为组群分配配额

配额还可以根据组群来分配。例如,要为 devel 组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):

edquota -g devel

以上命令在文本编辑器中显示现存的组群配额:

修改限度,保存文件,然后配置配额。

要校验组群配额是否被设置,使用以下命令:

quota -g devel

总结:

磁盘配额除了监视系统上使用的磁盘空间,你还可以通过实现磁盘配额来限制磁盘空间,因此当用户使用了过多的磁盘空间或分区将要充满时,系统管理员就会接到警告。磁盘配额可以为个体用户配置也可以为用户组配置。这种灵活性既能够给每个用户分配一个较小的配额来处理“个人”文件(如电子邮件和报告),又允许了他们正从事的项目能够拥有较大的配额(假定项目有自己的组群)。

除此以外,配额不仅能够被设置成对所用磁盘块数量的控制,还能够被设置成对内节点数量的控制。由于内节点包含文件相关的信息,对内节点的控制能够控制可被创建的文件数量。

另外我们还可以通过设置磁盘配额防范系统攻击:在大多数情况下黑客入侵远程系统必须把木马程序或后门程序上传到远程系统当中。如何才能切断黑客的这条后路呢?Linux文件系统中的磁盘配额功能就能帮助用户轻松实现对磁盘使用空间的管理。可以根据该用户在系统中的权限和使用情况,合理地为该用户指定使用空间,这样配置既不影响系统常规的操作,同时也加强了系统的安全性。

通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。通过磁盘配额可以有效限制这类攻击。

Linux的磁盘配额详解(Quota)的更多相关文章

  1. linux下磁盘分区详解 图文(fdisk;mkfs)

    linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a-d)因为IDE硬盘最多四个,SCSI,SATA,USB硬盘为sdx(x为a-z)),硬盘主分区最多为4个,不 ...

  2. linux下磁盘分区详解

    Centos下磁盘管理     1.磁盘分区格式说明 linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d)因为IDE硬盘最多四个,SCSI,SATA,USB ...

  3. LINUX系统VMSTAT命令详解

    linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1    1表示每秒采集一次vms ...

  4. 每周一个linux命令之---uptime详解

    每周一个linux命令之---uptime详解 linux命令 uptime详解 引言:从今天开始,每周更新一个对程序员有用的linux命令,我真的没敢写每天一个,我怕我坚持不下去,每周一个还是可以的 ...

  5. [转]Linux内核源码详解--iostat

    Linux内核源码详解——命令篇之iostat 转自:http://www.cnblogs.com/york-hust/p/4846497.html 本文主要分析了Linux的iostat命令的源码, ...

  6. 【转】linux中inittab文件详解

    原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出, ...

  7. Linux 系统性能监控命令详解

    Linux 系统性能监控命令详解 CPU MEMORY IO NETWORK LINUX进程内存占用查看方法 系统负载过重时往往会引起其它子系统的问题,比如:->大量的读入内存的IO请求(pag ...

  8. Linux系统配置VSFTP软件详解

    Linux系统配置VSFTP软件详解 出处 http://www.sudu.cn/service/detail.php?id=11656 vsftpd.conf 是vsftpd的配置文件,用来控制vs ...

  9. (转)linux mount (挂载命令)详解

    linux mount (挂载命令)详解 原文:http://tutu.spaces.eepw.com.cn/articles/article/item/70737 挂接命令(mount) 首先,介绍 ...

随机推荐

  1. C++ std::vector 总结笔记

    Initialization #include<iostream> #include<vector> using namespace std; int main() { vec ...

  2. 从1G到5G发展史(3GPP是个什么组织 为啥5G标准离不开它)

    1.“3GPP”组织建立的来龙去脉 3GPP一直以来在人们心中是一个神秘的组织,很多用户对于它的理解和认知,说不清,道不明.最近关于5G网络的诸多报道,都陈述了“5G网络”的标准是由“3GPP”来规定 ...

  3. 【知识】location.search获取中文时候会被编码成一串字符

    [转码] 例如:case.html?id='这个是页面的标题' 当想要使用location.search获取?id='这个是页面的标题'的时候,包含的中文会被编码成一串字符串. 所以我们需要进行解码, ...

  4. PHP技术分享-起始时间戳和结束时间戳的方法

    php 获取今日.昨日.上周.本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime.下面兄弟连PHP培训 首先还是直奔主题以示例说明如何使用 mktime 获取今日.昨日 ...

  5. HDU 6656 Kejin Player

    hdu题面 Time limit 5000 ms Memory limit 524288 kB OS Windows 解题思路 因为升级只能一级一级地升,所以所求期望满足了区间加的性质,可以一级一级地 ...

  6. latex beamer技巧

    %章节标题\section{Related work(LSH)} %开始一页ppt \begin{frame}{Related work}{} \partitle{Locality-Sensitive ...

  7. Redis缓存雪崩和缓存穿透等问题

    穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透. 解决办法:①用一个bitma ...

  8. [BZOJ4456][ZJOI2016]旅行者:分治+最短路

    分析 类似于点分治的思想,只统计经过分割线的最短路,然后把地图一分为二. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(regist ...

  9. rollup的学习

    概述(Overview) Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序.Rollup 对代码模块使用新的标准化格式,这些 ...

  10. 20175308 2018-2019-2 实验四 《Android开发基础》实验报告

    20175308 2018-2019-2 实验四 <Android开发基础>实验报告 实验要求 参考 Android开发简易教程 完成云班课中的检查点,也可以先完成实验报告,直接提交.注意 ...