1

コマンドを使用してシェルから直接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 で実行できますが、これは確かに主要な機能ではなく、より適切なアプリケーションに委任する必要があります。

余談ですが、目標が何であるか、またはこのスクリプトが何をするべきかについては述べていません。これはユーザー管理アプリケーションの一部ですか、それとも小さなタスクのための 1 回限りのものですか?

回答: これを有効にするには、Apache に sudo 機能を付与して、一時的に特権を引き上げることができるようにする必要があります。OSによっては、これを行う方法についてグーグルで調べる必要があるかもしれませんが、このリンクはUbuntuでそれを行う方法に関するいくつかの指示を提供します: Ubuntuフォーラム

また、これを行う必要がないため、bash スクリプトを使用しないことをお勧めします。コマンドライン引数を受け入れる PHP スクリプトを使用できます。したがって、メイン スクリプトでは、次のようなものを使用できます。shell_exec('php /path/to/del_user.php username');

次に、del_user.php には次のようなものがありshell_exec('userdel '.$argv[1]);ます。コマンドライン引数の詳細については、$argvを参照してください。

最後に、shell_exec を 2 回使用する代わりに、メイン スクリプトに直接配置できます。つまり、shell_exec('userdel '.$username);スクリプトを呼び出す代わりに使用するだけです。Apache は sudo できるようになるので、これを直接実行できるはずです。

于 2013-05-01T13:21:25.543 に答える