[FreeBSD] 利用 perl and shell script 大量建制帳號及 Quota
Mar 28th, 2008 by appleboy 參觀者:888Views 機器人:247Views
最近幫系上處理 FreeBSD 機器,要碰到大量建制帳號跟 quota,所以上網找了一下教學,網路上就很多教學了,只不過要懂一些 perl 跟 shell script 的基本觀念,在弄起來會比較方便,時間也會縮短許多。
首先開帳號的話,就是利用 pw 這個指令了,這個裡指令非常強大,可以新增使用者,或者是修改使用者的特性,如登入的 shell,comment....等等
先產生一個 passwd.txt 裡面內容格式就是 "帳號,密碼",這樣的格式
biomat,"xxxx"
biomed,"xxxx"
surface,"xxxx"
tissue,"xxxx"
然後在寫一個 shell 檔去把它讀進來,shell 檔如下:
lab_name=($(cut -d ',' -f1 passwd.txt))
lab_number=${#lab_name[@]}
for (( i=1; i<=$lab_number; i=i+1 ))
do
if [ "${lab_name[$i]}" != "" ]; then
if [ "${i}" -gt 10 ]; then
j="${i}"
else
j="0${i}"
fi
printf "pw useradd -n ${lab_name[$i]} -c Lab${j} -d /home/Lab/Lab${j} -g Lab -s /sbin/nologin -m \n"
fi
done
然後再來是設定使用者的密碼
lab_number=${#lab_name[@]}
lab_password=($(cut -d ',' -f2 passwd.txt))
for (( i=1; i<=$lab_number; i=i+1 ))
do
if [ "${lab_name[$i]}" != "" ]; then
printf "/usr/bin/perl /root/change_passwd.pl ${lab_name[$i]} ${lab_password[$i]} \n"
fi
done
裡面有用到一隻 change_passwd.pl 的 perl 程式如下:
這樣就完成了建立帳號的動作,不過你有分群組的話,請記得先建立群組
pw groupadd lab
再來是啟動 Quota 的部份,首先要在 kernel 裡面新增
Options Quota
然後重新編譯核心,請參考 [FreeBSD] 系統核心支援ipfw 更新kernel
再來修改 /etc/fstab 的部份:
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 2
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw,userquota,groupquota 2 0
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
這樣就可以了,在 /etc/rc.conf 加入
check_quotas="YES"
# 第一次安裝 Quota 時,必須先到要管理硬碟空間的分割區的所屬目錄中執行 quotacheck -avug。
cd /home
quotacheck -avug
# 開機時啟動 Quota
建立 /usr/local/etc/rc.d/quota_on.sh
# Check quota and then turn quota on.
if [ -x /sbin/quotacheck ]
then
echo "Checking quotas. This may take some time."
/sbin/quotacheck -avug
echo " Done."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Turning on quota."
/usr/sbin/quotaon -avug
fi
然後 chmod +x /usr/local/etc/rc.d/quota_on.sh 使其開機時自動執行。
# edquota -u User1
設定 User1 的 Quota
# edquota -p User1 User2,User3,User4,.....
將User1的設定值copy給其他人。
# edquota -p User1 *
將User1的設定值copy給所有人。
# repquota -v -a
#檢查所有使用者硬碟使用情形
完成
reference:
http://www.captain.at/howto-linux-shell-reference.php
http://freebsd.lab.mlc.edu.tw/quotas.shtml
http://www.freebsd.org/doc/en/books/handbook/quotas.html
隨機主題
