当 Apache 以非 root 用户身份运行时,以 root 身份运行 cronjobs

当 Apache 以非 root 用户身份运行时,以 root 身份运行 cronjobs

我正在构建一个可以在小型设备(带有 Ubuntu Server 14.04 的 Odroid C1)上运行的简单 Web 应用程序。该 Web 应用程序将使用 php。我的问题是我想创建一个“设置”页面,用户可以在其中自定义,例如,本地 IP 地址或重新启动/关闭机器。基本上我需要运行通常需要 root 用户的命令。但是,出于安全原因,我想拒绝所有人对设备的 root 访问权限。此外,我想以普通(非 root)用户身份运行 Apache(以及 Web 应用程序与之交互的另一个 C++ 程序)。

我将举一个例子来更好地解释..在例子中“用户”将是非root用户,“root”将是....想象一下:)因此,我想知道这种情况是否可能,如果是,如何:

  • 安装 apache2 和 php;
  • 创建非 root 用户“user”,并在 /home/user/prod 中安装/运行 C++ 应用程序
  • 以非 root 用户身份运行 apache(可以吗?怎么做?不推荐吗?)
  • 创建要运行的 cronjobs以 root 身份..我需要它们来允许 Web 应用程序执行 root 操作

我对 Web 开发和系统管理还很陌生,所以我还有一些问题(其中大多数甚至可能是菜鸟问题,很抱歉):

  • 当客户启动设备时(没有 GUI,唯一的交互方式是 Web 服务器,如路由器/调制解调器),我知道我可以在启动时运行任何脚本/命令,但用户呢?我的意思是,因为我想以非 root 身份运行 Apache 和 C++ 程序。有没有办法在启动时以非 root 身份运行它们?怎么做?
  • 有没有办法删除/拒绝任何登录?我希望用户只需按下“启动”按钮并通过浏览器连接到 Apache.. 仅此而已

多谢。

编辑:

  • cronjobs 是否始终以 root 身份运行,无论哪个用户登录,无论哪个程序正在运行?我以前从未使用过 cronjobs

答案1

是否可以仅授予用户一些根操作?

是的,使用visudo,或文件事件,或使用脚本上的 s 位,或使用 root crontab

如何以非 root 用户身份运行 apache 等?

这是 Apache 的默认设置,对于尚未执行此操作的应用程序,您可以使用susudo或。runuser

如何创建 root cronjobs?

每个用户都有一个 crontab,只需将脚本放在 root 的

如何以非 root 身份在启动时运行服务?

您可以在初始化脚本中使用任何命令,因此答案与如何以 root 身份运行的问题相同。

有没有办法删除/拒绝任何登录?

您可以让登录需要使用另一台计算机,但是不行。

我希望用户只需按下“启动”按钮并通过他的浏览器连接到 Apache。

这将默认起作用

无论哪个用户登录并且无论哪个程序正在运行,cronjobs 是否总是以 root 身份运行?

不,每个用户都有crontab,请阅读man crontab详细信息

相关内容