【问题标题】:php system commands linuxphp系统命令linux
【发布时间】:2013-02-22 08:56:24
【问题描述】:

我有一组需要先登录到 shell 的 linux 系统命令。 我如何在 php 中做到这一点?

例如:

$output2 = shell_exec('ls -lrt /opt/test 2>&1');

由于 /opt/test 只能由用户/所有者 XXX 访问,我需要使用该用户名登录。 runuser 命令可能会有所帮助,但我需要指导。

实际上我需要通过系统命令运行应用程序,但在该用户必须登录之前才能访问该应用程序。

【问题讨论】:

标签: php linux login command system


【解决方案1】:

一种方法是创建一个 shell 脚本,其中包含您需要以特权登录用户身份运行的所有命令,然后使用 sudo 运行该 shell 脚本。

您需要更改您的 sudoers 文件,以便脚本的执行可以由运行该脚本的用户运行。

例如:

 Cmnd_Alias HTTP_COMMANDS = /usr/local/my_ls_script
 XXXX ALL=(ALL) NOPASSWD: HTTP_COMMANDS

这样做时要小心!确保 sudoers 行只能运行您指定的命令。

另外,请确保您至少切换到用户一次,并运行 sudo,否则网络服务器将无法为该用户运行 sudo。

此外,您可能需要在 sudoers 文件中禁用 NO_TTY。

您可以将命令更改为:

$output2 = shell_exec('sudo -u XXXX /usr/local/my_ls_script 2>&1');

【讨论】:

  • 谢谢。这是个好主意。但我坚持使用另一种方法。我正在考虑使用 SSH2 模块,让用户通过 SSH2 登录。通过 SSH2 执行系统命令,然后解析输出。你认为这是一个更好的方法吗?这样用户就可以访问他被允许的内容..
  • 这种方法更好。但请记住,这样,您仍然需要用户密码或私钥。
  • 并请注意,您需要以能够确保其安全的方式存储该密码或 ssh 密钥。您真的不希望人们能够下载您的 Unix 帐户的公钥和/或密码!
猜你喜欢
  • 2011-09-24
  • 2013-05-02
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
相关资源
最近更新 更多