歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

解決Linux下批量添加大量賬戶的問題

方法一: 一個系統管理者日常最常處理的工作便是管理使用者帳號了,包含增加和減少使用者、配置硬盤配額、開啟個人首頁等等,而在系統建置的初期面對要增加大量使用者而要回答adduser(useradd)的一些相關使用者信息便常要浪費相當多時間,況且又沒有留下相關
  方法一:
  一個系統管理者日常最常處理的工作便是管理使用者帳號了,包含增加和減少使用者、配置硬盤配額、開啟個人首頁等等,而在系統建置的初期面對要增加大量使用者而要回答adduser(useradd)的一些相關使用者信息便常要浪費相當多時間,況且又沒有留下相關的記錄,常讓系統管理者痛苦不已,更別說後續的管理動作了。
  pdadduser正可以解決這種困擾,不僅可以依需要快速方便建立大量使用者帳號,使用者的密碼可以是采隨機或指定的方式組成,而帳號、UID、家目錄都可由系統管理者自行選擇設定,並可以搭配相關指令使用,深具彈性,並留有相關的記錄,可以大量減輕管理者負擔。筆者在本文中將使用簡單的范例來說明在Linux和FreeBSD這兩套系統下的使用方式,更詳細的說明可以參考http://ghs.ssd.k12.wa.us/~pdavis/。
  
  安裝
  pdadduser目前最新的版本是1.2,但是經筆者測試,某些系統1.2版並無法執行,此時請改用1.1版〔筆者均mirror於http://mouse.oit.edu.tw/sources/pdadduser〕,此外由Linux和FreeBSD這兩套系統下建立使用者帳號並不盡相同,所以筆者將分兩部分說明。
  
  1.1 Linux 安裝
  step 1. tar xvfz pdadduser-1.2.tar.gz ← 解壓縮Pdadduser軟件
  step 2. cd pdadduser-1.2 ← 切換到pdadduser-1.2目錄中
  step 3. make ← 編輯pdadduser
  step 4. gcc pause.c –o pause ← 有時該檔會有問題,所以編輯一下
  當產生pdadduser, pause 這兩個可執行檔即可。
  
  1.2 FreeBSD 安裝
  step 1. tar xvfz pdadduser-1.1.tar.gz ← 解壓縮Pdadduser軟件
  step 2. cd pdadduser-1.1 ← 切換到pdadduser-1.2目錄中
  step 3. gcc –Wall –I- -I. pdadduser –o pdadduser ← 編輯pdadduser
  step 4. gcc pause.c –o pause ←編輯 pause
  當產生pdadduser, pause 這兩個可執行檔即可。
  
  2 指令格式
  pdadduser完整的指令格式如下,筆者在本文中僅作簡單的說明,更詳細的使用方式請參考解開的README。
  pdadduser -n [-f ] [-F ] [-o ] [-h home-directory-format>] [-g ] [-r ] [-p ] [-t] [-d] -c 'COMMAND1' ['COMMAND2' ...]
  選項說明:
  -n :使用者清單的文字文件檔案,這是必需的,例如檔案內容如下所示:
  Peter Davis
  Joe Schmoe
  Jane Doe
  -f :使用者名稱的組合格式,格式定義如下:
  $n:第n個字(起始字是 $0),如果不存在則忽略
  %x.n:第n個字中第x個字符,如果不存在則忽略
  例如 '%0.0$1' 是取第0個字中第0個字符和第1個字組合而成(預設也是如此),所以套用上面范例取得的使用者名稱分別是 `pdavis', `jschmoe', `jdoe';'%3.0$1' 是取第0個字中第3個字符和第1個字組合而成,所以套用上面范例取得的使用者名稱分別是 'edavis', 'schmoe', 'edoe'。
  -F :使用者全名的組合格式,格式定義和 -f 相同,例如 '$0 $1' 是取第0個字空格和第1個字組合而成(預設也是如此),所以套用上面范例取得的使用者全名分別是 'Peter Davis', "Joe Schmoe', 'Jane Doe';而'%0.0. $1' 取得的是 'P. Davis', 'J. Schmoe', 'J. Doe'。
  -o :輸出檔案,包含使用者名稱、密碼和錯誤訊息等,請務必放置安全的地方,當然有此檔案則系統管理者應可玩出一些把戲才是。如果輸出檔名為 '-' 則僅自屏幕輸出,筆者並不建議使用。此外錯誤訊息如 '!2!!235!' 等,請見下面范例,可以提醒管理者注意。
  -h :使用者家目錄格式,首先定義ㄧ些特殊字符如下:
  u:使用者名稱
  g:使用者群組
  f:使用者全名
  使用者家目錄格式,格式定義如下:
  $:整個字
  %n:字中第n個字符
  例如 '/home/$g/$u' 依上例是 '/home/users/pdavis';假設使用者名稱是 'S9351033',家目錄希望是'/home/users/S/93/S9351033',則格式應為 '/home/users/%0u/%1u%2u/$u'。預設格式是 '/home/$u'。
  -g :使用者群組。
  -r :UID范圍,預設是500到1000。
  -p :預設是系統隨機數產生,當然也可自訂,如 %xr 為隨機數產生 r 個字符,預設是 6 個字符。
  -t:測試模式,並不真正增加使用者。
  -d:除錯模式,可看到每一指令的執行過程。
  -c 'COMMAND1' ['COMMAND2' ...]:這是pdadduser最重要的部份,也就是pdadduser提供相關的參數給COMMAND執行,詳細的范例在下。其中參數如下:
  $u:使用者名稱
  $p:使用者密碼
  $i:使用者UID
  $g:使用者群組
  $f:使用者全名
  $d:使用者家目錄
  
  3 執行
  在了解指令的參數之後,我們便可以利用pdadduser來新增使用者了,但由於Linux和FreeBSD稍有不同,筆者分別說明之。
  
  3.1 Linux
  首先建立使用者清單的文字文件檔案,范例如上,取名 userlists;另外筆者也建立一個shell可執行檔,內容如下,取名 pda4linux
  ./pdadduser -n $1 -o $2 -g users -d -c '/usr/sbin/adduser -c "$f" -u $i -g $g -d $d $u' '(printf "$p"; ./pause 1; printf "$p") | /usr/bin/passwd $u;' 'mkdir $d/public_html' 'cp index.html.samp $d/public_html/index.html' 'chown -R $u.$g $d/public_html' 'chmod 755 $d' 'edquota -p shie $u'
  pda4linux執行檔的意思是,'/usr/sbin/adduser -c "$f" -u $i -g $g -d $d $u' 增加使用者,'(printf "$p"; ./pause 1; printf "$p") | /usr/bin/passwd $u;' 變更使用者密碼,'mkdir $d/public_html' 'cp index.html.samp $d/public_html/index.html' 'chown -R $u.$g $d/public_html' 'chmod 755 $d',制作個人首頁,'edquota -p shie $u' 復制shie的Quota樣板。
  當然pda4linux是要修改才可以用到你的系統的,如中的index.html.samp, shie 等等。執行的格式如下:
  ./pda4linux 使用者清單 輸出檔案
  如:
  ./pda4linux userlists accounts
  執行第一次pda4linux觀看輸出檔案 accounts內容如下:
  Peter Davis: name=pdavis passwd=aacuug group=users uid=500 homedir=/home/pdavis
  Joe Schmoe: name=jschmoe passwd=ogyjwm group=users uid=501 homedir=/home/jschmoe
  Jane Doe: name=jdoe passwd=appymj group=users uid=502 homedir=/home/jdoe
  再執行ㄧ次後,再觀察輸出檔 accounts 內容如下:
  Peter Davis: name=pdavis passwd=aacuug group=users uid=500 homedir=/home/pdavis
  Joe Schmoe: name=jschmoe passwd=ogyjwm group=users uid=501 homedir=/home/jschmoe
  Jane Doe: name=jdoe passwd=appymj group=users uid=502 homedir=/home/jdoe
  !1!!256! Peter Davis: name=pdavis passwd=dedrnm group=users uid=503 homedir=/home/pdavis
  !1!!256! Joe Schmoe: name=jschmoe passwd=hfyhoy group=users uid=503 homedir=/home/jschmoe
  !1!!256! Jane Doe: name=jdoe passwd=ueixrd group=users uid=503 homedir=/home/jdoe
  由此可知此時新增使用者是會有問題的,問題當然是重復了,而有時密碼產生的太簡單時也是會有問題的,再次提醒一次請務必該檔放置安全的地方。
  
  方法二、
  自動建立帳號--中小學網管者的救星來了(一)
  A:使用環境:RedHat Linux+cle
  1.先把檔案抓回去![請按這裡](http:/.netlab.kh.edu.tw/download/建帳號工具.zip )
  2.以root權限進入linux
  3.將解開的檔案放到一個新建的 /work 目錄
  4. cd /work [進入 work目錄]
  5.chmod 700 * [將所有script文件屬性改為 -rwx------]
  6.更改 /etc/profile裡的敘述
  PATH="$PATH:/usr/X11R6/bin" 改為
  PATH="$PATH:/usr/X11R6/bin:/usr/sbin"
  存盤後離開系統再重新以root登入
  7. #./cmenu 執行script檔
  8.選[1]自動建立帳號
  9.選[3]產生全校帳號
  10.您需求的規則: 例如英文字母:stu ,最低年級:1 , 最高年級:6 , 每一年級的班級數目: 9, 每一班學生人數:50, 然後就會以:群組+年級+班級+座號的規則建立帳號,但目前尚無密碼,也無法收發E-mail,請回到主選單繼續.
  11.在主選單中選[4]批次更改使用者密碼(二)
  12.輸入群組名稱:stu , 其它請依說明操作,最後會產生一個pwtemp檔,內容是使用者帳號以及群組+四位數密碼.
  (參考資料:RedHat Linux隨裝即用.賴阿福.高健智著,松崗)
  
  自動建立帳號--中小學網管者的救星來了(二)
  A:接下來說明如何自動產生帳號通知單.
  1.將產生的pwtemp文件拷貝到Win98或WinNT上
  2.使用Excel或Access的匯入功能匯入到資料表中並分字段如編號、姓名、帳號、密碼.
  3.回到Word裡開啟新文件.
  4.使用工具->合並打印
  5.簡單格式如下: >等代表合並之字段
  高雄市和平國小電子郵件帳號分配通知單
  使用者姓名:> 配發日期:1999/9/15
  E-mail:>@mail.hpps.kh.edu.tw
  服務器信息:
  內送郵件→POP3 :mail.hpps.kh.edu.tw
  外寄郵件→SMTP :mail.hpps.kh.edu.tw
  內送郵件服務器帳號:> 密碼:>
  
  6.合並完會產生一份新文件,您可以檢查結果是否正確.

Copyright © Linux教程網 All Rights Reserved