WEB开发网
开发学院操作系统Linux/Unix 充分发挥 sudo 的作用 阅读

充分发挥 sudo 的作用

 2009-11-26 00:00:00 来源:WEB开发网   
核心提示: sudoers 中执行此脚本的条目如下,它们不会缩减任何系统环境变量:bravors6000=(dbinst4)NOPASSWD:/home/dbinst4/sqllib/adm/db2startbravors6000=(dbinst4)NOPASSWD:/home/dbinst4/sqllib

sudoers 中执行此脚本的条目如下,它们不会缩减任何系统环境变量:

bravo   rs6000 = (dbinst4) NOPASSWD: /home/dbinst4/sqllib/adm/db2start 
bravo   rs6000 = (dbinst4) NOPASSWD: /home/dbinst4/sqllib/adm/db2stop force 
bravo   rs6000 = (dbinst4) NOPASSWD: /usr/local/bin/rc.db2 stop db2inst4 
bravo   rs6000 = (dbinst4) NOPASSWD: /usr/local/bin/rc.db2 start db2inst4 

在这个示例中,用户 “bravo” 可以作为用户 “dbinst4” 执行以上命令。通常,这个用户会运行:

sudo -u dbinst4 /usr/local/bin/rc.db2 stop db2inst4 
sudo -u dbinst4 /usr/local/bin/rc.db2 start db2inst4 


清单 1. rc.db2
 
#!/bin/sh 
# rc.db2 
# stop/start db2 instances 
 
# check to see if db2 inst is runningdb2_running(){state=`ps -ef |grep db2sysc 
          |grep -v grep| awk '$1=="'${inst}'" { print $1 }'` 
if [ "$state" = "" ] 
then 
  return 1 
else 
  return 0 
fi} 
 
usage () 
 
{ 
echo "`basename $0` start | stop <instance>" 
} 
 
# stop db2 
stop_db2 () 
{ 
echo "stopping db2 instance as user $inst" 
  if [ -f /home/$inst/sqllib/db2profile ]; then 
    . /home/$inst/sqllib/db2profile 
else 
  echo "Cannot source DB2..exiting" 
exit 1 
fi 
  /home/$inst/sqllib/adm/db2stop force 
} 
 
# start db2 
start_db2 () 
{ 
echo "starting db2 instance as user $inst" 
  if [ -f /home/$inst/sqllib/db2profile ]; then 
    . /home/$inst/sqllib/db2profile 
else 
  echo "Cannot source DB2..exiting" 
exit 1 
fi 
/home/$inst/sqllib/adm/db2start 
} 
 
# check we get 2 params 
if [ $# != 2 ] 
then 
  usage 
  exit 1 
fi 
 
inst=$2 
 
case "$1" in 
Start|start) 
  if db2_running  
    then  
    echo "db2 instance $inst appears to be already running" 
     exit 0 
  else 
    echo " instance not running as user $inst..attempting to start it" 
    start_db2 $inst 
 
    fi 
    ;; 
Stop|stop) 
  if db2_running 
    then 
    echo "instance running as $inst..attempting to stop it" 
    stop_db2 $inst 
  else 
    echo "db2 instance $inst appears to be not running anyway" 
    exit 0 
  fi 
  ;; 
*) usage  
;; 
esac 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:充分 发挥 sudo

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接