0

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

例如:

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

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

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

4

1 回答 1

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');
于 2013-03-07T08:52:06.930 回答