PHP

时间:2015-09-16 14:02:19

标签: php linux security sudo su

我正在用PHP构建一个控制面板。 此CP将管理Linux用户,他们的屏幕会话和文件。

我想列出所有方法,并选择最安全的方式,这对用户来说也很舒服。

广泛的sudoers档案(非常危险!)

的/ etc / sudoers的

wwwuser ALL = NOPASSWD: ALL

这允许任何命令通过www服务器用户运行。 这是安全的噩梦。

赞成

  • 所有命令均可用

缺点

  • 所有命令均可用

包装脚本

的/ etc / sudoers的

wwwuser ALL = NOPASSWD: /path/to/scripts/scripts/

此方法使用只有少量行的小bash脚本。不幸的是,这些脚本必须增加攻击面。 例如,此脚本创建新用户

#/bin/bash useradd $1 -s /bin/bash

我无法列出所有允许的用户名,因此我必须使用args。

赞成

  • 如果使用escapeshellarg()
  • 调用脚本,则只允许列入白名单的命令
  • 为创建的用户名,文件夹等提供弹性。

缺点

  • 通过最终用户修改参数是不可能的,例如。用于在屏幕上运行java应用程序。

以root用户身份运行的队列

在此方法中,所有需要root权限的命令都将发送到队列。 队列守护程序以root身份运行,因此可以创建用户等。

赞成

  • 比允许wwwuser运行任何命令的攻击面更低
  • 要运行的弹性参数或要创建的文件名不再是问题

缺点

  • 安全性主要取决于应用程序本身

0 个答案:

没有答案