无法使用PHP和bash脚本删除Linux用户

时间:2013-05-01 13:10:50

标签: php linux bash

我可以使用命令./del_user.sh

直接从shell中删除linux用户

del_user.sh如下

#!/bin/sh
userdel username

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

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

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

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

  1. del_user.sh不接受参数,因此您在脚本中的任何硬编码用户上运行脚本。除非您修改脚本以允许命令行参数,否则这将不起作用。
  2. 虽然这个任务可以由PHP完成,但这肯定不是主要功能,应该委托给更合适的应用程序。
  3. 顺便说一下,你还没有说明你的目标是什么,或者这个脚本应该做什么。这是一些用户管理应用程序的一部分还是仅仅是一次性的小任务?

    <强>答案: 为了实现这一点,你必须让Apache具备sudo的能力,这样才能获得暂时提升的权限。您可能需要在Google上搜索有关如何执行此操作的操作,具体取决于您的操作系统,但此链接提供了有关如何在Ubuntu中执行此操作的一些指导:Ubuntu Forums

    我还建议不要使用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,应该能够直接执行它。