免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1966 | 回复: 2
打印 上一主题 下一主题

为何用shell写的cgi不能在web方式下执行系统命令 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-23 13:29 |只看该作者 |倒序浏览
   各位大哥,我学着用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系统操作的权限?

论坛徽章:
0
2 [报告]
发表于 2003-04-23 13:38 |只看该作者

为何用shell写的cgi不能在web方式下执行系统命令 ?

建议在useradd前加上路径.

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
3 [报告]
发表于 2003-04-25 12:31 |只看该作者

为何用shell写的cgi不能在web方式下执行系统命令 ?

权限问题???

不是每个用户都可以使用useradd的,你的CGI脚本是哪个用户编辑的!?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP