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