【问题标题】:Linux screen managment on root through php user通过 php 用户在 root 上进行 Linux 屏幕管理
【发布时间】:2011-03-31 10:42:10
【问题描述】:

我想制作一个脚本,它可以在 root 用户的 screen 中运行某些东西。这必须通过 php system() 函数完成,因此我需要找到 sudo 到 root 并传递密码的方法,所有这些都使用 PHP。

【问题讨论】:

  • 如果这个脚本是通过从网站调用它来运行的,我很确定这不会起作用,因为 www-data(或你的网络服务器正在使用的任何用户)将无法到 'sudo' 以 root 身份运行某些东西。
  • @gnur:这取决于sudo 配置。

标签: php linux bash shell gnu-screen


【解决方案1】:

如果你真的需要从 PHP 中sudo(不推荐),最好只允许特定的命令而不需要密码。

例如,如果 PHP 以 apache 用户身份运行,并且您需要运行 /usr/bin/myapp,则可以将以下内容添加到 /etc/sudoers(或 sudoers 所在的任何位置):

apache ALL = (root) NOPASSWD:NOEXEC: /usr/bin/myapp

这意味着用户apache 可以在没有密码的情况下以root 的身份运行/usr/bin/myapp,但应用程序无法执行其他任何操作。

【讨论】:

    【解决方案2】:

    我相信肯定有比你试图创建的任何机制更好的方法来完成你想要完成的任何事情。

    如果您只是想将 php 脚本中的消息写入某个地方的单个 screen 会话,请尝试以下操作:

    在 php 中

    使用追加写入权限打开文件:

    $handle = fopen("/var/log/from_php", "wb");
    

    写入您的文件:

    fwrite($handle, "Sold another unit to " . $customer . "\n");
    

    在您的屏幕会话中

    tail -F /var/log/from_php
    

    如果您不能只在屏幕会话中运行tail,您可以使用write(1) 实用程序将消息写入不同的终端。有关此机制的详细信息,请参阅 write(1)mesg(1)。 (我不像日志文件方法那样喜欢它,因为它是持久的并且可以稍后搜索。但我不知道你想要完成什么,所以这是另一个可能比@更好的选择987654329@ 在日志文件中。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      相关资源
      最近更新 更多