RedHat Linux是眾多Linux發行版本中較流行的一個。這裡結合筆者的使用經驗談談在RedHat Linux下的使用者管理。筆者使用的是RedHat 5.1發行版,核心版本2.2.11,如不作特別說明,下面的操作都是在root 賬戶下完成的。
為普通使用者和使用者組加入磁碟配額限制
Linux的quota程式允許為系統上每一使用者或使用者組指定所能使用的磁碟配額。目前quota僅能工作在ext2類型的檔案系統上。使用quota需要確定以下兩點:
1當前的系統核心支援quota。
2系統已正確安裝quota程式包。
如果你當前的系統核心不支援quota,請重新編譯你的核心,當系統提示:
Quota support(CONFIG—QUOTA)[n]
回答y ,產生新的系統核心。
如果沒有quota程式包,請到以下地址下載quota的來源程式並編譯之。
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz
一般Linux的發行版本的核心都預設包含了quota支援,也附帶了quota 程式包,只需安裝quota 並加以設定便可讓quota工作。
quota的具體設定步驟:
1.編輯系統初始指令碼(RedHat是/etc/rc.d/rc.sysinit,別的發行版可能有所不同)讓它檢查quota並啟用quota。
# Check quota and then turn quota on.
if [ -x /usr/sbin/quotacheck ]
then
echo ″Checking quotas. This may take some time.″
/usr/sbin/quotacheck -avug
echo ″Done.″
fi
if [ -x /usr/sbin/quotaon ]
then
echo ″Turning on quota.″
/usr/sbin/quotaon -avug
fi
在RedHat 5.1版的/etc/rc.d/rc.sysinit檔案中已包含了以上語句,請檢查你自己的系統初始指令檔,沒有就加上。注意必須讓其在/etc/fstab。
2.編輯 /etc/fstab。你的 /etc/fstab 檔案可能會是這樣的:
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /home ext2 defaults 1 1
選擇使用者所在分區所在行的第四個域,為使用者加入 quota支援,如下:
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /home ext2 defaults,usrquota 1 1
如為使用者組加入quota支援,可將usrquota替換為grpquota。
如兩者兼而有之,可將這兩項一併寫入,如下:
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /home ext2 defaults,usrquota,grpquota 1 1
3.建立quota記錄檔案quota.user和quota.group。進入使用者所在分區根目錄,如上例中打入cd /home即可,按下面命令建立檔案:
touch quota.user
touch quota.group
chmod 600 quota.user quota.group
完成上面幾步以後,重新啟動電腦以使設定生效。
4.為使用者或使用者組設定磁碟配額限制。假設在你的系統上有一名為bob 的使用者,現在想給他10MB的硬碟配額限制,他所擁有的最大檔案數不得超過100個。執行edquota -u dquo,系統將進入編輯環境(具體編輯環境視editor變數設定而定),將如下三行:
Quotas for user bob:
/dev/hda2: blocks in use: 14, limits (soft=0, hard=0)
inodes in use: 12, limits (soft=0, hard=0)
改為:
Quotas for user bob:
/dev/hda2: blocks in use: 14, limits (soft=0, hard=10240)
inodes in use: 12, limits (soft=0, hard=100)
其中:
blocks in use:使用者已使用塊的大小,單位是kB。
inodes in use:使用者現有檔案的大小。
這兩項都是系統自動給出,不必改動。
軟式節流(soft limits)
通常設定軟式節流為一接近硬限制的值,超越此限制時,系統將警告使用者將到達最大磁碟配額限制。軟式節流為0 時沒有軟式節流。結合寬限期使用時,只要使用者超越了軟式節流,一過寬限期,任何對磁碟空間的額外需求將被立即拒絕。
硬限制(hard limits)
磁碟配額的絕對限制,設定了quota的使用者不能超越此限制。
寬限期(Grace Period)
寬限期是使用者超越了軟式節流而沒有到達硬限制時的一段放寬期,在這段時間內,使用者可以在硬限制範圍內自由地使用磁碟空間,超過這段時間,所有對磁碟空間的額外需求將被拒絕,即使使用者還在硬限制之內。寬限期的單位可以是秒、分、時、天。執行edquota -t命令設定寬限期。執行該命令後,將系統提示中的兩個0 days 改成你認為合適的值即可。
有時想給一批使用者加上同樣的限制,比方說,給系統上所有100個使用者加上與bob同樣的限制,可手工先給bob加上限制,然後執行下面命令:
edquota -p bob ′awk -F: ′$3 > 499 {print $1}′/etc/passwd′
給使用者組設定磁碟配額限制與普通使用者類似,假設有一使用者組game,執行 edquota -g game即可。
控制使用者的登入地點
檔案/etc/secruity/access.conf可控制使用者登入地點,為了使用access.conf,必須在檔案/etc/pam.d/login中加入下面行:
account required /lib/security/pam—access.so
access.conf檔案的格式:
permission : users : origins
其中:
permission:可以是 “+”或“-”,表示允許或拒絕。
user:可以是使用者名稱、使用者組名,如果是all則表示所有使用者。
origins:登入地點。local表示本地,all表示所有地點,console表示控制台。另外,origins也可以是某一網路。
後面兩個域中加上 except是“除了”的意思。例如:除了使用者wheel、shutdown、sync禁止所有的控制台登入:
-:ALL EXCEPT wheel shutdown sync:console
root賬戶的登入地點不在access.conf檔案中控制,而是由/etc/securetty檔案控制,具體作法一看便知。
限制使用者每次所發郵件大小
Linux系統使用sendmail發送郵件,設定檔是/etc/sendmail.cf,預設使用TCP/IP協議。我們的Linux機器上往往會有多個使用者同時工作,或者乾脆就用它作郵件伺服器,在同一時刻,系統可能要收發很多郵件,因此不能讓某一使用者過多地佔用sendmail的時間。sendmail的預設配置對每次收發郵件的大小沒有限制,更改設定檔/etc/sendmail.cf,找到O MaxMessageSize,去掉行首的#號,並將其後的數值改為一合適的數值,單位為位元組。如:
O MaxMessageSize = 1048576
意為每次收發郵件最大為1MB,任何超過這個值的郵件將被拒絕。