关于SUEXEC的使用笔记!

这几天一直在尝试使用suexec模块来分离每个虚拟主机的用户操作(又是无数次的失败经历!)(T0T),终于发现问题的所在了。主要还是目录的设置和用户权限问题。因为我使用的是ubuntu发行版本,所以下面的步骤主要还是APT的安装方式。

一、安装APACHE

使用APT的安装方式,这里不再重复,需要说明的是使用suexec模块必须在cgi/fastcgi模式下才能使用,具体步骤可以查看我的BLOG相关文章,然后是加在suexec模块,顺便把userdir模块一同加载。

二、检查APACHE和suexe的版本和配置信息

因为在后续的操作中许多内容需要进行手动调整所以我把这块独立出来说明。

1、检查apache的版本命令,主要是检查apache是否已经开启了suexec模块

apache2 -V

出现如下信息:

Server version: Apache/2.2.8 (Ubuntu)
Server built:   Jun 25 2008 13:50:52
Server is Module Magic Number: 20051115:11
Server loaded:  APR 1.2.11, APR-Util 1.2.12
Compiled using: APR 1.2.11, APR-Util 1.2.12
Architecture:   32-bit
Server MPM:     Worker
threaded:     yes (fixed thread count)
forked:     yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/worker"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=""
-D SUEXEC_BIN="/usr/lib/apache2/suexec" <-重点在这里
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

2、查看suexec的相关信息,命令如下:

/usr/lib/apache2/suexec -V

结果如下:

-D AP_DOC_ROOT="/var/www"  <-说明虚拟主机目录已经锁定在这
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"

注意:上面内容说明部分意思是,suexec控制的目录环境必须是在编译前就这是好的,如果使用apt来安装目录铁定被锁在这里了,如果想改的话那只有自行去编译apache2进行安装。

三、修改虚拟主机的配置文件(假设test目录拥有者是组gtest中的utest用户)

1、因为使用suexec必须使用指定的用户来执行CGI所以,我们必须在虚拟主机的目录下创建一个cgi-bin的目录,并且把CGI的执行程序PHP5文件CP到该目录中来:

mkdir /var/www/test/cgi-bin/
cp /usr/lib/cgi-bin/  /var/www/test/cgi-bin/
chown -R gtest.utest /var/www/test/cgi-bin/

注意:文件cp过来后一定要对其进行权限设置,不然运行后会出现很多权限错误。

2、修改该主机的VHOST配置文件。

添加内容:

SuexecUserGroup gtest utest

主要是配置执行该CGI程序的组和用户

ScriptAlias /cgi-bin/ /var/www/test/cgi-bin/

将CGI程序的目录路径修改成刚才CP的那个路径

AddHandler fcgid-script .php
FCGIWrapper /var/www/test/cgi-bin/php5 .php

同上主要是修改CGI程序的目录

完成以后重启APACHE程序,该主机便有了独立的CGI执行权利,同时也不会影响其它的虚拟主机。当然,我们也可以通过配置UserDir参数,来限制本主机受其它主机的影响。方便又安全~!V(^0^)。



发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

无觅相关文章插件,快速提升流量