Linux系統限制普通用戶內存使用(ulimit)和硬盤配額空間(quota)

#Linux系統限制普通用戶內存使用(ulimit)和硬盤配額空間(quota)html

限制普通用戶內存

第1步,首先進到Linux終端用vi編輯/etc/security/limits.conf :


# max memory locked : means the size of the memory which cannot be changed to swap 
#@users          hard    memlock         11000000
#@users          hard    maxlogins       99
#@users          hard    data       	  2000000
#max virtual memory size for "users" group ::
@users           hard    as               4000000
#max memory size for "users" group  ::
@users           hard    rss             21000000

node


* hard core 0 
* hard rss 5000 
* hard nproc 20

這裏的「*」表明除了Root的全部用戶,(* hard core 0) 是禁止core files「core 0」,(* hard rss 5000) 是限制內存使用爲5MB「rss 5000」, (* hard nproc 20 )是限制進程數爲「nproc 50「。能夠根據本身系統內存大小進行合理配置。linux

第2步:用vi編輯/etc/pam.d/login文件,而後加上下面這行保存退出就能夠。

session required /lib/security/pam_limits.so

限制普通用戶磁盤使用(基於quota程序)

磁盤配額的使用限制

僅針對整個分區:磁盤配額實際運行時,是針對「整個分區」進行限制的,例如,若是/dev/hda5載入在/home下,那麼,在/home下面的全部目錄都會受到限制。

核心必須支持磁盤配額:Linux系統核心必須支持磁盤配額模塊。

磁盤配額的記錄文件:使用的Kernel 2.6.XX的核心版本,這個核心版本支持新的磁盤配額模塊,使用的默認文件(aquota.user、aquota.group)將不一樣於舊版本的quota.user和quota.group。舊版本的磁盤配額能夠經過convertquota程序來轉換

只對通常身份用戶有效:並非全部在Linux上的帳號均可以設置磁盤配額,例如root就不能設置磁盤配額,由於他擁有整個系統全部的數據。

磁盤配額程序對硬盤配額的限制

最低限制( soft ):這是最低限制容量。用戶在寬限期間以內,它的容量能夠超過最低限制,但必須在寬限時間以內將磁盤容量下降到最低限制的容量限制範圍以內。 

最高限制( hard ):這是「絕對不能超過」的容量。一般最高限制會比最低限制高。 

寬限時間:寬限之間是指當用戶使用的空間超過了最低限制,卻尚未到最高限制時,在這個「寬限時間」內,就必須請用戶將使用的磁盤空間下降到最低限制之下,不然則不容許在寫入。反之,則寬限時間取消

應用實施步驟

磁盤配額從開始準備文件系統的支持,到整個設置結束的主要步驟以下:session

  • 步驟1:設置分區的文件系統支持磁盤配額參數oop

    #vi /etc/fstab :
    
     UUID=***     ext3     defaults,usrquota,grpquota     1 2
  • 步驟2:生成磁盤配額的配置文件ui

    quotacheck –cugm /home 生成磁盤配額的配置文件

在/home下生成aquota.user和aquota.group文檔.net

參數:code

a 檢查任何起用了配額的在本地掛載的文檔系統htm

b 在檢查配額過程當中顯示周詳的狀態信息blog

u 檢查用戶磁盤配額信息

g 檢查組羣磁盤配額信息

這樣就加入了磁盤配額的磁盤格式了。不過,因爲真正的磁盤配額在讀取時時讀取/etc/mtab文件,這個文件須要重啓以後才能用/etc/fstab的新數據,因此這個時候能夠選擇 從新啓動 或者

#mount -o remount /data
  • 步驟3:打開磁盤配額

    #quotaon -a
  • 步驟4:編輯磁盤配額限制值數據

如今假設想給test用戶10M的硬盤配額限制,他所擁有的最大文檔數不得超過100個。

#edquota -u test                     //test爲用戶名

進入編輯環境,將以下三行:

Quotas for user test:
/dev/hadx: blocks in use14,limits(soft=0, hard=0)
inodes in use: 12, limits (soft=0, hard=0)

改成:

Quotas for user test:
/dev/hdax: blocks in use: 14, limits (soft=10204, hard=10204)
inodes in use: 12, limits (soft=100, hard=100)

其中:blocks in use:用戶已使用塊的大小,單位是KB。inodes in use: 用戶現有文檔的大小。這兩項都是系統自動給出,沒必要改變。

  • 步驟5:設置一個預警期

以下所示:

# edquota -t

能夠把預警期設置爲1天,也可使用分鐘或秒。默認軟限制是7天。

  • 步驟6: 將已配置限額的用戶設置複製到其餘用戶

    #edquota -u test1 -p test

假如想給一批用戶加上一樣的限制。比方說給系統任何100個用戶加上和test一樣的限制。執行以下命令:

#edquota -p test ' awk -F:' $3 499 {print $1}' /etc/passwd'
  • 步驟7:給用戶組配置磁盤配額限制

    #edquota -g usergroup
  • 步驟8:設置啓動時啓動磁盤配額 #vi /etc/rc.d/rc.local /sbin/quotaon -avug

  • 步驟9:利用repquota顯示更爲完成的磁盤配額結果報告

例如:

#repquota /home

其餘:

#repquota -a[-vug]
    #repquota -av                           //查看全部具備磁盤配額文件系統的限制值
    #repquota -avu    username       //查看用戶的磁盤配額限制值


基本磁盤配額命令詳解:

在開始進行磁盤配額的實際練習以前,先了解一下磁盤配額使用的命令,這些命令分爲兩種,一種是查詢功能(quota、quotacheck、quotastats、warnquota、requota),另外一種則是編輯磁盤配額的內容(edquota、setquota)。下面咱們來討論這些基本命令。

  1. /etc/mtab

爲何要提這個文件系統實際載入的記錄文件呢?要注意,當咱們使用磁盤配額的時候,系統會去搜素:「系統上具備磁盤配額參數的分區」,因此,當咱們要使用磁盤配額的功能時,系統文件必需要支持磁盤配額的標誌。通常來講,咱們是經過編輯/etc/fstab後,在從新載入文件系統的方法,來讓系統的文件系統支持磁盤配額。

  • quota

    這個命令僅僅用來「顯示」當前某個用戶或者組的磁盤配額值。
    
     # quota -uvs    //這個是顯示當前用戶的配額值
    
     -u:表示顯示用戶的配額
    
     -g:表示顯示組的配額
    
     -v:顯示每一個文件系統的磁盤配額
    
     -s:能夠選擇用Inode或者磁盤容量的限制值來顯示
    
     # quota -gvs   //顯示root用戶所在組的配額值
    
     # quota -uvs test1   //顯示test1用戶的配額值
  • quotacheck

    這個命令的主要目的是掃描某個磁盤的配額空間,它會針對分區進行掃描,而且,因爲該磁盤持續運行,可能掃描過程當中文件會增長,形成磁盤配額掃描錯誤,所以,當使用quotacheck時,該磁盤將「自動被設置爲只讀扇區」;掃描完畢後,掃描所得的磁盤空間結果會寫入該區最頂端(aquota.user與aquota.group)

    # quotacheck -cug   //掃描分區,並生成配額信息文件
    
     -a:掃描全部在/etc/mtab內含有磁盤配額支持的文件系統,加上此參數,能夠不寫/mount_point
    
     -v:顯示掃描過程
    
     -u:針對用戶掃描文件與目錄的使用狀況,會創建quota.user
    
     -g:針對組掃描文件及與目錄的使用狀況,會創建quota.group
    
     -c :表明建立

Ps:若是提示不能quotacheck,權限不足,此時的緣由是由於SElinux ,關閉它就能建立了。

  • edquota

    這個文件時編輯每個「用戶」或者「用戶組」的磁盤配額數值。一般咱們以edquota -u username或者是edquota -g groupname來編輯我的與用戶組的磁盤配額值,不過這樣一個一個分配很慢。也能夠直接複製一我的的設置給另一我的。用edquota -p user1 -u user2,下面介紹編輯時,裏面的幾個值。filesystem:表明這個磁盤是針對哪一個分區。blocks:這個是當前用戶在文件系統上所消耗的磁盤數量,也就是當前用戶使用的空間,單位是KB。

    -u:配置用戶的磁盤配額
    
     -g:配置組的磁盤配額
    
     -p:複製磁盤配額設定,從一個用戶到另外一個用戶
    
     -t:修改寬限時間,能夠針對分區
    
     # edquota -u test1                   //配置test1的磁盤配額
    
     # edquota -p test1 -u test2     	 //將test1的配置服務複製到test2
    
     # edquota -t                           //修改寬限時間   能夠針對每一個分區
  • quotaon

    這個命令是啓動磁盤配額,不過,因爲這個命令是啓動aquota.group與aquota.user的,因此必需要先完成quotacheck的工做,而後執行quota -a便可啓動

    -u:針對用戶啓動磁盤配額
    
     -g:針對用戶組啓動磁盤配額
    
     -v:顯示啓動過程的相關信息
    
     -a:根據/etc/mtab內的文件系統設置啓動相關的磁盤配額,若不加-a的話,則後面就須要加上特定的文件系統
    
     #quota -avug            //啓動全部的磁盤配額
    
     #quota -uv /data      //啓動/data裏面的用戶磁盤配額設置
  • quotaoff

    -a:所有文件系統的磁盤配額都關閉
    
     -u:關閉用戶的磁盤配額
    
     -g:關閉組的磁盤配額
    
     #quotaoff -a                //所有關閉
    
     #quotaoff   -u /data     //關閉/data的用戶磁盤配額設置值

參考

http://www.net527.cn/a/caozuoxitong/Linux/2011/0205/16403.html

http://my.oschina.net/eloops/blog/70771

相關文章
相關標籤/搜索