首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

即使在更新后的sudoers之后,PHP网页也不会启动unix命令

在更新 sudoers 权限后,PHP 网页可能仍然无法启动 Unix 命令。这可能是因为 sudoers 文件存在权限错误。以下是解决此问题的步骤:

步骤 1:检查 sudoers 文件

通过检查您的 sudoers 文件中是否存在任何限制,可以确定问题是否在 sudoers 范围内。可以使用以下命令来检查 sudoers 文件是否存在错误:

代码语言:bash
复制
sudo visudo

步骤 2:解决现有的权限问题

如果 sudoers 文件中包含任何错误的权限设置,则需要解决这些问题。首先,为 sudoers 文件设置正确的权限:

代码语言:bash
复制
sudo chmod 0440 /etc/sudoers
sudo chown root:wheel /etc/sudoers

步骤 3:启用 Unix 命令执行

确保 sudoers 中的 Unix 命令被启用,您需要将 /usr/bin/true 添加到您的 sudoers 文件中,并且将所有的 Unix 子类添加到相应的权限组。以下是详细的解释和步骤:

  1. 确认 /usr/bin/true 存在的,并赋予可执行权限:
代码语言:bash
复制
which true
ls -l /usr/bin/true
  1. 使用 visudo 管理员覆盖权限,以确保 /usr/bin/true 及其所有子进程具有可执行权限:
代码语言:bash
复制
sudo visudo

接下来,在编辑好的 sudoers 文件中添加以下内容:

代码语言:txt
复制
/usr/bin/true ALL=(ALL:ALL) NOPASSWD: /usr/bin/php-fpm --nodaemonize

这将授权 true 程序及其所有子进程在没有密码或凭据的情况下以非交互模式执行 php-fpm 命令。

  1. 为具有 /usr/bin 子目录的其他 Unix 子类(例如,/bin、/sbin 和 etc.)提供适当的权限组和访问权限:
代码语言:txt
复制
sudo chgrp -R wheel /usr/bin/ /bin/ /sbin/ /usr/local/bin/ /usr/local/sbin/ /opt/php/8.1/sbin/ /opt/php/8.1/bin/*
sudo chmod -R 750 /usr/bin/ /bin/ /sbin/ /usr/local/bin/ /usr/local/sbin/ /opt/php/8.1/sbin/ /opt/php/8.1/bin/*

步骤 4:为 php-fpm 创建环境变量

为确保 PHP 能够通过 /bin/php-fpm 命令进程启动,您可能需要为 PHP 进程创建一个默认的环境变量。将以下环境变量添加到您的 /etc/environment 文件中,或者在当前命令行中运行以下命令:

代码语言:bash
复制
sudo bash -c "echo 'export FPM_HOST=127.0.0.1' >> /etc/environment"
sudo bash -c "echo 'export FPM_PORT=9000' >> /etc/environment"
sudo bash -c "echo 'export FPM_USERNAME=www-data' >> /etc/environment"
sudo bash -c "echo 'export FPM_GROUP=www-data' >> /etc/environment"
sudo bash -c "echo 'export FPM_APP_NAME=public' >> /etc/environment"

上述环境变量设置将允许 php-fpm 进程与您的网站进行通信。

现在您已经设置了必要的 sudoers 和环境变量,并启用了 unix 子类的执行权限。重新启动 PHP-FPM 服务,然后再次尝试访问您的 PHP 网页并执行 Unix 命令。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券