2015年4月26日 星期日

批次建立帳號與管理



 多人使用的伺服器的第一個動作就是建立使用者的帳號,可能是學生、也可以是同事,都是多人的狀況下,所以要 利用批次建立的方式,才能達到管理和一致性。

 

第一節 環境與工具

u  適用OSRED HAT , Linux 系列都可以。
u  使用指令:adduser awkchpasswduserdel
u  利用 man adduser 指令可以查詢到一些相關檔案
n   /etc/passwd - user account information
n   /etc/shadow - secure user account information
n   /etc/group - group information
n   /etc/gshadow - secure group information
n   /etc/default/useradd - default information
n   /etc/login.defs - system-wide settings
n   /etc/skel - directory containing default files
u  相關目錄:/etc/skel (如同Windows XP Default User目錄。這個目錄中的所有檔案會複製到user 的家目錄,注意檔案和目錄的屬性 ,權限部份系統會處理,如果想讓 user 有個人網頁的功能,可以配合 apache user_dir 的設定,預先在 /etc/skel 下建好目錄和權限,執行adduser 後就會自動複製到使用者的家目錄。)
u  額外工具:試算表軟體和下面這個產生密碼的公式,(3個小寫字母和3個數字) CHAR(INT(RAND()*26)+97)&CHAR(INT(RAND()*26+97))&CHAR(INT(RAND()*26+97))&CHAR(INT(RAND()*10+48))&CHAR(INT(RAND()*10+48))&CHAR(INT(RAND()*10+48))
註:    EXCELà 貼上時以「選擇性貼上」/「值」的方式。
OpenOffice CALC à 貼上內容/字串

第二節 基本用法

adduser -g users -d /home/st/test1 -s /bin/bash -c ‘姓名1’ tes1
echo test1:abc123 | chpasswd
執行上述兩行指令後,在系統中會增加一個test1 的使用者,
群組屬於users
家目錄在/home/st/test1
使用的shell /bin/bash
user 的資料是姓名1 ‘
密碼是abc123

第三節 想法

如果我們要建立4 user ,從test1test5 ,那就是如下的命令
adduser -g users -d /home/st/test1 -s /bin/bash -c ‘姓名1’ tes1
adduser -g users -d /home/st/test2 -s /bin/bash -c ‘姓名2’ tes2
adduser -g users -d /home/st/test3 -s /bin/bash -c ‘姓名3’ tes3
adduser -g users -d /home/st/test4 -s /bin/bash -c ‘姓名4’ tes4
echo test1:abc123 | chpasswd
echo test2:abc223 | chpasswd
echo test3:abc323 | chpasswd
echo test4:abc423 | chpasswd
以這個例子來說,不一樣的只是帳號、密碼、姓名三者,那我們是不是可以利用如試算表這類的軟體來產生全班或全校的帳號,而密碼部份則可以利用上述的公式加以變化。
再利用awk程式讀取資料檔,幫我們轉成上面的命令,再轉給shell 執行,如此一來,再多的帳號也不怕了。

第四節 做法

[相關檔案]
   muser2.awk => 程式較為完整。
   muser3.awk => 可以幫 user 建立一個個人首頁。請配合 apache 的設定
               /etc/skel 。也可以同時設定 quota smaba 密碼。
   userlist   => 使用者列表, $1 帳號 $2 密碼 $3 中文姓名
[使用方法]
  輸入以下指令
   awk -f muser2.awk userlist | more    /* 先看一下
   awk -f muser2.awk userlist | sh      /* 執行
   awk -f duser.awk userlist | sh       /* userlist 中的USER 刪掉
註:資料檔(userlist) 一般都會從PC 傳到 LINUX 上來執行,請注意編碼。
自製流量統計
html  => 把想計算的網頁或檔案輸入到此檔中。
用法
awk -f log3.awk html | sh


第五節 問題和討論

1.如果我想同時幫USER 建立他們放置個人網頁的目錄呢?
答:如果httpd.conf 中的設定是www(預設是public_html ),請事先到/etc/skel 的目錄下, mkdir wwwmode 就設成711[1] ,至於onwer,在adduser 時就改好了! 甚至也可以先在www 目錄建個index.html ,那麼學生或使用者就不會把這個首頁的檔名打錯了。
user 有個人網頁的功能,除了有個人網頁的設定之外,家目錄最少也要是 711 的設定,可以在建立帳號時利用 chmod 的指令,或者直接修改 /etc/login.defs UMASK 的設定 077 à 066
2.如何快速刪除這些練習的帳號
答:用userdel -r username 這個指令。如果想刪掉多人,就利用上面的例子自己寫一個簡單的shell script 來執行。
3. 已經有一些相關的RPM 套件,為何還要用這種手動的方式。
答:在/etc/passwd 檔中有一個重要的欄位,就是使用者的資料,一般的程式只是重複製造出大量的user 帳號,但這個欄位是空白的,因此用finger 指令或IMP OpenWebmail 時都是空白的,利用現有的工具反而更能得到最大的彈性和需求。所以多用一點時間在準備工作上,日後管理上會有更大的方便。
4. 有無在網頁上修改自己密碼的程式
如果安裝了openwebmail 內建就有給使用者更改密碼的功能。而且有同時修改/etc/shadow smbpasswd 的功能。 修改 etc/auth_unix.conf 中的設定change_smbpasswd yes
Webmin 也有修改的功能。

5. 可否在建帳號的同時,也把使用者的 QUOTA 設好?
答:這是沒問題的,只要預先設定一位範本 user quota ,在建帳號的指令中加入 edquota –p <範本user> <user>  就可以了。
6.可否在建立系統帳號時,同時建立 smbpasswd 的資料?
答:可以的,不過新版(3.0.4)以後的smbpasswd 指令無法直接利用指令增加使用者,不過可以利用shell 的方式,運用檔案或換行字元來解決密碼要輸入兩次的問題。
檔案的方式
echo $PW > tmp
echo $PW >>tmp
cat tmp | smbpasswd -L -a -s $name

換行字元 \n 的方式
echo -e "s101\ns101" | smbpasswd -s -a s101
 

上述的功能已經加入 ftp://www.cses.tc.edu.tw/pub/study/shell.tgz

Samba 3.0.X 之後的版本預設的密碼是 tdbsam 格式,管理程式也必需對使用 pdbedit



[1] User 的家目錄預設是700 ,一定要設成 711 ,才可以讓其他人讀到網頁的資料。

沒有留言:

張貼留言