程德耀 發表於 2008-9-8 18:48:11

UNIX让普通用户具备关机权限的操作方法

<p>在UNIX系统中,超级用户掌握着<a target="_blank" href="#" class="UBBWordLink">系统</a>的所有权限,关机命令也是其中非常重要的一项权限。但在某些情况下,我们非常希望普通用户也能执行关机命令,而不具备其它的超级权限。 <br />
<br />
  为了使普通用户具备关机权限,我们需要创建一个专门进行关机的用户,将它的sh修改为我们指定的关机程序。具体<a target="_blank" href="#" class="UBBWordLink">操作</a>如下: <br />
<br />
  首先,我们在UNIX系统中正常建立一halt用户,在建立时我们可以<a target="_blank" href="#" class="UBBWordLink">设置</a>该用户为无口令用户。然后,用 vi 编辑器修改 /etc/passwd 文件。将我们刚建立的 halt 用户一行的内容修改为: <br />
<br />
  halt:x:0:1:/etc:/etc/halt <br />
<br />
  即该用户具有超级用户权限,但是它的启动目录为/etc,执行的sh为我们指定的可执行程序/etc/halt,该执行文件的内容如下: <br />
<br />
  HALT_TERMINAL=`tty` <br />
<br />
  case &quot;$HALT_TERMINAL&quot; <br />
<br />
  in <br />
<br />
  /dev/tty0|/dev/tty1) <br />
<br />
  w-h | fgrep -v halt &gt; /dev/null <br />
<br />
  if [ $? = 0 ] <br />
<br />
  then <br />
<br />
  clear <br />
<br />
  echo &quot;\n\n\n\n\n\n&quot; <br />
<br />
  setcolor red black <br />
<br />
  echo &quot; [ 普通用户关机程序 ] ** 警告** &quot; <br />
<br />
  setcolor yellow black <br />
<br />
  echo &quot;以下用户未退出<a target="_blank" href="#" class="UBBWordLink">系统</a>无法自动关机。请选择关机方式:\n&quot; <br />
<br />
  echo &quot; 注册用户注册终端号&quot; <br />
<br />
  w -h | fgrep -v halt | awk '{print &quot; &quot; $1 &quot; &quot; $2}' <br />
<br />
  echo &quot; \n\n &quot; <br />
<br />
  echo &quot; 1: 中断关机程序。&quot; <br />
<br />
  echo &quot; 2: <a target="_blank" href="#" class="UBBWordLink">系统</a>强行关闭计算机。(可能会造成数据丢失)\n\n&quot; <br />
<br />
  while true <br />
<br />
  do <br />
<br />
  echo -n &quot; 请选择:&quot; <br />
<br />
  read select <br />
<br />
  if test&quot;$select&quot;= 1 <br />
<br />
  then <br />
<br />
  setcolor white black <br />
<br />
  clear <br />
<br />
  exit 1 <br />
<br />
  else <br />
<br />
  if test &quot;$select&quot;=2 <br />
<br />
  then <br />
<br />
  setcolor white black <br />
<br />
  /etc/haltsys <br />
<br />
  fi <br />
<br />
  fi <br />
<br />
  done <br />
<br />
  else <br />
<br />
  cd /usr/tmp <br />
<br />
  rm -f * <br />
<br />
  cd <br />
<br />
  /etc/haltsys <br />
<br />
  fi <br />
<br />
  echo &quot;\n\n 普通用户关机程序不能在终端上运行!!&quot; <br />
<br />
  esac <br />
<br />
  exit <br />
<br />
  将以上内容用vi编辑器编辑保存为 /etc/halt,并将该文件的权限修改为一般用户可读可执行即可。 <br />
<br />
  这样,一般用户只需在&ldquo;Login:&rdquo;状态下输入halt 用户名,即可实现<a target="_blank" href="#" class="UBBWordLink">系统</a>的自动关闭。当然,若此时<a target="_blank" href="#" class="UBBWordLink">系统</a>中有其它用户尚未退出,则会给出提示信息,而不会自动强行关闭<a target="_blank" href="#" class="UBBWordLink">系统</a>。另外该关机用户在终端上不能关闭<a target="_blank" href="#" class="UBBWordLink">系统</a>,这也提高了<a target="_blank" href="#" class="UBBWordLink">系统</a>的安全性。该<a target="_blank" href="#" class="UBBWordLink">方法</a>在SCO Open UNIX 5.0操作<a target="_blank" href="#" class="UBBWordLink">系统</a>中试验通过。<br />
&nbsp;</p>
&nbsp;
頁: [1]
查看完整版本: UNIX让普通用户具备关机权限的操作方法