我有一组需要先登录到 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');