在
Linux中限制用户的
磁盘使用
空间使用的是Quota,一般Quota在安装Linux时就已包括在内核中,不需要另行安装。Quota可以从两方面指定磁盘的储存限制: 使用者所能够支配的索引节点(inodes)数量;以及使用者可以取用的磁盘区块数量。在使用Quota监视用户时,一旦用户使用空间超出缓冲值(soft)就会发出警告,如超出限定值(hard)就会禁止用户再储存文件。在 Linux上2.x 版的核心都可以使用 Quota 。使用步骤及方法如下:
: G: P* I) w5 V$ P; b6 a& R) h; ^⒈开启
系统Quota
功能:
! L6 ^% T: }5 }
. [1 h2 e4 j6 G$ O
1 修改/etc/fstab文件,2 下面是我在我的系统上设定的值:
- H# V/ V+ [" a. z; j6 K% A2 B
" b o4 m) B4 O$ C#device directory
type options
( Z& p: |! d: I2 Y
4 Z1 |. R1 [1 F3 A/dev/hda1 / ext2 default 1 1
& i/ e1 R9 m* i3 o
/dev/hda2 /usr ext2 default 1 1
& x/ \! K* O+ s8 w6 Q$ _ T
7 @" Q, d$ V2 r0 m' i/dev/hda3 /home ext2 default,usrquota,grpquota 1 1
4 z) |' X7 }% E* B
! U9 @6 a( e! y* |下画线部分(usrquota,grpquota)为另加的部分
; _- r- P) n. @3 \) Z
4 Z* Q1 N* s" }' Z! E8 E( _3 修改/etc/rc.d/rc.local文件,在文件的最后面加入下面语句:
1 y8 c @9 } w, l5 U6 W2 R; D9 F. A7 @$ w( n+ d
if
# L$ E& ^+ P$ p
# _2 }% u& w" j! Z' {: H, n$ E [ -x /usr/sbin/quotaon ]
' Q, M& V" o. d5 j1 A" T+ t; x& r6 N" ]! l! a. H+ a8 `
then
8 D4 Q7 T2 A! b! t/ Y7 V
$ A) c! z3 P# }- N6 H& j$ @
echo "Quota now is turning on"
, e( X: z! P# n4 T- D
5 g6 |4 Q9 \9 s6 F( c% b9 I6 ~9 R/usr/sbin/quotaon -avug
0 Y6 _) ^9 O2 q# [& @0 J F
6 h' J! f$ f& h, `* R: s, _4 在quota所在目录(本例为/usr/local/bin)执行quotacheck -avug,这时Quota开始检查所有子目录并建立两个文件:quota.user,quota.group
9 B9 k3 }5 r2 E; |
% B* p8 `9 c6 K0 g
5 建立 "quota.user" 记录
( G1 m( S/ c# u5 A0 ]7 g2 i; U- |5 u6 N0 W5 k
quota 记录档(quota.user) 应该由 root 拥有,即 root 有读写的权限而其他任何 人都没有。以 root身份登录Linux
服务器,进入想要启用 quota 分区最上层,即如想在/usr建立quota
管理:
7 [8 g8 D8 O- K
3 O/ Y- j' _2 ~3 b* e) R! x
[root@
Server/usr]#touch /partition/quota.user
- d0 z& D+ C/ t: ~ q# _
5 P& R7 c. m; N8 E' o' O+ W7 U#chmod 600 /partition/quota.user
1 K. q+ B! ~' l/ J
2 ]6 ~8 m" v& o! g4 b
6 重新启动
计算机$ c8 k2 A; E. u- F6 _) D
) U- }1 c8 \# s$ [* m
⒉设定用户或用户组的空间限定
! m( _, P* s& K) s# {, s# }6 t! {) y! a9 s
①设定用户的磁盘限制:edquota -u 用户名
# F, z0 H' n1 ^8 ]+ \
2 E+ p& n4 A, M5 z# t2 B1 C如我系微机室设有一帐户wlx01,当使用命令edquota -u wlx01后出现Vi界面,如下所示:
* z+ P- F: o, H3 c; `3 L$ i. A5 y1 r/ k+ A8 _
Quotaa for user wlx01:
! ^& d b+ t5 K( ^. ~* w q" X, k1 s
/dev/hda3:blocks in use:0,limits(soft=0,hard=0)
{4 j. I0 b$ ~# ^) O* y4 j. {
" i$ ^' q& J- e3 Tinodes in use:9,limits(soft=0,hard=0)
. t/ c4 N Y& g# [
/ G; ^7 G( a) j! M* |7 g& p "blocks in use" 是使用者在某个分割区上已经使用的区块总数(以千位元组为单位) , “inodes in use" 是使用者在某个分割区上所拥有的文件总数。其中只需修改soft和hard两项后的值,单位都是kb。Soft指定占用空间达到多少时给以警告,hard则是为用户分配的可用空间大小
/ l9 J% ?$ t7 i& ?: w. k4 c: _! m
. u" z6 Q- s* S# Q; L6 n ②设定用户组的磁盘限制:edquota -g 用户组
% P8 Q9 c' }$ f( g2 c$ H6 Y* O5 {+ u5 x1 W1 u
③重复操作:当以设定某个用户而想重复在其他用户上时:
3 U1 u) F( z( b! _
" _* o0 r3 A6 ?; a edquota -p 已设定用户 需设定用户
( J2 _' X/ W0 Y9 c
5 A- T1 |+ [# e9 b/ Y; n1 N8 X 当使用 edquota -p wlx01 * 时所有用户都会与wlx01一样
! {: U3 p8 z1 I4 |9 n; N# E8 X
) V/ g6 s4 e% _, q⒊常用命令:
! ^' s C4 O* c6 s: ^
. C, p" c$ U9 y9 {% VRepquota
. ?! a9 t S; n9 _! F8 g' t, M9 Q$ i' n2 L+ v3 Z7 A" P
edquota %26;#8211;t:对 quota 使用者实行软性限制之前的时间限制。可以使用的时间单位是秒、分、小时、日、星期、以及月。软性限制指出 quota 使用者在分割区上拥有的磁盘用量总数。但是合并使用缓冲期间的时候,它的动作就如同一道临界线,当 quota
, |( X6 e% k6 p' p: Q7 U3 p+ P) X. O. F
使用者超越时便发出有关他即将违犯 quota 的警告。
4 r1 ?- V2 |& U9 O
: |( w0 S! ]6 z! S$ f
Time units may be: days, hours, minutes, or seconds
6 Y0 ]: J+ \8 Z( ]! p# e9 t1 C# g7 } c1 W
Grace period before enforcing soft limits for users:
: s! F& r4 n9 L+ v9 V" t% z
8 {9 p, W2 w9 V$ _" J& a/dev/hda2: block grace period: 0 days, file grace period: 0days
0 }' @' B; ?( |: v
/ b( K4 k8 K+ f- V8 D& A. w. C0 days 这个部份可变更为觉得合理的任何期限。
3 h; [8 ?4 ^& w. H( r- o& K5 W5 K+ d
repquota -a : Repquota 产生文件系统关于的quota信息
4 J$ G3 j, W- q1 `
/ g9 `# j8 x8 I3 N5 P* p0 ~Block limits File limits
- C' Z$ m0 x$ z3 b
& z: z1 {" r( U) p: @" [% [User used soft hard grace used softhard grace
* ~) n: J4 c, p. t* j6 M
, y7 t6 a* b8 N, Nroot -- 175419 0 0 14679 00
# a. s. z8 H* U) C
, \2 [) E O) z
bin -- 18000 0 0 735 00
# `$ J- ]- u9 ]. n* ?; l, G' {) o! c( V! p( U: f0 S+ w
uucp -- 729 0 0 23 00
1 `) `% M2 ^, Q- z# q+ ?: z5 E
' z- j9 F) \! e* e[color=#FFFFFF']
4 v' `8 c- J7 F) z5 G
* B' ^; y8 o) q3 e3 ~0 H+ tman -- 57 0 0 10 00
" H9 z7 ~0 m# c3 v1 D6 G+ `* |0 {
! `' E( Q9 a* [ u- |0 K. x1 w
user1 -- 13046 15360 19200 806 15002250
o0 N! ^% b+ [. D2 K* U0 O, y8 E# w! a* E0 v9 p0 a
user2 -- 2838 5120 6400 377 10001500
2 F# ]0 Q. u* E" N
6 V$ F) R2 @& [- |9 H7 S& J8 qQuotaon 用来打开 quota 的计算; quotaoff 则是将其关闭,它们是在系统启动与关机时执行的。
+ r" L& ^, _1 O2 f2 O
8 ]- u1 p. a" m1 e9 c; f" BQuota :显示用户的磁盘使用情况和上限。
# @3 B; y5 @ I1 C2 L# `5 L( y: |4 s& \: I
参数 使用说明
* ]7 ?( H9 z- k2 v4 i9 ~0 d" _" t$ z0 ~( y7 h$ K0 E
-g 显示用户所在组的组配额
0 h! u+ Q8 G" a0 A4 m7 R
+ j: e) R" j- p$ d-u 显示用户配额
; J6 A X) t+ M; I1 c1 @
6 I2 o" k0 p1 S- p$ P7 H2 g: v( ?
-v 显示没有空间分配的文件系统情况
# H9 h+ c. L% E4 w, \4 I6 s% L) O7 g
-q 显示使用情况超过配额的简要信息