最近幫繫上處理 FreeBSD 機器,要碰到大量建制帳號跟 quota,所以上網找了一下教學,網路上就很多教學了,只不過要懂一些 perl 跟 shell script 的基本觀念,在弄起來會比較方便,時間也會縮短許多。 首先開帳號的話,就是利用 pw 這個指令了,這個裡指令非常強大,可以新增使用者,或者是修改使用者的特性,如登入的 shell,comment….等等 先產生一個 passwd.txt 裡面內容格式就是 “帳號,密碼”,這樣的格式
biomat,"xxxx" biomed,"xxxx" surface,"xxxx" tissue,"xxxx"然後在寫一個 shell 檔去把它讀進來,shell 檔如下:
#!/bin/sh
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
[/code]
然後再來是設定使用者的密碼
[code lang="bash"]
lab_name=($(cut -d ',' -f1 passwd.txt))
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
[/code]
裡面有用到一隻 change_passwd.pl 的 perl 程式如下:
[code lang="perl"]
#!/usr/bin/perl
$PW_COMMAND="pw usermod -n $ARGV[0] -h 0 " ;
$fname="|".$PW_COMMAND ; open(OUT, $fname) ;
print OUT $ARGV[1] ;
close(OUT) ;
[/code]
這樣就完成了建立帳號的動作,不過你有分群組的話,請記得先建立群組
[code lang="bash"]pw groupadd lab[/code]
再來是啟動 Quota 的部份,首先要在 kernel 裡面新增
[code lang="bash"]Options Quota[/code]
然後重新編譯核心,請參考 [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
#!/bin/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 使其開機時自動執行。#設定 User1 的 Quota $ edquota -u User1 #將User1的設定值copy給其他人 $ edquota -p User1 User2,User3,User4,..... #將User1的設定值copy給所有人 $ edquota -p User1 * #檢查所有使用者硬碟使用情形 $ repquota -v -areference:
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
See also
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- 安裝 XCache 加速 PHP 執行速度
- 好用 PHP debug extension Xdebug on FreeBSD 安裝
- 用 cpanm 安裝 Perl 相依性模組
- 2011 OSDC Day 1 筆記
- [FreeBSD] 利用 fsck 指令修復不正常斷電關機
- [網站] 好站連結 (七) Android, javascript, Css, PHP, Perl, FreeBSD, Linux
- ProFTPD UseEncoding 繁體中文亂碼解決 Localization
- [FreeBSD] update apache -> 2.2.15, PHP -> 5.3.2, and MySQL downgrade to 5.1.9
- Apache 取得透過 Reverse Proxy (Varnish) 的 Client 真正 IP (mod_rpaf)