Chinaunix

标题: 为何用shell写的cgi不能在web方式下执行系统命令 ? [打印本页]

作者: wolfwolfss    时间: 2003-04-23 13:29
标题: 为何用shell写的cgi不能在web方式下执行系统命令 ?
   各位大哥,我学着用shell写了添加主页用户的cgi,文件名 user.cgi,我的想法是把表单传过来的帐号和密码作为变量传入shell,直接添加用户到系统。

脚本成功读取了表单变量,却始终无法执行系统命令(比如useradd),这是为何?是不是不能直接在user.cgi里引用 useradd这个命令?
我的user.cgi脚本如下:

#!/bin/sh
echo "Content-type:text/html"
echo ""
echo "<html><pre><h2>主页申请</h2>"
line=`echo $QUERY_STRING | sed 's/&/ /g'`
for loop in $line
do
name=`echo $loop | sed 's/=/ /g' |awk '{print $1}'`
type=`echo $loop | sed 's/=/ /g' | awk '{print $2}' | sed -e 's/%\(\)/\\\x/g' | sed 's/+/ /g'`
#printf "${name}=${type}\n"
vars=`printf "${name}=\\${type}\n"`
eval `printf $vars`
done
echo "<hr>"
#以下系统命令全部没有执行,$account和$password变量已经确认读取成功
useradd -g 517 $account -p $password
edquota -p php $account
cd /usr/myweb/
chmod 777 $account/*
echo "主页地址: <a href=http://www.myweb.com/~$account target=_blank>http://www.myweb.com/~$account</a><br>"

在web下运行user.cgi脚本,能显示account 和password变量,但所有的系统命令均未执行,把脚本属性设为4755也不行,不知错在哪里?会不会跟apache执行路径设置有关?请大侠指教。

apache logs中显示以下错误:

/home/apache/mycgi/user.cgi: useradd: command not found
/home/apache/mycgi/user.cgi: edquota: command not found

看起来好象user.cgi无法执行useradd 和edquota 两个系统命令,为什么呢?是不是cgi权限不够?如何赋予cgi系统操作的权限?
作者: j_zou    时间: 2003-04-23 13:38
标题: 为何用shell写的cgi不能在web方式下执行系统命令 ?
建议在useradd前加上路径.
作者: feeling    时间: 2003-04-25 12:31
标题: 为何用shell写的cgi不能在web方式下执行系统命令 ?
权限问题???

不是每个用户都可以使用useradd的,你的CGI脚本是哪个用户编辑的!?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2