我在 AWS 上使用 Elastic Beanstalk,我试图覆盖 php.ini 文件中的一些设置。我已经在目录 /.ebextensions 中创建了 project.config :
files:
"/etc/php.d/project.ini" :
mode: "000644"
owner: ec2-user
group: ec2-user
content: |
date.timezone = "Europe/Berlin"
error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING
display_errors = Off
Run Code Online (Sandbox Code Playgroud)
当我重新部署应用程序时,EBS 抛出以下错误:
The configuration file __MACOSX/gf/.ebextensions/._project.config in application version gf3 contains invalid YAML or JSON. YAML exception: unacceptable character '' (0x0) special characters are not allowed in "<reader>", position 0, JSON exception: Unexpected character () at position 0.. Update the configuration file.
Run Code Online (Sandbox Code Playgroud)
我做错了什么? …
我在 .c 中将以下程序设置为 setuid chmod 仅由所有者读取/执行,并将其设置为不可变的,就像它调用的 php 脚本一样。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[] )
{
setuid( 0 );
execv( "/var/tools/control.php", argv );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这本身是否存在安全风险?是否可以通过 argv 或其他一些我没有想到的东西来推送其他命令?我不只是询问这个代理程序的 php 脚本。
我尝试使用 PHP shell_exec 函数运行 su 命令。起初我试过:
<?php
echo(shell_exec('echo \'password\' | su user -c \'whoami\' 2>&1;'));
?>
Run Code Online (Sandbox Code Playgroud)
我得到了:
su: must be run from a terminal
Run Code Online (Sandbox Code Playgroud)
然后我阅读了有关使用 python 的 pty 生成终端并将其放入 shell 代码的内容:
<?php
echo(shell_exec('echo "if [ -t 1 ] ; then echo "terminal found"; fi; echo \'password\' | su user -c \'whoami\'; exit" | python -c \'import pty; pty.spawn("/bin/bash")\' 2>&1;'));
?>
Run Code Online (Sandbox Code Playgroud)
这是输出:
if [ -t 1 ] ; then echo terminal found; fi; echo 'password' | su user -c 'whoami'; exit …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的几个站点设置我的新 VPS。
nginx、php-fpm 和其他需要的服务已安装。
我为我的站点设置了一个 nginx 服务器块(虚拟主机),然后尝试创建一个 php 文件进行测试。一切正常,但后来我想尝试echo file_get_contents('/etc/passwd')文件进行安全检查。它的工作也是如此,一个 test.php 文件可以访问我的 VPS etc/passwd 文件等等。
在我尝试之后echo shell_exec('ls /'),这显示了我的根文件夹。
那么这是正常的吗?或者我怎样才能防止这种情况。我想拒绝访问除运行 php 代码的用户之外/var/www的所有人www-data。
对不起,我的英语不好。
谢谢。
我管理两个专用服务器。我将 Centos 6 与 Plesk Panel 一起使用。更新:我将 Apache 与 mod_php 一起使用。
在第一台服务器上,我在 Wordpress 中有一个站点。
我注意到我的 httpd 进程每次都占用更多内存。除了“top”命令之外,我还使用以下命令来查找:
ps -ylC httpd --sort:rss
Run Code Online (Sandbox Code Playgroud)
图片:
注意RSS栏。httpd 进程从 13MB 到 127MB 占用 ram。
安装的 apache 模块是:
# Httpd l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
Run Code Online (Sandbox Code Playgroud)
在第二台服务器上,我有一个网站 PHPBB。
在这种情况下,涉及的进程如 httpd。全部占用约85MB。
图片:
我读过应该占用 20MB。我如何分析或优化它?用什么工具?Xhprof 我试过了,但它说使用的内存少于那个然后使用真的......
我的服务器中的内存很密集。这是个大问题。
更新:
服务器 1 Meminfo 输出:
#cat /proc/meminfo
MemTotal: 5969120 kB
MemFree: 625720 kB
Buffers: 218424 kB
Cached: 3289320 kB
SwapCached: 61020 kB
Active: 2832624 kB
Inactive: 2066428 …Run Code Online (Sandbox Code Playgroud) 是否可以?
我用 PHP 编写了一个命令行工具,用于为我们公司创建新环境。它创建系统用户、目录、数据库、VHosts 并重新启动 apache 等。这些命令需要sudo特权。我认为为它提供一个 Web 界面可能是个好主意,以便其他非开发人员更容易使用。Web 应用程序将落后于身份验证。
从命令行运行时sudo tool.php,我只是运行,显然我无法从网络应用程序执行此操作。
我怎么能安全地做到这一点?授予 apache 用户 sudo 访问权限似乎很愚蠢,因为这意味着主机上托管的所有站点(例如我们所有的环境)都将具有 sudo 访问权限。是否可以让这个工具在不同的用户下运行?这个用户可以只对我需要的命令有 sudo 权限吗?
plesk 和 cPanel 之类的东西是如何做到这一点的?
有什么想法吗?
PHP 5.6 稳定版于 2014 年 8 月 28 日发布。PHP 5.4 的生命周期结束日期是什么时候?我在 PHP 网站上找不到任何关于它的信息。这对我很重要,因为我必须决定是否必须升级旧站点。许多托管服务提供商仍在使用 PHP 5.3 或 5.4 提供服务。PHP 社区有关于这个日期的讨论或决定吗?
几个月前,我做了一个非常成功的实验,今天我们有一个使用以下技术的内部网门户:
那么,根据我们的测试,为什么我们需要使用 apache?
PS:我不是在使 apache 失效,这个问题只是出于好奇
: 编辑
当我的意思是“我们”时,我的意思是“我们”作为使用小型 Web 应用程序的小团队
我无法更新到最新的 PHP 包。我跑了yum update php,它更新到 PHP 5.4.16。重新运行更新命令以查看是否有任何更新的版本,并指出没有标记为要更新的包。5.4.16 已经一年多了,存在很多漏洞,所以想更新到最新版本。关于如何克服这个问题的任何建议?
这听起来可能很愚蠢。
但是,在开发 PHP 扩展时,我不小心删除了位于 /usr/lib/php5 的扩展文件夹(以长数字命名)中的所有 *.so 文件。
谁能告诉我是否有任何方法可以恢复到原始状态(即恢复文件)或者重新安装 php 而不会影响任何 apache/mysql 配置?
php ×10
security ×5
apache-2.2 ×3
centos ×1
linux ×1
nginx ×1
permissions ×1
phpbb ×1
redhat ×1
setuid ×1
su ×1
sudo ×1
terminal ×1
web-server ×1
wordpress ×1