当前位置: 技术问答>linux和unix
用shell写的cgi程序无法执行系统中的一些命令
来源: 互联网 发布时间:2016-10-19
本文导语: 我用shell写的cgi程序如下 #!/bin/sh echo "" echo "" echo "" echo "" ls -l mkdir a dnsmasq #是一个自己写的可执行程序 echo "" 在程序中,程序单独是可以运行的,同时ls -l和mkdir a都可以执行,但是dnsmasq这个是无法执行的,...
我用shell写的cgi程序如下
#!/bin/sh
echo ""
echo ""
echo ""
echo ""
ls -l
mkdir a
dnsmasq #是一个自己写的可执行程序
echo ""
在程序中,程序单独是可以运行的,同时ls -l和mkdir a都可以执行,但是dnsmasq这个是无法执行的,找了一些网页,说在shell中有一些命令是需要权限的,我现在的身份和用户组都是root,同时dnsmasq也是属于root的,另外在apache中user 是daemon,group也是daemon,我曾经修改过2者,修改为root但是依然无法启动dnsmasq,不知道大家有没有遇到过类似的问题,对了,还有像reboot这样的命令也不能执行
#!/bin/sh
echo ""
echo ""
echo ""
echo ""
ls -l
mkdir a
dnsmasq #是一个自己写的可执行程序
echo ""
在程序中,程序单独是可以运行的,同时ls -l和mkdir a都可以执行,但是dnsmasq这个是无法执行的,找了一些网页,说在shell中有一些命令是需要权限的,我现在的身份和用户组都是root,同时dnsmasq也是属于root的,另外在apache中user 是daemon,group也是daemon,我曾经修改过2者,修改为root但是依然无法启动dnsmasq,不知道大家有没有遇到过类似的问题,对了,还有像reboot这样的命令也不能执行
|
跟你改apche的设置什么的没关系 访问web的一切用户的身份都是nobody!
有一个方法可以实现 那就是setuid 你可以试试 但是这样使用会非常危险
比如你的cgi的叫xxxxx.cgi 执行如下命令
chown root:root xxxxx.cgi
chmod 4775 xxxxxx.cgi
然后访问者就可以执行这个cgi了!
有一个方法可以实现 那就是setuid 你可以试试 但是这样使用会非常危险
比如你的cgi的叫xxxxx.cgi 执行如下命令
chown root:root xxxxx.cgi
chmod 4775 xxxxxx.cgi
然后访问者就可以执行这个cgi了!