最近幫繫上處理 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)