php - 设置 CHMOD 777 后 /bin/node 权限被拒绝
问题描述
这是针对 Amazon EC2 linux 的。
我有一个运行 shell 脚本的 PHP 脚本。
所以在shell脚本里面是一个运行节点的命令。
当我从命令行运行 PHP 脚本时,节点会执行。
当我从浏览器运行 PHP 脚本时,我在 apache 日志中收到以下消息:
/home/ec2-user/.nvm/versions/node/v8.11.3/bin/node: Permission denied
这是在 /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node 上执行 chmod 777 之后
我也做了 chown ec2-user:apache /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
此外,这是以下结果:
$ ls -alrt /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
-rwxrwxrwx 1 ec2-user apache 34800111 Jun 12 22:40 /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
每个人都有完全的权限,我怎么会得到“权限被拒绝”的错误?
因此,如果我从命令行运行 PHP 脚本,这再次完美。
解决方案
好的,这是完全禁止的,但它暂时是一个黑客。
由于这是在我的 AWS EC2 实例上运行的,我只是通过安全组限制所有内容,并且只允许我允许的 IP 地址,因此对我来说是安全的。
您必须在 sudoers 文件中将权限添加到 apache 组。
所以,首先:
$ sudo visudo
然后添加:
%apache ALL = (ALL) NOPASSWD: ALL
到文件末尾。同样,这很糟糕,这是一种黑客攻击,但这是当前的解决方法,无论如何我都通过安全组中的 IP 地址限制对 EC2 实例的访问。
推荐阅读
- python - 将 tz naive datetime 转换为 tz 感知从 0 分钟到 58 分钟
- javascript - 向对象数组中的每个对象添加新元素
- javascript - JavaScript如何唯一标识一个网站
- kubernetes - OpenShift 3.11 - 错误 0/23 个节点可用:16 个节点与节点选择器不匹配,7 个节点没有用于请求的 pod 端口的空闲端口
- javascript - Express + Mongoose Rest 可扩展项目
- cmake - 我真的需要指定 install-interface 包含依赖项吗?
- javascript - 有没有更好的方法来测试 n 个函数?[JS]
- azure-devops - 如何从 Cross Repo 策略中排除存储库?
- node.js - 无法将 typescript express 应用程序部署到 Azure
- excel - 如何查找()表格行?