[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
讓UNIX普通用戶具備關機權限
本文出自: http://tech.china.com/zh_cn/ 作者:焦讚康 (2001-06-20 18:08:01)
  在UNIX系統中,超級用戶掌握著系統的所有權限,關機命令也是其中非常重要的一項權限。但在某些情況下,我們非常希望普通用戶也能執行關機命令,而不具備其它的超級權限。 

  為了使普通用戶具備關機權限,我們需要創建一個專門進行關機的用戶,將它的sh修改為我們指定的關機程序。具體操作如下: 

  首先,我們在UNIX系統中正常建立一halt用戶,在建立時我們可以設置該用戶為無口令用戶。然,用 vi 編輯器修改 /etc/passwd 文件。將我們剛建立的 halt 用戶一行的內容修改為: 

  halt:x:0:1:/etc:/etc/halt 

  即該用戶具有超級用戶權限,但是它的啟動目錄為/etc,執行的sh為我們指定的可執行程序/etc/halt,該執行文件的內容如下: 

  HALT_TERMINAL=`tty` 

  case "$HALT_TERMINAL" 

  in 

  /dev/tty0[1-9]|/dev/tty1[012]) 

  w-h | fgrep -v halt > /dev/null 

  if [ $? = 0 ] 

  then 

  clear 

  echo "nnnnnn" 

  setcolor red black 

  echo " [ 普通用戶關機程序 ] ** 警告** " 

  setcolor yellow black 

  echo "以下用戶未退出系統無法自動關機。請選擇關機方式:n" 

  echo " 注冊用戶注冊終端號" 

  w -h | fgrep -v halt | awk ‘{print " " $1 " " $2}‘ 

  echo " nn " 

  echo " 1: 中斷關機程序。" 

  echo " 2: 系統強行關閉計算機。(可能會造成數據丟失)nn" 

  while true 

  do 

  echo -n " 請選擇:" 

  read select 

  if test"$select"= 1 

  then 

  setcolor white black 

  clear 

  exit 1 

  else 

  if test "$select"=2 

  then 

  setcolor white black 

  /etc/haltsys 

  fi 

  fi 

  done 

  else 

  cd /usr/tmp 

  rm -f * 

  cd 

  /etc/haltsys 

  fi 

  echo "nn 普通用戶關機程序不能在終端上運行!!" 

  esac 

  exit 

  將以上內容用vi編輯器編輯保存為 /etc/halt,並將該文件的權限修改為一般用戶可讀可執行即可。 


  這樣,一般用戶只需在“Login:”狀態下輸入halt 用戶名,即可實現系統的自動關閉。當然,若此時系統中有其它用戶尚未退出,則會給出提示信息,而不會自動強行關閉系統。另外該關機用戶在終端上不能關閉系統,這也提高了系統的安全性。該方法在SCO Open UNIX 5.0操作系統中試驗通過。

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★