コマンドを使用してシェルから直接Linuxユーザーを削除できます./del_user.sh
del_user.sh は以下のとおりです。
#!/bin/sh
userdel username
このスクリプトを PHP ページから実行すると、機能しません。
echo shell_exec('./del_user.sh');
両方のファイルは同じディレクトリにあります。
何が問題なのですか?
余談ですが、目標が何であるか、またはこのスクリプトが何をするべきかについては述べていません。これはユーザー管理アプリケーションの一部ですか、それとも小さなタスクのための 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 できるようになるので、これを直接実行できるはずです。