手動增長使用者 通常來講,咱們不很建議你們使用手動的方式來新增使用者,爲何呢? 由於使用者的創建涉及到 GID/UID 等權限的關係,並且,與檔案/目錄的權限也有關係, 使用 useradd 能夠幫咱們自動設定好 UID/GID 家目錄以及家目錄相關的權限設定, 可是,手動來增長的時候,有可能會忘東忘西,結果致使一些困擾的發生。 不過,要瞭解整個系統,最好仍是手動來修改過比較好,至少咱們的賬號問題能夠徹底依照本身的意思去修訂, 而沒必要遷就於系統的預設值啊!可是,仍是要告誡一下朋友們,要手動設定賬號時, 您必需要真的很瞭解本身在做什麼,尤爲是與權限有關的設定方面喔! 好吧!底下就讓咱們來玩一玩囉~ ^_^ 一些檢查工具 既然要手動修改賬號的相關設定檔,那麼一些檢查羣組、賬號相關的指令就不可不知道啊~ 尤爲是那個密碼轉換的 pwconv 及 pwuconv 這兩個玩意~可重要的很呢! 底下咱們稍微介紹一下這些指令吧! # pwck pwck 這個指令在檢查 /etc/passwd 這個賬號設定檔內的資訊,與實際的家目錄是否存在等資訊, 還能夠比對 /etc/passwd /etc/shadow 的資訊是否一致,另外, 若是 /etc/passwd 內的資料欄位錯誤時,會提示使用者修訂。 通常來講,我只是利用這個玩意兒來檢查個人輸入是否正確就是了。 [root@linux ~]# pwck user adm: directory /var/adm does not exist user news: directory /etc/news does not exist user uucp: directory /var/spool/uucp does not exist 瞧!上面僅是告知我,這些賬號並無家目錄,因爲那些賬號絕大部分都是系統賬號, 確實也不須要家目錄的,因此,那是‘正常的錯誤!’呵呵!不理他。 ^_^。 相對應的羣組檢查可使用 grpck 這個指令的啦! # pwconv 這個指令主要的目的是在‘將 /etc/passwd 內的賬號與密碼,移動到 /etc/shadow 當中!’ 早期的 Unix 系統當中並無 /etc/shadow 呢,因此,使用者的登入密碼早期是在 /etc/passwd 的第二欄,後來爲了系統安全,纔將密碼資料移動到 /etc/shadow 內的。 使用 pwconv 後,能夠: * 比對 /etc/passwd 及 /etc/shadow ,若 /etc/passwd 內存在的賬號並無對應的 /etc/shadow 密碼時,則 pwconv 會去 /etc/login.defs 取用相關的密碼資料,並創建該賬號的 /etc/shadow 資料; * 若 /etc/passwd 內存在加密後的密碼資料時,則 pwconv 會將該密碼欄移動到 /etc/shadow 內,並將本來的 /etc/passwd 內相對應的密碼欄變成 x ! 通常來講,若是您正常使用 useradd 增長使用者時,使用 pwconv 並不會有任何的動做,由於 /etc/passwd 與 /etc/shadow 並不會有上述兩點問題啊! ^_^。 不過,若是手動設定賬號,這個 pwconv 就很重要囉! # pwunconv 相對於 pwconv , pwunconv 則是‘將 /etc/shadow 內的密碼欄資料寫回 /etc/passwd 當中, 而且刪除 /etc/shadow 檔案。’這個指令說實在的,最好不要使用啦! 由於他會將你的 /etc/shadow 刪除喔!若是你忘記備份,又不會使用 pwconv 的話, 粉嚴重呢! # chpasswd chpasswd 是個挺有趣的指令,他能夠‘讀入未加密前的密碼,而且通過加密後, 將加密後的密碼寫入 /etc/shadow 當中。’這個指令很常被使用在大量建置賬號的狀況中喔! 他能夠由 Standard input 讀入資料,每筆資料的格式是‘ username:password ’。 舉例來講,個人系統當中有個使用者賬號爲 dmtsai ,我想要更新他的密碼 (update) , 假如他的密碼是 abcdefg 的話,那麼我能夠這樣作: [root@linux ~]# echo "dmtsai:abcdefg" | chpasswd 神奇吧!這樣就能夠更新了呢!在預設的狀況中, chpasswd 使用的是 DES 加密方法來加密, 咱們可使用 chpasswd -m 來使用 FC4 預設的 MD5 加密方法,不過, FC4 彷佛怪怪的,我總是沒法使用 -m 來達成這個指令。不管如何, 仍是能夠直接使用 chpasswd 來應用 DES 加密喔! 使用 DES 方法加密後,在 /etc/shadow 的密碼欄內,他的密碼位數爲 13 位, 瞭乎?? 小標題的圖示特殊賬號,如純數字賬號的創建 在咱們瞭解了 UID/GID 與賬號的關係以後,基本上,您應該瞭解了,爲啥咱們不建議使用純數字的賬號了! 由於不少時候,系統會搞不清楚那組數字是‘賬號’仍是‘UID’,這不是很好啦~ 也所以,在早期某些版本底下,是沒有辦法使用數字來創建賬號的。例如在 Red Hat 9 的環境中, 使用‘ useradd 1234 ’他會顯示‘ useradd: invalid user name '1234' ’呼呼!瞭解了嗎?! (不過,這個問題在 FC4 卻不存在!由於 FC4 能夠創建純數字的賬號說~) 不過,有的時候,長官的命令難爲啊~有時仍是得要創建這方面的賬號的,那該如何是好? 呵呵!固然能夠手動來創建這樣的賬號啦!不過,爲了系統安全起見,鳥哥仍是不建議使用純數字的賬號的啦! 所以,底下的範例當中,咱們使用手動的方式來創建一個名爲 normaluser 的賬號, 並且這個賬號屬於 normalgroup 這個羣組。OK!那麼整個步驟該如何是好呢? 由前面的說明來看,您應該瞭解了賬號與羣組是與 /etc/group, /etc/shadow, /etc/passwd, /etc/gshadow 有關,所以,整個動做是這樣的: 1. 先創建所須要的羣組 ( vi /etc/group ); 2. 將 /etc/group 與 /etc/gshadow 同步化 ( grpconv ); 3. 創建賬號的各個屬性 ( vi /etc/passwd ); 4. 將 /etc/passwd 與 /etc/shadow 同步化 ( pwconv ); 5. 創建該賬號的密碼 ( passwd accountname ); 6. 創建使用者家目錄 ( cp -a /etc/skel /home/accountname ); 7. 更改使用者家目錄的屬性 ( chown -R accountname.group /home/accountname )。 夠簡單的咯吧!讓咱們來玩一玩囉~ 1. 創建羣組 normalgroup ,假設 520 這個 GID 沒有被使用!而且同步化 gshadow [root@linux ~]# vi /etc/group # 在最後一行加入底下這一行! normalgroup:x:520: [root@linux ~]# grpconv [root@linux ~]# grep 'normalgroup' /etc/group /etc/gshadow /etc/group:normalgroup:x:520: /etc/gshadow:normalgroup:x:: # 簡單!搞定羣組囉! ^_^ 2. 創建 normaluser 這個賬號,假設 UID 700 沒被使用掉! [root@linux ~]# vi /etc/passwd # 在最後一行加入底下這一行! normaluser:x:700:520::/home/normaluser:/bin/bash 3. 同步化密碼,而且創建該使用者的密碼 [root@linux ~]# pwconv [root@linux ~]# grep 'normaluser' /etc/passwd /etc/shadow /etc/passwd:normaluser:x:700:520::/home/normaluser:/bin/bash /etc/shadow:normaluser:x:13030:0:99999:7::: # 呵呵!沒錯沒錯!已經創建穩當囉~可是密碼還不對~ [root@linux ~]# passwd normaluser Changing password for user normaluser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. 4. 創建使用者家目錄,而且修訂權限! [root@linux ~]# cp -a /etc/skel /home/normaluser [root@linux ~]# chown -R normaluser:normalgroup /home/normaluser 別懷疑!這樣就搞定了一個賬號的設定了! 今後之後,你能夠創建任何名稱的賬號囉~不過,仍是不建議您設定一些很怪很怪的賬號名稱啦! 小標題的圖示不開放終端機登入的賬號 (ex>mail acccount) 剛剛咱們上面創建的這個賬號是‘能夠登入系統的賬號’,若是想要創建一個不能登入系統的賬號, 例如單純使用郵件收發信件而已的賬號,那麼又該如何設定呢?很簡單啦~ 你能夠這樣想: * 由於不須要登入系統,因此建議 shell 欄位給予 /sbin/nologin ; * 由於不須要登入,因此家目錄也能夠先不創建。 也就是說,其實全部的步驟與剛剛上頭提到的動做都同樣,不過,少掉了不少與家目錄有關的設定行爲就是了。 底下我假設個人系統裏面有個叫作 mail 的羣組 (/etc/group) ,他的 GID 是 12 (以 FC4 爲例), 另外,這個使用者的賬號爲 popuser ,假設 UID 爲 720 ,那麼該如何創建呢? 1. 修改賬號屬性 [root@linux ~]# vi /etc/passwd popuser:x:720:12::/home/popuser:/sbin/nologin 2. 密碼同步,而且給予密碼! [root@linux ~]# pwconv [root@linux ~]# passwd popuser 這樣就又 OK 了~哇!真是太簡單了傑克~.... 那麼又該如何刪除這些賬號呢?啊!仍是建議利用 userdel 啦~簡單~乾脆又俐落~ 若是想要暫時移除而已的話,那麼利用 passwd -l 及 passwd -u 吧! ^_^。 若是真的那麼想要手動來移除這個賬號的話,就這樣作: 1. 先以 find / -user account 找出全部的賬號檔案,並將他刪除; 2. 將 /etc/passwd 與 /etc/shadow 的相關資料刪除; 3. 將 /etc/group 及 /etc/gshadow 相關資料刪除; 4. 將 /home 底下關於該賬號的目錄刪除; 5. 到 /var/spool/mail 以及 /var/spool/cron 裏面將相關的使用者檔案刪除。 這樣就手動刪除啦~ 一個大量建置賬號的範例 不要懷疑,不少時候,咱們均可能須要大量的建置賬號的, 舉例來講,學校要幫同窗創建他們的賬號,那就極可能須要啦~ 通常來講,創建賬號要進行的前制工做不少,包括要創建賬號名稱與該賬號的密碼對應表~ 這個是最討厭的啦~並且還要決定須要使用哪個羣組~呼呼~好討厭的感受那~ 目前不少網站都有提供大量創建賬號的工具,例如臺南縣網中心的臥龍大師: http://linux.tnc.edu.tw/techdoc/howto/howtouse_cmpwd.htm 提供的好用的 cmpwd 程式, 不過,其實咱們也能夠利用簡單的 script 來幫咱們達成喔!例如底下這支程式, 他的執行結果與臥龍大師提供的程式差很少啦~ 可是由於我是直接以 useradd 來新增的, 因此,即便不瞭解 UID ,也是能夠適用的啦~ 整支程式的特點是: * 預設不容許使用純數字方式創建賬號; * 可加入年級來區分賬號; * 可設定賬號的起始號碼與賬號數量; * 有兩種密碼創建方式,能夠與賬號相同或程式自行以亂數創建密碼檔。 執行方法也簡單的要命~請自行參考的啦!再也不多說~ 使用時請注意,不要在公家使用的主機上面進行測試,由於..... 這支程式會大量創建賬號嘛!^_^ #!/bin/bash # # 這支程式主要在幫您創建大量的賬號之用, # 更多的使用方法請參考: # http://linux.vbird.org/linux_bas ... r.php#manual_amount # # 本程式爲鳥哥自行開發,在 FC4 上使用沒有問題, # 但不保證毫不會發生錯誤!使用時,請自行負擔風險~ # # History: # 2005/09/05 VBird 剛剛纔寫完,使用看看先~ PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH accountfile="user.passwd" # 1. 進行賬號相關的輸入先! read -p "賬號開頭代碼 ( Input title name, ex> std )======> " username_start read -p "賬號層級或年級 ( Input degree, ex> 1 or enter )=> " username_degree read -p "起始號碼 ( Input start number, ex> 520 )========> " nu_start read -p "賬號數量 ( Input amount of users, ex> 100 )=====> " nu_amount read -p "密碼標準 1) 與賬號相同 2)亂數自訂 ==============> " pwm if [ "$username_start" == "" ]; then echo "沒有輸入開頭的代碼,不給你執行哩!" ; exit 1 fi testing1=`echo $nu_amount | grep '[^0-9]' ` testing2=`echo $nu_start | grep '[^0-9]' ` if [ "$testing1" != "" ] || [ "$testing2" != "" ]; then echo "輸入的號碼不對啦!有非爲數字的內容!" ; exit 1 fi if [ "$pwm" != "1" ]; then pwm="2" fi # 2. 開始輸出賬號與密碼檔案! [ -f "$accountfile" ] && mv $accountfile "$accountfile"`date +%Y%m%d` nu_end=$(($nu_start+$nu_amount-1)) for (( i=$nu_start; i<=$nu_end; i++ )) do account=$username_start$username_degree$i if [ "$pwm" == "1" ]; then password="$account" else password="" test_nu=0 until [ "$test_nu" == "8" ] do temp_nu=$(($RANDOM*50/32767+30)) until [ "$temp_nu" != "60" ] do temp_nu=$(($RANDOM*50/32767+30)) done test_nu=$(($test_nu+1)) temp_ch=`printf "\x$temp_nu"` password=$password$temp_ch done fi echo "$account":"$password" | tee -a "$accountfile" done # 3. 開始創建賬號與密碼! cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd -m chpasswd < "$accountfile" pwconv echo "OK!創建完成!" 這支程式能夠在底下連結下載: http://linux.vbird.org/download/index.php?action=download&fileid=70 |