图
1
实现磁盘配额的步骤
三、实现
Linux
的磁盘配额的详解
1.
检查内核情况
检查当前内核是否支持
quota,
当前内核配置文件在
/boot
下
# grep CONFIG_QUOTA /boot/config- 2.4.20
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y
如果有上列输出,则表示当前内核已经支持
quota
。如果当前内核不支持
quota,
需要重新编译内核将
quota support
编译进核心:
File systems ---> [*] Quota support
图
2
配置当前内核支持
quota
2.
对磁盘进行分区,划分出一部分空间来进行对用户的配额管理。
Fdisk �Cl
查看磁盘分区信息
Fdisk /dev/sdb
进行分区
Mkfs �Ct ext3 /dev/sdb1
格式化
(注:若先前已经挂载,则在进行此步钱必须卸载!)
Df �Ch
查看是否已经添加我们的新分区(此时没有)
Mount �Ct ext3 /dev/sdb1 /home
进行挂载(此时会出现一个问题:
/home
下原先创建的用户不见了,但是执行
useradd wxm1
的时候提示该用户依然存在!)
Df �Ch
查看的时候有我们创建的分区
3.
修改/
etc
/
fstab
,对所选文件系统激活配额选项
添加标签:
e2label /dev/sdb1 /home
以根用户身份使用
vi
编辑器来给需要配额的文件系统添加
usrquota
和(或)
grpquota
选项:
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
none /dev/shm tmpfs defaults 0 0
/dev/hda2 swap swap defaults 0 0
在上面的例子中,
/home
文件系统上启用了用户配额。
4.
重新挂载文件系统
添加了
userquota
和
grpquota
选项后,重新挂载每个相应
fstab
条目被修改的文件系统。如果某文件系统没有被任何进程使用,使用
umount
命令后再紧跟着
mount
命令来重新挂载这个文件系统。如果某文件系统正在被使用,要重新挂载该文件系统的最简捷方法是重新引导系统或者使用命令:“
# mount -o remount /home
”。
5.
在该文件系统建立
aquota.user,aquota.group
文件
(
存放配额文件
)
touch /home/aquota.user
chmod 600 /home/aquota.user
touch /home/aquota.group
chmod 600 /home/aquota.group
5.
扫描相应文件系统,用
quotacheck
命令生成基本配额文件
运行
quotacheck
命令,
quotacheck
命令检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用来的表。该表会被用来更新操作系统的磁盘用量文件。此外,文件系统的磁盘配额文件也被更新。
要在文件系统上创建配额文件(
aquota.user
和
aquota.group
),使用
quotacheck
命令的
-c
选项
。例如,如果用户和组群配额都为
/home
分区启用了,在
/home
目录下创建这些文件:
quotacheck -acug /home (
此命令报错
)
-a
选项意味着在
/etc/mtab
中所有挂载了的非
NFS
文件系统都会被检查来决定是否启用了配额。
-c
选项指定每个启用了配额的文件系统都应该创建配额文件,
-u
选项指定检查用户配额,
-g
选项指定检查组群配额。
如果
-u
或
-g
选项被指定,只有用户配额文件被创建。如果只指定了
-g
选项,只有组群配额文件会被创建。
文件被创建后,运行以下命令来生成每个启用了配额的文件系统的当前磁盘用量表:
quotacheck -avug
所用选项如下:
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
。
6.
使用
edquota
命令分配磁盘配额。
要为用户配置配额,以根用户身份在
shell
提示下执行以下命令:
edquota
-
u username
为每个你想实现配额的用户执行该步骤。例如,如果在
/etc/fstab
中为
/home
分区(
/dev/hda3
)启用了配额,执行了
edquota testuser
命令后
:
文件内有七个栏目:
Filesystem =>
进行配额管制的文件系统。
blocks =>
已经使用的区块数量(单位
1KB
)
soft => block
使用数量的
"
软性
"
限制
hard => block
使用数量的
"
硬性
"
限制
inode =>
已经使用的
inode
数量
soft => inode
使用数量的
"
软性
"
限制
hard => inode
使用数量的
"
硬性
"
限制
edquota �Ct
和
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
秒
7.
磁盘配额完毕后,必须以
quotaon -av
的命令启用配额管理。
四、管理磁盘配额
如果配额被实现,它们就需要被维护
―
主要维护方式是观察。查看配额是否被超出并确保配额的正确性。
当然,如果用户屡次超出他们的配额或者持续地达到他们的软限,系统管理员就可以根据用户类型和磁盘空间对他们工作的影响来做出几种决策。管理员可以帮助用户来检索对磁盘空间的使用,也可以按需要增加用户的配额。
1.
报告磁盘配额
创建磁盘用量报告需要运行
repquota
工具。例如,
repquota /home
命令会生成以下输出:
(此时并没有看到我们做的配额,还记得我们先前说的那个建立用户的事吗?虽然在
/home
下看不到用户,但我们还需要建立一个和用户名一样的目录,并修改它的属主
Cd /home
Mkdir wxm1
Chown wxm1 /home/wxm1
在执行
quotacheck -cvuga
)
*** 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
-------------------------------------------
root -- 36 0 0 4 0 0
tfox -- 540 0 0 125 0 0
testuser -- 440400 500000 550000 37418 0 0
要查看所有启用了配额的文件系统的磁盘用量,使用以下命令:
repquota -a
这份报告虽然看起来很简单,有几点仍需要做一下说明。显示在每个用户后面的
--
是一种判断用户是否超出其块限度或内节点限度的快速方法。如果任何一个软限被超出,相应的
-
行就会被
-
代替;第一个
-
代表块限度,第二个代表内节点限度。
grace
列通常是空白。如果某个软限被超出,这一列就会包含过渡期中的剩余时间。如果过渡期已超过了,其中就会显示
none
。
.
磁盘配额的启用和禁用
你可以不必把配额设置为
0
来禁用它们。要关闭用户和组群配额,使用以下命令:
quotaoff -vaug
如果
-u
或
-g
选项没有被指定,只有用户配额被禁用。如果只指定了
-g
选项,只有组群配额会被禁用。
要重新启用配额,使用带有同样选项的
quotaon
命令。
例如,要为所有文件系统启用用户和组群配额:
quotaon -vaug
要为指定文件系统(如
/home
)启用配额:
quotaon -vug /home
如果
-u
或
-g
选项没有指定,那么仅用户配额会被启用。如果只指定了
-g
选项,仅组群配额会被启用。
3.
为组群分配配额
配额还可以根据组群来分配。例如,要为
devel
组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):
edquota -g devel
以上命令在文本编辑器中显示现存的组群配额:
Disk quotas for group devel (gid 505):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 440400 0 0 37418 0 0
修改限度,保存文件,然后配置配额。
要校验组群配额是否被设置,使用以下命令:
quota -g devel
总结:
磁盘配额除了监视系统上使用的磁盘空间,你还可以通过实现磁盘配额来限制磁盘空间,因此当用户使用了过多的磁盘空间或分区将要充满时,系统管理员就会接到警告。磁盘配额可以为个体用户配置也可以为用户组配置。这种灵活性既能够给每个用户分配一个较小的配额来处理“个人”文件(如电子邮件和报告),又允许了他们正从事的项目能够拥有较大的配额(假定项目有自己的组群)。
除此以外,配额不仅能够被设置成对所用磁盘块数量的控制,还能够被设置成对内节点数量的控制。由于内节点包含文件相关的信息,对内节点的控制能够控制可被创建的文件数量。
另外我们还可以通过设置磁盘配额防范系统攻击:在大多数情况下黑客入侵远程系统必须把木马程序或后门程序上传到远程系统当中。如何才能切断黑客的这条后路呢?
Linux
文件系统中的磁盘配额功能就能帮助用户轻松实现对磁盘使用空间的管理。可以根据该用户在系统中的权限和使用情况,合理地为该用户指定使用空间,这样配置既不影响系统常规的操作,同时也加强了系统的安全性。
通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成
DOS
攻击的途径,比如:向匿名
FTP
塞垃圾文件。这样也可以塞满硬盘空间。通过磁盘配额可以有效限制这类攻击。