<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 在Linux系統中批量建立用戶(hù)的shell

在Linux系統中批量建立用戶(hù)的shell

作者: 時(shí)間:2007-05-08 來(lái)源:網(wǎng)絡(luò ) 收藏
筆者在校園網(wǎng)應用平臺建設中采用了Linux操作系統,為校園網(wǎng)用戶(hù)提供、、、、等服務(wù)。由于我校學(xué)生用戶(hù)數在3000人以上,筆者在建設整個(gè)應用平臺的過(guò)程中特別重視保證用戶(hù)管理效率。我的基本思路和做法是:利用shell為每個(gè)學(xué)生建立一個(gè)系統賬號——即提供一個(gè)E-mail地址(含空間賬號),然后學(xué)生可以憑借其E-mail再注冊論壇用戶(hù)?;谶@樣的管理思路,筆者編寫(xiě)了一個(gè)批量建立用戶(hù)的shell,實(shí)踐證明,利用shell可以有效地管理基于Unix內核的系統用戶(hù)。

  以下是整個(gè)shell的源碼及注釋?zhuān)舜a在Redhat 7.2及Turbo Linux 7.0上調試通過(guò),在其他版本的Linux中使用可能需要做適當的修改。其中“@”部分是代碼注釋?zhuān)?ldquo;()”部分是筆者對于編程思路的解釋。

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

  groupadd users(建立用戶(hù)組)

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

  grade=$1

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

  num_class=`expr $2 + 0`

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

  then

   num_class=0$num_class

  fi

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

  max_stid=`expr $3 + 0`

  @init user id(該班學(xué)生用戶(hù)ID號從1開(kāi)始)

  num_stid =1

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

  if [ ! -x /home/student ]

  then

   mkdir /home/student

  fi

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

  then

   mkdir /home/student/$1$num_class

  fi

  while (test $num_stid -le $max_stid)(從用戶(hù)ID號1開(kāi)始循環(huán),直到最大ID號)

   do

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

   then

   num_stid=0$num_stid

   fi

   user_name=$grade$num_class$num_stid(把年級、班級、學(xué)生ID號三部分代碼組合成用戶(hù)名,并賦予變量user_name)

   @save user passwd to file user_pwlist(按“name:passwd”的格式逐行追加寫(xiě)入“user_pwlist”文件,以備初始化用戶(hù)密碼)

   echo $user_name:$user_name >> user_pwlist

   @add user(建立該用戶(hù),同時(shí)賦予“users”組,創(chuàng )建該用戶(hù)目錄)

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

   @set quota(為該用戶(hù)設置配額,限制最大容量為20MB,沒(méi)有文件數限制)

   setquota -u $user_name 10240 20480 0 0 /home

   @set directory mode(設置該用戶(hù)目錄的權限為755)

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

   @current user id add one(用戶(hù)ID號加1,準備下一次循環(huán),建立下一個(gè)用戶(hù))

   num_stid=`expr $num_stid + 1`

  done

  chpasswd user_pwlist(以下兩行為剛才建立的所有用戶(hù)設置密碼)

  pwconv

  rm user_pwlist -f(刪除“user_pwlist”文件)

  關(guān)于使用:

  1. 用vi編輯器逐行寫(xiě)入以上代碼部分,并以文件的形式保存,如以“addclass”命名保存,再執行以下步驟。

  2. #chmod +x addclass(設置addclass文件為可執行權限)

  3. #./addclass ga 1 50(建立ga0101-ga0150用戶(hù))

  注意:#為提示符。
  
  以上代碼只是筆者在使用shell進(jìn)行系統用戶(hù)管理時(shí)的一點(diǎn)體會(huì )。由于shell可以和Linux的系統命令結合使用,所以它在管理中的功能就顯得非常強大。就以上代碼而言,我們只要稍加改動(dòng),就可以建立刪除批量用戶(hù)的shell、批量配置用戶(hù)配額的shell以及批量初始用戶(hù)密碼的shell。如果再加上一層班級循環(huán)語(yǔ)句,就可以生成一次建立一個(gè)年級用戶(hù)的shell。


關(guān)鍵詞: DNS Apache POP3 SMTP FTP

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>