在Linux系统中设置磁盘定额

Linux系统中设置磁盘定额

概述

磁盘定额(quota)是系统管理员用来监控和限制用户或组对磁盘的使用的工具。Quota可以从两方面限制:其一,限制用户或组可以拥有的inode数(文件数);其二,限制分配给用户或组的磁盘块的数目(以千字节为单位的磁盘空间)。通过使用quota,系统管理员可以限制用户无节制地使用磁盘空间。Quota程序是针对每个用户和每个文件系统的,所以每个文件系统都要单独设置。

编译支持quota的内核

首先,要确定你的Linux内核是支持quota的。在2.2.14的版本的内核中,在编译的时候必须回答下面的问题为“y”。

Filesystems
Quota support (CONFIG_QUOTA) [N/y/?] Y

修改“/etc/fstab”文件

/etc/fstab”文件包含Linux系统中安装上的各种各样文件系统的信息。在使用quota之前,必须现在“fstab”中设置一下使其生效。因为对每一个文件系统都要单独设置quota,而且在“fstab”文件中,每一个文件系统单独用一行表示,所以为了支持quota必须在“fstab”的每一行都单独设置。根据你的需要,可以单独为用户、组或组和用户设置quota。在下面的例子中,我们假定“/home”目录在“/dev/sda6”设备上,有三种可能的情况。

第一种可能的情况:

在一个特定的文件系统上设置用户quota,编辑你的“fstab”文件(vi /etc/fstab),在“defaults”或其它为文件系统做的设置之后加上“usrquota”。

例如:

/dev/sda6 /home ext2 defaults 1 2 (as an example: the word “defaults”)
/dev/sda6 /home ext2 nosuid,nodev 1 2 (as an example: any other options you have set)

改为:

/dev/sda6 /home ext2 defaults,usrquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,
usrquota 1 2

第二种可能的情况:

在文件系统上设置组quota,编辑你的“fstab”文件(vi /etc/fstab),在“defaults”或其它为文件系统做的设置之后加上“grpquota

例如:

/dev/sda6 /home ext2 defaults 1 2 (as an example: the word “defaults”)
/dev/sda6 /home ext2 nosuid,nodev 1 2 (as an example: any other options you have set)

改为:

/dev/sda6 /home ext2 defaults,grpquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,
grpquota 1 2

第三种可能情况:

在文件系统上同时设置用户和组quota,编辑“fstab”文件(vi /etc/fstab),在“defaults”或其它为文件系统做的设置之后加上“usrquota, grpquota”。

例如:

/dev/sda6 /home ext2 defaults 1 2 (as an example: the word “defaults”)
/dev/sda6 /home ext2 nosuid,nodev 1 2 (as an example: any other options you have set)

改为:

/dev/sda6 /home ext2 defaults,usrquota,grpquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,
usrquota,grpquota 1 2

创建“quota.user”和“quota.group”文件

在修改“/etc/fstab”文件之后,为了在文件系统上建立quota,在文件系统的根目录下(在我们的例子中为“/home”)必须有一个“root”拥有所有权的文件:如果设置用户quota,必须创建“quota.user”;如果设置组quota,必须创建“quota.group”;如果想同时设置用户和组quota,这两个文件都要创建。

第一步

在你想设置quota的那个分区的根目录,以“root”身份创建“quota.usr”或“quota.group”文件:

[root@deep /]# touch /home/quota.user
[root@deep /]# touch /home/quota.group
[root@deep /]# chmod 600 /home/quota.user
[root@deep /]# chmod 600 /home/quota.group

touch”命令在“/home”目录下创建空的文件。。“chmod”命令为这些文件设置只有“root”用户可读写的权限。

注意:这两个quota文件,“quota.user”和“quota.group”,的所有者必须为“root”,“root”用户有读写的权限,其他人则没有这些权限。

第二步

下载我们在文件系统的根目录下初始化“quota.user”和“quota.group”文件。

用下面的命令初始化“quota.user”和“quota.group”文件:

[root@deep /]# edquota -u wahib
[root@deep /]# edquota -g wahib

上面这两步初始化了“quota.user”和“quota.group”文件。“edquota”命令“-u”参数为用户“wahib”设置quota,“-g”参数为组“wahib”设置quota。请注意以后还要编辑这两个文件,设置具体的定额。

第三步

在“/etc/fstab”文件中为quota程序设置了合适的选项,并创建和初始化“quota.users”和“quota.group”文件之后,需要重新启动系统,才能使改变生效。

用下面的命令重启系统:

[root@deep /]# reboot

为用户或组分配quota

重新启动系统之后,就可以为用户或组分配磁盘定额(quota)了。可以用“edquota”,查看man帮助edquota(8)

edquota程序

edquota程序是用来设置quota的编辑器,可以创建一个临时性的问题,然后root用户再用这个文件设置用户或组的quota。下面是为用户和组分配quota的例子。

为用户分配quota

例如,为登录名为“wahib”的用户分配quota。下面的命令让你进入vi编辑器,为“wahib 用户在每一个quota设置已经生效的分区上设置磁盘定额。

第一步

用下面命令为“wahib”用户编辑或修改quota

[root@deep /]# edquota -u wahib

Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)
inodes in use: 5, limits (soft = 0, hard = 0)

上面的命令执行完之后,你可以看到有一些关于“wahib”用户的信息显示在屏幕上。“blocks in use:”表示用户在这个分区中正在使用的磁盘块的总数。“inodes in use:”表示用户在这个分区的所有文件数。

第二步

为用户“wahib”分配5MBquota,在vi编译器中设置下面一些参数:

Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)
inodes in use: 5, limits (soft = 0, hard = 0)

改为:

Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft =
5000, hard = 0)
inodes in use: 5, limits (soft = 0, hard = 0)

soft =”设置用户最多可以用多大的磁盘空间。

hard =”设置强制用户最多使用多少磁盘空间。请注意只有在设置了“grace period”参数之后“hard =”设置的值才有效。

grace period”参数

grace period”参数允许你设置定期检查用户有没有超出磁盘定额的时间间隔。例如:这个参数可以用来每七天警告一次用户他的家目录只有5MB的磁盘定额。只要你觉得是合理的,就可以设置大于等于0的任意值。设置这个参数需要下面两个步骤(假定时间间隔为7天)。

第一步

用下面命令编辑“grace period”参数。

[root@deep /]# edquota -t

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 0 days, file grace period: 0 days

第二步

把“grace period”改为7天。用vi编辑器修改并设定下面的参数:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 0 days, file grace period: 0 days

改为:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period:
7 days, file grace period: 7 days

为组分配quota

假定系统中有一个组,其组ID为“webusers”。下面的命令让你进入vi编辑器,为“webusers 组在每一个quota设置已经生效的分区上设置磁盘定额。

用下面的命令为“webusers”组编辑和修改quota

[root@deep /]# edquota -g webusers

Quotas for group webusers:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)

这个过程是同为用户分配磁盘定额的地过程一样,你必须修改“soft =”参数,并保存所做的修改。

为成组的用户分配同样的quota

edquota程序有一个特殊的参数(-p)根据一个已经设置好quota的用户为成组的用户分配同样的quota。假定你想为UID500开始的用户设置与“wahib”用户同样的quota,可以先设置“wahib”用户的quota,然后运行下面的命令。

用下面的命令为成组的用户设置与“wahib”用户一样的quota

[root@deep /]# edquota -p wahib `awk -F: '$3 > 499 {print $1}' /etc/passwd`

edquota程序为“/etc/passwd”文件中UID大于499的用户设置与“wahib”用户同样的quota.

更多的资料

$ man edquota (8) - edit user quotas
$ man quota (1) - display disk usage and limits
$ man quotacheck (8) - scan a file system for disk usages
$ man quotactl (2) - manipulate disk quotas
$ man quotaon, quotaoff (8) - turn file system quotas on and off
$ man repquota (8) - summarize quotas for a file system
$ man rquota (3) - implement quotas on remote machines

命令

下面列出来的命令是经常使用的命令。可以参考man帮助页以获得更多的信息。

quota

quota”命令显示用户的磁盘空间的使用情况及其磁盘定额。

用下面命令显示用户的磁盘空间的使用情况及其磁盘定额:

[root@deep /]# quota -u wahib
Disk quotas for user wahib (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 6001* 6000 0 none 7 0 0

用下面命令显示用户所在组的quota

[root@deep /]# quota -g wahib
Disk quotas for group wahib (gid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 5995* 5000 0 none 1 0 0

注意:如果没有设置组quota,会有下面的提示信息:

Disk quotas for group wahib (gid 501): none

repquota

repquota生成磁盘使用情况和指定的文件系统的quota信息。而且,它为每个用户显示出其所使用的文件数和磁盘空间。

下面是一个“repquota”输出的例子:

[root@deep /]# repquota -a

Block limits               File limits
User             used soft hard grace      used soft hard grace
Roo    --         21 0 0                      4 0 0
Named  --         6 0 0                       5 0 0
Admin  --         388657 0 0                 21 21 0 0
Wahib  --         6001 0 0                    7 0 0

Block limits               File limits
User             used soft hard grace      used soft hard grace
root  --         21 0 0                      4 0 0
named --         6 0 0                       5 0 0
admin --         388657 0 0                 2121 0 0
wahib --         6001 6000 0                none 7 0 0

版权说明

这篇文章翻译和改编自Gerhard Mourani的《Securing and Optimizing Linux: RedHat Edition》,原文及其版权协议请参考:www.openna.com

中文版的版权属于作者brimmerwww.linuxaid.com.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值