在Linux中批量建立使用者的shell

來源:互聯網
上載者:User

  最近,筆者在校園網應用平台建設中採用了Linux作業系統,為校園網使用者提供DNS、Apache、POP3、SMTP、FTP等服務。由於我校學生使用者數在3000人以上,筆者在建設整個應用平台的過程中特別重視保證使用者管理效率。我的基本思路和做法是:利用shell為每個學生建立一個系統帳號——即提供一個E-mail地址(含FTP空間帳號),然後學生可以憑藉其E-mail再註冊論壇使用者。基於這樣的管理思路,筆者編寫了一個批量建立使用者的shell,實踐證明,利用shell可以有效地管理基於Unix核心的系統使用者。

  以下是整個shell的源碼及注釋,此代碼在Redhat 7.2及Turbo Linux 7.0上調試通過,在其他版本的Linux中使用可能需要做適當的修改。其中“@”部分是代碼注釋,“()”部分是筆者對於編程思路的解釋。

  @!/bin/sh(定義使用sh shell)

  groupadd users(建立使用者組)

  @grade code(定義第一個參數為年級代碼,賦予變數“grade”)

  grade=$1

  @class code(定義第二個參數為班級代碼,賦予變數“num_class”)

  num_class=`expr $2 + 0`

  if (test $num_class -le 9)(以下代碼是為了保證班級碼的位元為兩位)

  then

   num_class="0"$num_class

  fi

  @max user id(定義第三個參數為該班學生的最大ID號,賦予變數“max_stid”)

  max_stid=`expr $3 + 0`

  @init user id(該班學生使用者ID號從1開始)

  num_stid =1

  @mkdir user home(在“/home”目錄為所有學生建立名為"student"的公用目錄)

  if [ ! -x /home/student ]

  then

   mkdir /home/student

  fi

  if [ ! -x /home/student/$1$num_class ] (在學生公用目錄下為每個班級建立以該班代碼命名的目錄)

  then

   mkdir /home/student/$1$num_class

  fi

  while (test $num_stid -le $max_stid)(從使用者ID號1開始迴圈,直到最大ID號)

   do

   if (test $num_stid -le 9) (以下保證學生代碼的位元為兩位)

   then

   num_stid="0"$num_stid

   fi

   user_name=$grade$num_class$num_stid(把年級、班級、學生ID號三部分程式碼群組合成使用者名稱,並賦予變數user_name)

   @save user passwd to file user_pwlist(按“name:passwd”的格式逐行追加寫入“user_pwlist”檔案,以備初始化使用者密碼)

   echo $user_name":"$user_name >> user_pwlist

   @add user(建立該使用者,同時賦予“users”組,建立該使用者目錄)

   adduser -g users -d /home/student/$1$num_class/$user_name $user_name

   @set quota(為該使用者佈建配額,限制最大容量為20MB,沒有檔案數限制)

   setquota -u $user_name 10240 20480 0 0 /home

   @set directory mode(設定該使用者目錄的許可權為755)

   chmod 755 /home/student/$1$num_class/$user_name

   @current user id add one(使用者ID號加1,準備下一次迴圈,建立下一個使用者)

   num_stid=`expr $num_stid + 1`

  done

  chpasswd < user_pwlist(以下兩行為剛才建立的所有使用者佈建密碼)

  pwconv

  rm user_pwlist -f(刪除“user_pwlist”檔案)

  

  關於使用:

  1. 用vi編輯器逐行寫入以上代碼部分,並以檔案的形式儲存,如以“addclass”命名儲存,再執行以下步驟。

  2. #chmod +x addclass(設定addclass檔案為可執行許可權)

  3. #./addclass ga 1 50(建立ga0101-ga0150使用者)

  注意:#為提示符。

  

  以上代碼只是筆者在使用shell進行系統使用者管理時的一點體會。由於shell可以和Linux的系統命令結合使用,所以它在管理中的功能就顯得非常強大。就以上代碼而言,我們只要稍加改動,就可以建立刪除批量使用者的shell、大量設定使用者配額的shell以及批量初始使用者密碼的shell。如果再加上一層班級迴圈語句,就可以產生一次建立一個年級使用者的shell。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.