![当 Apache 以非 root 用户身份运行时,以 root 身份运行 cronjobs](https://linux22.com/image/1049506/%E5%BD%93%20Apache%20%E4%BB%A5%E9%9D%9E%20root%20%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8C%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%20cronjobs.png)
我正在构建一个可以在小型设备(带有 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 的默认设置,对于尚未执行此操作的应用程序,您可以使用su
、sudo
或。runuser
如何创建 root cronjobs?
每个用户都有一个 crontab,只需将脚本放在 root 的
如何以非 root 身份在启动时运行服务?
您可以在初始化脚本中使用任何命令,因此答案与如何以 root 身份运行的问题相同。
有没有办法删除/拒绝任何登录?
您可以让登录需要使用另一台计算机,但是不行。
我希望用户只需按下“启动”按钮并通过他的浏览器连接到 Apache。
这将默认起作用
无论哪个用户登录并且无论哪个程序正在运行,cronjobs 是否总是以 root 身份运行?
不,每个用户都有crontab
,请阅读man crontab
详细信息