php系统命令linux

标签 php linux authentication command system

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

例如:

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

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

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

最佳答案

一种方法是创建一个 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');

关于php系统命令linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266466/

相关文章:

azure - 尝试从 docker 容器对 Azure AAD 进行身份验证

php - Google Drive PHP Client Library 检索文件资源列表

php - 什么是 PHP header ?

java - 用户登录JDBC后屏蔽用户名

reactjs - 直接访问 URL(在我的例子中为本地主机)时,如何在不使用按钮的情况下弹出登录屏幕(Azure AD)?

`fork: retry: No child processes`的原因

php 数组,foreach 键跳过一个值

PHP 深层对象复制/克隆

python - 从 apache 中的 python 脚本关闭计算机

linux - 如何使用 awk 测试列值是否在另一个文件中?