1

我可以使用命令直接从 shell 中删除 linux 用户./del_user.sh

del_user.sh 如下

#!/bin/sh
userdel username

当我从 PHP 页面运行此脚本时,它不起作用。

echo shell_exec('./del_user.sh');

这两个文件都在同一个目录中。

可能是什么问题呢?

4

1 回答 1

1
  1. del_user.sh 不带参数,因此您在脚本中的任何硬编码用户上运行脚本。除非您修改脚本以允许命令行参数,否则这将不起作用。
  2. 虽然这个任务可以通过 PHP 完成,但这肯定不是主要功能,应该委托给更合适的应用程序。

顺便说一句,您还没有说明您的目标是什么或这个脚本应该做什么。这是一些用户管理应用程序的一部分,还是只是一些小任务的一次性?

回答: 要启用此功能,您必须赋予 Apache sudo 的能力,这样它才能获得临时提升的权限。您可能需要根据您的操作系统对如何执行此操作进行一些谷歌搜索,但此链接提供了有关如何在 Ubuntu 中执行此操作的一些指导:Ubuntu 论坛

我还建议不要使用 bash 脚本,因为它并不是真的需要这样做。您可以使用接受命令行参数的 PHP 脚本。所以在你的主脚本中你可以有这样的东西:shell_exec('php /path/to/del_user.php username');

然后在 del_user.php 你会有类似shell_exec('userdel '.$argv[1]);. 更多关于命令行参数的信息可以在这里找到:$argv

最后,您可以将其直接放入主脚本中,而不是使用两次 shell_exec。换句话说,只需使用shell_exec('userdel '.$username);而不是调用脚本。由于 Apache 将能够 sudo,它应该能够直接执行此操作。

于 2013-05-01T13:21:25.543 回答