- 金錢
- 7394
- 威望
- 582
- 貢獻值
- 0
- 推廣值
- 0
- 在線時間
- 156 小時
- 最後登錄
- 2024-11-10
- 主題
- 86
- 精華
- 0
- 閱讀權限
- 30
- 註冊時間
- 2011-3-5
- 帖子
- 139
TA的每日心情 | 開心 昨天 20:53 |
---|
簽到天數: 1630 天 [LV.Master]伴壇終老 - 推廣值
- 0
- 貢獻值
- 0
- 金錢
- 7394
- 威望
- 582
- 主題
- 86
|
樓主
發表於 2011-12-3 07:55:40
Linux中的磁盘限额利用软件对特殊用户账号所使用的磁盘空间进行限制。本教程说明如何在系统上建立磁盘限额。
Linux中的磁盘限额利用软件对特殊用户账号所使用的磁盘空间进行限制。本教程说明如何在系统上建立磁盘限额。
Linux,以及其它以Unix为基础的操作系统的一个优点在于它的多用户处理能力。用户账号从严格特权分离这种增强的安全性中受益,多个用户可同时处于活动状态,并可从本地通过输入与输出设备或由远程通过网络服务进行访问。这种优点使得Linux成为多用户工作站、应用服务器与远程测试平台的理想系统。
这些应用可能会面临在单用户计算机上不会出现的社会挑战。挑战之一为共享存储空间,也就是一些用户,不管出于什么原因,无法与他人共享空间这一事实。这可能源自“逃避”某种后果的期望,就像在生日晚会上总想得到最大的那块蛋糕一样;或者这些问题用户可能只是忘记了共享一台计算机这件事,并不去或不愿注意他们自己的磁盘使用情况。当用户开始独占磁盘空间,并因而损害了其它用户的利益,多用户计算机的系统管理员就有必要思考如何用预先设定的限制来控制磁盘的使用情况。实际上,在建立一个多用户系统时,提前考虑(磁盘限额)可能是个好主意,不能等到有人已经越过了合理的界限才采取行动。
你可以与磁盘空间囤积者接触并与他们理论,但是,如果他们通情达理的话,他们一开始就不会让你陷入现在的这种境地。如果你不提前做出计划,那么在你开始应用自动化的方法进行限制,并使他们符合你打算设置的限制前,你得小心翼翼地要求他们减少磁盘使用空间。你还可以应用公开困窘的方法:在某个地方发行大家可以相互访问的各人磁盘空间使用空间统计数据,希望同辈压力帮助你的问题用户遵守磁盘使用限制。但这种方法在大多数情况下都不会成功,对那些你无法限制其意愿的人——可能出于政治原因,你的老板——这可能是你的唯一选择。通常,与上述这些解决办法相比,技术解决方案是更好的选择。幸运地是,由于大多数社会问题都涉及到计算机,代码黑客已着手应对提供多种方式让计算机处理其它用户的挑战,这样普通用户就没有必要这样做。
如果你的用户足够少,有理由这样做,并且你系统的用户名册不会发生改变,你可以为每个用户建立一个独立的分区,并将他们单独安置在你的多用户计算机文件系统的主目录区域内。但是,如果用户群体不断变化,或是有许多用户,则这种方法可能很快会失去控制,且非常难以管理。但是,万一每个用户需要大量的存储空间,应用网络连接存储就是合理的管理方案。实际上,你可以应用一用户一磁盘的方法解决问题。不幸的是,大多数的多用户系统管理员并未意识到自己处在这一境地。
对多数系统管理员而言,磁盘限额是最好的解决办法。Linux中的磁盘限额利用软件对特殊用户账号所使用的磁盘空间进行限制。尽管有许多包含花哨装置的免费而又复杂的限额管理系统,以及昂贵的商业限额管理系统可以解决这一问题,但是最简单且可能最方便的解决办法,是所有主流Linux产品管理员可免费应用的基本命令行quota工具集。应用这种常用的磁盘限额系统,操作系统自身就可对不同用户账号进行存储空间限制。
磁盘限额可以为每个用户账号单独配置。并且,当有成批的用户需要在同样的限制下进行操作时,这种配置还可以方便地进行复制。系统自动运行,并可进行设置,向那些超出限制,但在预先设定的较高限额内的用户发出警告与宽限时间,以一种有益、宽大但依然高效的方式保证用户对限额的遵守。与为每个用户账号应用单独分区、或整个单独物理磁盘不同,在这种情况下,对磁盘限额进行必要的修改只是小事一桩。这种方法的最大优点在于,你不必直接面对用户,因为磁盘限额系统一旦设定,系统即会自行进行管理。
准备磁盘限额
为系统的磁盘限额做准备包括几个简短的步骤。在你决定执行限额系统时,这些是必需的一次性步骤。一旦系统的磁盘限额设置完毕,你就不必再次执行这些步骤。
安装
首先,你得安装限额系统。如何进行安装因所使用的Linux 系统而异,但如果该系统没有被默认安装的话,你的Linux软件包管理系统应可提供简单方便的限额系统安装方法。要检查限额系统是否已安装,你可以打开一个外壳界面,在其中输入quato命令;或者使用kterm或gterm这样的终端模拟器;或是在TTY控制台上登记。如果quato已安装,且用户名为foo,你将会看到下列代码:
$ quota
Disk quotas for user foo (uid 1000): none
如果限额系统没有安装,你将得到一个“命令未发现”响应。如果你得到磁盘限额信息,则表明有人已在你的机器上执行了磁盘限额。
以下是一个应用APT软件管理系统的apt-get命令在Debian GUN/Linux系统上安装quota的例子:
$ apt-get install quota
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed
quota
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 439kB of archives.
After unpacking 1188kB of additional disk space will be used.
安装以后,会出现更多与安装有关的信息,你的Debian系统还会问你许多处理限额违反报告的问题。在其它Linux产品上的安装过程与上述过程十分相似。
如果因为某种原因,你的Linux产品无法提供通过软件包管理器安装quota的方法,那么,你得从sourceforge.net/projects/linuxquota下载并进行安装。
引导配置
/etc下的rc*.d都是链接到/etc/rc.d/下的对应rc*.d文件
而它们下面的S或K打头的文件又链接到/etc/init.d下的文件
一、什么是init
init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。
内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。所以,init始终是第一个进程(其PID始终为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
二、运行级别
运行级就是操作系统当前正在运行的功能级别。这个级别从1到6,具有不同的功能。其功能级别如下:
# 0 - 停机(千万不能把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 - 没有用到
# 5 - X11 (xwindow)
# 6 - 重新启动 (千万不要把initdefault 设置为6——把被你黑掉的linux的initdefault设置为0或6也算是拒绝服务攻击噢!)
除此之外还有ABC三个运行级别,但在RHLinux中都没有意义。
这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d
目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到
/etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)
三、运行级别的配置
运行级别的配置是在/etc/inittab行内进行的,如下所示:
12 : 2 : wait : / etc / init.d / rc 2
各字段解释如下:
id:runlevels:action:process
id:是一个任意指定的四个字符以内的序列标号,在本文件内必须唯一;使用老版本的libc5(低于5.2.18)或a.out库编译出来的
sysvinit限制为2字符。注意:像getty之类的登陆进程必须使id字段与tty编号一致,如tty1需要id=1,许多老版本的登陆进程都遵循
这种规则。
runlevels:表示这一行适用于运行那个/些级别(这里是2,可以有多个,表示在相应的运行级均需要运行);另外sysinit、boot、bootwait这三个进程会忽略这个设置值。
action:表示进入对应的runlevels时,init应该运行process字段的命令的方式,常用的字段值及解释在附录内。例子中的wait表示需要运行这个进程一次并等待其结束。
process:具体应该执行的命令。例子中的/etc/init.d/rc命令启动运行级别2中应该运行的进程/命令,并负责在退出运行级时将其终止(当然在进入的runlevel中仍要运行的程序除外。)
当运行级别改变,并且正在运行的程序并没有在新的运行级别中指定需要运行,那么init会先发送一个SIGTERM 信号终止,然后是SIGKILL。
有效的action值如下:
respawn:表示init应该监视这个进程,即使其结束后也应该被重新启动。
wait: init应该运行这个进程一次,并等待其结束后再进行下一步操作。
once: init需要运行这个进程一次。
boot: 随系统启动运行,所以runlevel值对其无效。
bootwait:随系统启动运行,并且init应该等待其结束。
off: 没有任何意义。
initdefault:系统启动后的默认运行级别;由于进入相应的运行级别会激活对应级别的进程,所以对其指定process字段没有任何意义。如果inittab文件内不存在这一条记录,系统启动时在控制台上询问进入的运行级。
sysinit: 系统启动时准备运行的命令。比如说,这个命令将清除/tmp。可以查看/etc/rc.d/rc.sysinit脚本了解其运行了那些操作。
powerwait:允许init在电源被切断时,关闭系统。当然前提是有U P S和监视U P S并通知init电源已被切断的软件。RH linux默认没有列出该选项。
powerfail: 同powerwait,但init不会等待正在运行的进程结束。RH linux默认没有列出该选项。
powerokwait:当电源监视软件报告“电源恢复”时,init要执行的操作。
powerfailnow:检测到ups电源即将耗尽时,init要执行的操作,和powerwait/powerfail不同的哟。
ctrlaltdel:允许init在用户于控制台键盘上按下C t r l + A l t + D e
l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将Ctrl + Alt + Del组合键配置为别的行为,比如忽略等。我是设置成打印一句骂人的话了^o^。
kbrequest:监视到特定的键盘组合键被按下时采取的动作,现在还不完善。
ondemand:A process marked with an ondemand runlevel will be
executed whenever the specified ondemand runlevel is called. However,
no runlevel change will occur (ondemand runlevels are ‘a’, ‘b’,and
‘c’),(英语太菜,那个however不知道该怎么翻译才好。惭愧!)
补充:
1、关于进入单用户模式,一般都是采用设置initdefault为1或者在grub/lilo中指定一个“single”或“emergency” 命令行参数来实现。
{
Linux用grub或lilo找回root密码方法:
GRUB:在引导装载程序菜单上,键入 [e] 来进入编辑模式。
你会面对一个引导项目列表。查找其中类似以下输出 的句行:
kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2(这里不一样)
按箭头键直到这一行被突出显示,然后按 [e]。
你现在可在文本结尾处空一格再添加 single 来告诉 GRUB 引导单用户 Linux 模式。按 [Enter] 键来使编辑结果生效。
你会被带会编辑模式屏幕,从这里,按 [b], GRUB 就会引导单用户 Linux 模式。 结束载入后,你会面对一个与以下相似的 shell 提示:
sh-2.05#
现在,你便可以改变根命令,键入:
bash# passwd root
你会被要求重新键入口令来校验。结束后, 口令就会被改变,你便可以在提示下键入 reboot 来重新引导;然后,象平常一样登录为根用户。
LILo:当系统启动到出现LILO引导画面时,对于图形引导方式按TAB键进入文本方式,然后在LILO处
输入linux single回车即可进入免密码的控制台,进入以后使用passwd命令修改root的密码
即可
}
其实另外还有一个更干净的方法,编辑:
kernel /vmlinuz-2.6.9-22.EL ro root=/bin/sh,这样init就直接启动一个shell,其他任何进程都没有启动哦,够干净吧!
2、
如果你使用的是GRUB,在启动时你可以按住e键进入设置模式,相应的位置显示为:
kernel /vmlinuz ro root=/dev/hda1 5
3、系统正在运行时,telinit(或init)命令可更改运行级别。
/sbin/telinit
通常,切换运行模式的目的是重启某些应用进程,比如XFree86,将运行模式从5切换到3将终止XFree86以及与之相关的所有进程,然后再把运行模式切换到5,XFree86就可以很干净的启动。在做这些工作之前,请确保所有在XFree86下的工作都已经保存,用root用户:
$ /sbin/telinit 5
在键入命令之后,你的屏幕可能会显示一些服务启动或者停止的信息。
补充2:在单用户模式下引导
一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能的,除非所有的服务系统已被杀死。
一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也为init指定命令行, init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入方式和你启动系统的方式有关)。
有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为分散,所以应该尽可能地运行fsck)。
如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f s c k不能自动修复的。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然。
由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码。否则,它会简单地为L I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘)。
不同的运行级有不同的用处,也应该根据自己的不同情形来设置。
例如,如果丢失了root口令,那么可以让机器启动进入单用户状态。在启动后的 lilo 提示符下输入:
init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你可以使用passwd 程序来改变root口令,然后启动到一个新的运行级。
接下来,你需要保证系统在引导时能够进行限额管理。大多数的产品,如RHEL/Fedora、Novell/SuSE、Mandrake和Debian系统默认情况下就拥有这种功能,这样,你根本就不必做任何事情。
例如,在Debian系统中,安装限额为你在/etc/init.d处增加一个启动脚本,然后你最多只要在rc[n].d目录下为这个启动脚本添加一个符号链接(symlink),在这里,[n]中的数字与系统运行的runlevel相匹配。欲了解更多有关runlevel的信息,可输入man init并阅读出现的页面,以及init说明文件结尾“参见”(SEE ALSO)部分的参考说明文件。
为找出当前runlevel,你可在登录根账号时简单输入runlevel命令,它会告诉你之前与当前的runlevel。对大多数系统而言,之前的runlevel大多为一个大写的N,表明当前的runlevel是系统运行的唯一一个runlevel。
如果由于某种原因,系统在引导时没有配置限额系统,那你得自己编辑引导脚本。如果你的系统应用/etc/init.d目录来存放服务脚本,你可以使用那里已有的脚本指导你建立一个新的bash脚本来激活quota,为从相应的rc[n].d目录为其建立符号链接。如果你的系统应用的是rc.local脚本,你可能希望将限额系统的启动文件增加到那个文件中。不管哪种情况,你都必须添加如下所示的bash脚本代码:
# first, check to see if quota is running, then turn it on if not
if [ -x /sbin/quotaon ]
then
/sbin/quotaon -avug
fi
你应当仔细检查quotaon命令的位置,在一些系统中,它可能不在/sbin目录中。
分区配置
第三步,你必须配置分区设置来激活限额,并详细说明如何在各个分区上执行限额。在建立磁盘限额时,你可以将它们应用到用户或用户组中。每个配备妥当的分区都有其自己的限额配置,你可以在fstab文件中对其进行指定。例如,你可以在一个分区上建立限额来限制用户主目录的大小,并在另一个分区上建立一个某一特定的项目组的所有成员能够访问的目录,以限制整组成员所使用的目录的大小。
为激活某个分区的限额,你必须对/etc/fstab文件进行编辑。在那个文件的每个条目中,都有一个包含配备选项——如ro(代表“只读”)、rw(代表“读/写”)或默认——的竖栏。这些选项形成一个以逗号间隔的,没有空格的列表。如果你希望激活一个特定分区上的用户限额,增加usrquota选项;如果你希望激活组限额,增加grpquota选项。
为准备分区,你必须在使用限额的每个分区上建立限额数据库。你需要建立空白的数据文件,将每个使用限额的分区根目录中的用户与组信息存储在里面。
例如,如果你要装备/dev/hda2 at /home,在那个分区装备时你得转到/home并建立两个空白文件quota.user和quota.group。你应以根用户登录并这样做:用touch quota.user与touch quota.group命令建立两个空白文件。文件建立后,你就可以用chmod命令来改变这些数据库文件的文件许可,以便只有根用户能对其进行读写。总的来说,你输入的命令以及输出的结果如下所示:
$ su
Password:
# cd /home
# touch quota.user
# touch quota.group
# chmod 666 quota.user
# chmod 666 quota.group
限额
最后,你需要准备为用户和用户组建立限额设置。要建立限额设置,须使用edquota命令。应用这个命令,你可以配置软限制限额、硬限制限额与超出软限制的宽限时间。
? 硬限制是每个用户或用户组不得超出的磁盘使用限额。尽管硬盘驱动器在存储空间以外运行,操作系统也会阻止用户或用户组超过此硬限制限额。通常情况下,系统管理员会将硬限制设得稍大一些,这样,用户或用户组在删除引起配额限制目录超出其软限额的文件前,就有缓冲空间来保存文件。可能需要一个这样的原因,如在删除文件拷贝前对文件进行复制、修改与测试。
? 软限制是每个用户或用户组在日常运作中应该被限制的磁盘使用限额。如上所述,在硬限制的限定下,用户可暂时超过软限制。但一段时间后,如果用户目录没有遵守软限制限额标准,则系统会禁止此用户账号,执行软限制。要重新激活账号,则要由系统管理员来执行。
? 宽限时间设置决定某人使存储应用遵守软限制限额所用的时间。例如,软限制第一次超出后,七天的设置让用户有七天的时间来使限额配置目录中的磁盘使用额重新降低到软限制以下,不然账号即被禁止。在多数系统中,七天为默认的宽限时间。当然,如果希望的话,系统管理员也可以把宽限时间设得长一些或短一些。
输入edquota命令即可打开外壳$EDITOR变量指定的默认文本编辑器。如果你不喜欢所调用的编辑器——例如,你是一个vi用户,edquota命令调用了emacs——你就可以用export EDITOR=vi命令来修改$EDITOR变量。
与vi和emacs相比,nano与pico总是在屏幕底部显示简单、公共的命令帮助信息,因此它们更适合初学者使用。如果你不小心“闯入”vi或emacs之中,可以输入Ctrl X ,接着输入Ctrl C>退出emacs。
在不保存意外改变的情况下退出vi,只需点击ESC键再确定即可回到命令模式(如果机器在嘟嘟作响,你可能已回到命令模式),然后输入:q!再单击回车键。在编辑限额设置时才试图学习如何使用编辑器可不是个好办法,所以你最好现在就开始学习使用nano或pico。
要编辑宽限时间设置,你可以使用edquota的-t选项,输入:
edquota –t
这一命令允许你为使用磁盘限额的各个分区设定不同的宽限时间。
可编辑用户或用户组软硬限制,可应用-u或-g选项,再加上你希望编辑限额的用户账号或用户组账号即可。例如,edquota -u foo允许你编辑用户foo的限额设置,而edquota -g bar允许你编辑用户组bar的限额设置。
-p选项允许你将一个用户的设置复制给另一个用户。例如,如果用户baz要使用与用户foo一样的设置,可以输入:
edquota -p foo -u baz
在一台每个人都使用同样的限额设置的机器上建立新的用户账号限额,这个方法可以节省许多时间。我们可以用-p命令选项来生成一个简单的一行bash脚本,同时处理大量的账号。不过,这要等到你精通bash脚本时才能使用。
在编辑限额设置时,你会发现存在有“块”(block)与inodes设置。在典型的Linux系统中,块为千字节单元。它决定你正在编辑限额的用户或用户组账号可以使用多少磁盘存储空间。inode设置可用来限制一个指定的用户允许使用的文件数目(一般来说,每个文件都需要几个inode),与block设置一样,它也有硬限制与软限制,并使用同样的宽限时间设置。显示为零的限制设置则表明那个用户或用户组账号没有执行限额。通常block要进行硬限制与软限制,而inode则没有这些限制。
当你初次开始为用户与用户组编辑限额设置时,每个账号的配置将显示少量的已使用的block与inode(如果在一个已运行一段时间的系统上执行限额,时会出现大量的block与inode)。这些数字不能进行编辑:在改变限额配置时,只能编辑硬限制与软限制数目。完成编辑与设置后,用在调用edquota时给定的默认文件名对它们进行保存——你根本不必选择文件名,只需从你所使用的编辑器中进行保存与编辑。
限额管理
一旦设定了限制,你可以使用其它许多工具来对限额进行管理。例如,可以用quotacheck来检查限额数据库的完整性,用repquota来报告限额使用状况,用户还可以调用quota本身来查看他们的限额使用情况;根用户还可用它来获得用户账号信息。欲了解更多与这些应用有关的信息,请查看相关说明文件。
最后,一些Linux产品还提供一个附加的工具集,称为quotatool。根据你应用磁盘限额管理的时间长短,你可能值得花一些时间来研究如何使用这个工具集。
在Linux系统中,可以通过quota的设置来限制用户和用户组的硬盘空间配额。而磁盘配额技术在Linux操作系统的应用中是十分广泛的。例如,各个网站、ICP等为用户设置信箱大小、磁盘使用空间、虚拟主机等都用到了磁盘配额技术。下面我们把介绍Linux磁盘配额的配置步骤:
(1)编辑/etc/fstab
在需要做quota限制的分区中加入usrquota和grpquota参数,中间以逗号隔开,常见需要限制的分区为dev/和/home。修改如下:
/dev/hdb1/ext2 defaults,usrquota,grpquota 11
/dev/hdb5/home ext2 defaults,usrquota,grpquota 11
/dev/hdb6 swap swap defaults 11
/dev/hdc/cdrom so9660 defaults 11
none/proc proc defaults 11
(2)执行“quotacheck -avug”命令
quotacheck这个命令的功能就是对“已经使用过的磁盘空间”做扫描,分析已使用磁盘上的每一个目录和文件属于哪一个用户和组,然后分别在根目录/(root)产生“userquota”和“grpquota”这两种记录文件。其中命令中参数组合“-avug”中各个参数的含义如下所示:
-a参数:表示扫描全部的磁盘
-v参数:表示在扫描(scan)磁盘时,显示扫描过程的信息
-u参数:表示扫描记录磁盘上各个用户(User)的使用的文件和目录
-g参数:表示扫描记录磁盘上各个用户组(Group)的使用的文件和目录
(3) 使用命令“edquota -u”设置用户配额
这个命令是为每一个用户组和每一个用户设置硬盘配额。用edquota这个命令来可以编辑每一个用户可用硬盘空间和文件节点数(inode)的大小。edquota的语法是:
$ edquota -u 账号
假设想限制用户blue的使用空间,使用命令:
$ edquota -u blue
然后会进入vi进行编辑,显示如下:
Quotas for user blue:
/dev/hdb5:blocks in use:11111,limits(sorf = 0,hard =0)
inodes in use:1114,limits(soft = 0,hard = 0)
假如想限制用户blue只能用10MB的硬盘空间,就把10MB换算成11112KB,然后把blocks in use这一行的soft = 0和hard = 0改成soft =11112,hard=11112。假如想限制用户blue的文件节点数只有6000个,可以把inodes in use 这一行的soft=0和hard=0改成soft=6000,hard=6000,改完之后即为:
Quotas for user blue:
/dev/hdb5:blocks in use:11111,limits(soft =11112,hard=11112)
inodes in use:1114,limits(soft=6000,hard=6000)
然后保存起来,即完成限制该位用户的使用空间了。如想限制其他的用户请重复上述的动作。不过如果用户非常多,可以先设置一个人的quota,先设好用户blue的quota,然后到/home目录可以执行下面的命令对所有用户生效:
$ cd /home
$ edquota -p blue *
其中“*”代表系统中所有的用户名,用“quota -v”命令可以查看该用户可以有多大的硬盘使用空间,例如对blue用户进行察看,可以以root的身份执行:
$ quota -v blue
或是用blue用户登录系统后,执行“quota -v”命令之后,可以看到如下类似的信息:
Diskj quotas for user blue (uid 502)
Filesystem blocks uqota limit grace files quota limit grace
/dev/hdb5 11111 0 0 1114 0 0
(注:数字0代表无限使用硬盘空间,是完全没有限制的意思)
显然,可以看到用户已经用了11111个blocks,大约等于11111k≈13MB,而他的quota和limit的值是0,这代表可以无限制地使用硬盘空间,直到硬盘满了为止。同时用户blue的Home Directory也已经有了1114个文件,这代表着该用户至少已经使用了1114个文件数,而后面的quota和limit的值也是0,这表示用户可以无限地增加文件数目,直到整个系统的inode数全部用完为止。假如inode数被用完,但硬盘空间没有用完,这时就不能再增加任何文件到系统中。
(4) 使用“edquota -g”命令设置组使用的quota
编辑完每一个用户可使用的硬盘空间和inode数之后,接着就可以编辑用户组可使用硬盘空间和inode数。在编辑用户组的quota之前,必须注意的一点是“用户组的quota须大于这个组下面的所有的用户quota的总和”。如果组的quota小于所有用户quota的总和,则所有的用户都不能在自己的Home Directory 写入文件,所以请读者自行计算一下到底该配置多大的quota给用户组,这是非常重要的。想清楚之后,就可以编辑组使用的quota了,编辑方法是和编辑用户quota一样的。例如想给linejet这个用户组50MB的使用空是,20000个inode数,可用以下命令:
$ edquota -g linejet
然后把quota限制的内容改成如下,再保存起来就完成了。
Quotas for group linejet:
/dev/hdb5:blocks in use:11141,limits(soft=60000,hard=60000)
inodes in use:2771,limits(soft=20000,hard=20000)
(5)使用“edquota -t”设置删除文件时间
假设blue这位用户的quota被设为3000 blocks,limit被设为4000 block。当blue所用的硬盘空间超出quota的限制3000 blocks时,系统会发出通知,提示该用户使用的硬盘空间已经超出quota了,请尽快删除文件,否则在7天后把自动删除文件。此时用户blue还可以继续写入文件,因为Home Diretoty磁盘空间还没超出4000 blocks,假如用户blue仍没有自行删除多余的文件,系统把在7天之后,自动删除文件至quota限制以内。而系统要提示用户在多久的时间内自行删除文件,就靠“edquota -t”这个命令来完成:
$ edquota -t
使用root身份执行edquota -t后,出现如下信息:
Time units may be:days,hours,minutes,or seconds
Grace period before enforcing soft limkts for users:
/dev/hdb5:blck grace period:7 days,file grace period:7 days
系统缺省是7天,可以改成任意的天数、小时、分、秒,格式如7 days、7 hours、7minutes、7 secomnds等。
这样,通过利用quota来为用户和用户组建立和管理磁盘配额的技术就给大家介绍完了。要注意的是,作为一名系统管理员在进行为用户配置磁盘配额时,一定要在了解系统情况的前提下,制定一份良好的策略,不然,会给以后系统的维护带来很大麻烦。 |
|