在CentOS 7.2上安装SuPHP的详细方法

下面是在CentOS7.2上安装SuPHP的详细方法。

环境准备

  • 操作系统:CentOS 7.2
  • Web 服务器:Apache 2.4
  • PHP 版本:PHP 7.0.33

安装必备软件

在安装SuPHP之前需要安装一些必备软件,包括GCC、make、httpd-devel、php-cli、php-devel、rpm-build、httpd。

可以使用以下命令安装:

yum install -y gcc make httpd-devel php-cli php-devel rpm-build httpd

下载SuPHP源码

可以从SuPHP的官网下载最新版本的源码。

wget http://suphp.org/download/suphp-0.7.2.tar.gz

解压并安装SuPHP

tar zxvf suphp-0.7.2.tar.gz
cd suphp-0.7.2
./configure --prefix=/usr --sysconfdir=/etc --with-apxs=/usr/bin/apxs --with-setid-mode=owner
make
make install

在上述的安装过程中,--prefix 参数指定了安装路径,--sysconfdir 指定了配置文件路径,--with-apxs 指定了Apache编译时生成的apxs二进制文件的路径,--with-setid-mode=owner 指定了SuPHP启动时的权限模式。

配置SuPHP

配置suphp.conf文件

vim /etc/httpd/conf.d/suphp.conf

在打开的文件中添加以下内容:

LoadModule suphp_module modules/mod_suphp.so
AddType application/x-httpd-php .php
suPHP_AddHandler application/x-httpd-php
<Directory "/var/www/html">
   suPHP_Engine on
   suPHP_UserGroup apache apache
</Directory>

在其中,LoadModule suphp_module 指定了加载模块,AddTypesuPHP_AddHandler 指定了后缀为.php的文件交由SuPHP处理,<Directory> 块内的指令则指定了SuPHP的处理引擎,及处理用户和组信息。

配置virtual host文件

vim /etc/httpd/conf.d/virtualhost.conf

在打开的文件中添加以下内容:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    <Directory "/var/www/html">
        AllowOverride All
        Order Allow,Deny
        Allow from all
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

这份配置文件是一个虚拟主机配置示例,其中 ServerName 为服务器名称,DocumentRoot 为网站文件的根目录,<Directory> 指定了这个虚拟主机的目录权限控制。

启动Apache

启动Apache服务,尝试执行phpinfo.php文件测试是否已成功安装SuPHP。

systemctl start httpd
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

在浏览器中打开 http://example.com/phpinfo.php 可以看到PHP信息页面,其中的“Loaded Modules”一栏会显示已安装的SuPHP模块。

示例1:使用SuPHP管理网站文件

用户Bob的web根目录使用SuPHP管理:

useradd bob
mkdir /home/bob/public_html
echo "<?php phpinfo(); ?>" > /home/bob/public_html/phpinfo.php
chown -R bob:apache /home/bob/public_html
chmod -R 755 /home/bob/public_html

Apache虚拟主机:

<VirtualHost *:80>
    ServerName bob.example.com
    DocumentRoot /home/bob/public_html
    <Directory "/home/bob/public_html">
        AllowOverride All
        Order Allow,Deny
        Allow from all
        Options FollowSymLinks
        Require all granted
        suPHP_Engine on
        suPHP_UserGroup bob bob
    </Directory>
</VirtualHost>

上述配置指定了用户Bob所在的web根目录和管理这个目录的用户和组,用于启用SuPHP的引擎。

示例2:使用SuPHP限制FTP用户文件权限

假设FTP用户的根目录为 /home/ftpuser,使用SuPHP限制他仅能访问该目录下的文件。FTP用户为WWW并且获得作为PHP文件运行的权限。

  1. 将WWW用户加入到Apache组中

    bash
    usermod -a -G apache www

  2. 启动ftp服务,并在配置文件中增加如下内容。该内容指定使用SuPHP对FTP用户进行限制。

    DefaultRoot /home/ftpuser
    <Directory /home/ftpuser/*>
    supervisor ftpuser www
    <Limit ALL>
    DenyAll
    </Limit>
    </Directory>

  3. 访问FTP用户根目录,并新建phpinfo.php文件,输入如下内容:

    php
    <?php phpinfo();?>

  4. 修改该文件用户组,从ftpuser更改为apache

    bash
    chgrp apache /home/ftpuser/phpinfo.php

  5. 在浏览器中打开 http://example.com/phpinfo.php 可以看到PHP信息页面,其中的“Loaded Modules”一栏会显示已安装的SuPHP模块。

经过以上配置后,若FTP用户越权访问作用域范围以外的目录或者其它用户的文件,SuPHP将会进行拦截并报错。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在CentOS 7.2上安装SuPHP的详细方法 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • CentOS7安装MySQL8的超级详细教程(无坑!)

    下面是“CentOS7安装MySQL8的超级详细教程(无坑!)”的完整攻略,包含两条示例说明。 安装MySQL8前的准备工作 安装必要的依赖包和软件 sudo yum -y install wgetsudo yum -y install bzip2sudo yum -y install makesudo yum -y install cmakesudo yu…

    Linux 2023年5月14日
    00
  • rsync中文手册之使用rsync实现网站镜像和备份linux第2/3页

    使用rsync实现网站镜像和备份是一项重要的工作,以下是实现此目标的完整攻略: 1. 安装rsync 在使用rsync之前,需要先安装rsync。使用以下命令安装: sudo apt-get install rsync 2. 创建目标文件夹 首先,需要在本地计算机上创建一个目标文件夹,以存储将要通过rsync复制的文件夹的内容。使用以下命令创建一个名为“my…

    Linux 2023年5月24日
    00
  • Linux系统使用Fuser命令的方法

    当我们需要查看当前系统上哪些进程正在使用某个文件或目录时,可以使用Linux系统中的Fuser命令。下面是使用Fuser命令的方法: 1. 命令格式 Fuser命令的基本格式为: fuser [OPTIONS] [FILE] 其中,OPTIONS表示可选参数,FILE表示要查询的文件或目录路径。 2. 常用选项 -v 或 –verbose:显示详细信息。 …

    Linux 2023年5月14日
    00
  • linux时间与internet时间同步

    我们首先来了解下面几个知识点: 1. date命令: #date 显示系统时间 2.hwclock命令   (即hardwareclock系统硬件时间) #hwclock 显示硬件时间 #hwclock -w 将系统时间写入到系统硬件当中 3.ntpdate ntpdate 是一个linux时间同步服务软件,具体的详细资料请参考下百度,有很多详细的资料 第二…

    Linux 2023年4月11日
    00
  • php遇到错误Call to undefined function ImageCreate()解决方法

    当我们在使用 PHP 编写图像处理相关的代码时,可能会遇到错误信息 Call to undefined function ImageCreate()。这个错误意味着 ImageCreate() 函数未定义或未被正确加载,导致 PHP 无法识别该函数,以下是解决方法的完整攻略: 1. 安装 PHP GD 扩展 GD 是 PHP 中一个常用的图像处理库,需要根据…

    Linux 2023年5月14日
    00
  • Shell脚本自动删除指定大小以上的备份文件

    以下是“Shell脚本自动删除指定大小以上的备份文件”的完整攻略。 简介 在日常维护中,需要保留一定数量的备份数据以便于恢复,但是随着时间的推移,备份的数量和容量都会逐渐增大,因此需要定期清理历史备份文件。本文将介绍如何使用Shell脚本自动删除指定大小以上的备份文件。 实现步骤 确认需要删除的备份文件夹路径和大小限制(即所有大小大于指定大小的备份文件将被删…

    Linux 2023年5月24日
    00
  • VMware Workstation下安装Linux

    下载VMware Workstation thunder://QUFodHRwczovL2Rvd25sb2FkMy52bXdhcmUuY29tL3NvZnR3YXJlL3drc3QvZmlsZS9WTXdhcmUtd29ya3N0YXRpb24tZnVsbC0xMi41LjEtNDU0MjA2NS5leGVaWg== VMware Workstation的安…

    Linux 2023年4月12日
    00
  • 关于Linux下C编译错误(警告)cast from ‘void*’ to ‘int’ loses precision

    char *ptr; //此后省略部分代码 if( (int)ptr==-1 ) //出错地方 那句话的意思是从 void* 到 int 的转换丢失精度,相信看到解释有些人就明白了, 此问题只会出现在X64位的Linux上,因为在64位的机器上指针占用8个字节,int 占用四个字节,所以才会出现这样的问题, 解决方法: (long)ptr == -1 就好了

    Linux 2023年4月15日
    00
合作推广
合作推广
分享本页
返回顶部