【问题标题】:How to execute terminal command via php script如何通过php脚本执行终端命令
【发布时间】:2016-03-16 09:09:19
【问题描述】:

我有一个需要运行 linux 终端命令的 php 脚本。我的问题是我需要以 sudo 运行它,但它不起作用。我已完成 VISUDO 并添加/禁用如下:

asterisk ALL=NOPASSWD: /usr/sbin/cmd.php
Defaults!/usr/sbin/cmd.php !requiretty
#Defaults    requiretty
#Defaults   !visiblepw

但我在 apache 日志中收到此错误“sudo: no tty present and no askpass program specified”。仅供参考,Apache 以用户 asterisk 及其 Centos 6 身份运行。我现在被困住了,所以伸出手来。

谢谢

【问题讨论】:

  • 您尝试运行的命令是“/usr/sbin/cmd.php”吗?过去当我使用 php 启动它或添加 nice 时,我遇到了问题。哦,您在 auth.log 中是否有任何错误?
  • 我只是在做'服务星号停止'来检查这个概念。我检查了安全日志并显示“sudo: pam_unix(sudo:auth): conversation failed sudo: pam_unix(sudo:auth): auth could not identify password for [asterisk]”
  • 嗯,我想我的星号用户有密码,现在最好的做法是什么?
  • 哦...使用 visudo 您应该指定要运行的命令而不是运行它的脚本
  • 星号 ALL = NOPASSWD:服务星号停止

标签: linux php sudo


【解决方案1】:

您的星号帐户没有 shell 登录。 sudo 用户必须有 shell 登录。在 /etc/passwd 中检查它。如果nologin,则表示无法访问shell。

【讨论】:

    【解决方案2】:

    您需要检查星号 API,它调用 AMI(星号管理接口) https://github.com/marcelog/PAMI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2011-04-13
      • 2016-01-09
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多