0

誰でもこの簡単なことで私を助けることができますか? MySQLデータベースと直接通信し、誰かがフォームを満たすとユーザーを追加するphp登録フォームがあります。問題は、この登録を行う各ユーザー (bash スクリプトを使用) のホーム ディレクトリも作成したいときに始まります。

私がやったこと:bashスクリプトを作成しました

#!/bin/bash

sudo useradd -m /home/$1

ユーザーのホーム ディレクトリを作成するために、これまでこの単純なスクリプトで行ったパラメータはどれも機能しませんでした。

4

1 に答える 1

1

問題:

  1. 明示的なホーム ディレクトリ:コマンド ライン構文が間違っています。代わりに次のことを試してください。

    sudo useradd -m username

    また

    sudo useradd -d /home/username -m username

  2. PHPはsudoerですか?特定のアカウントのみが sudo を実行できます。PHP が実行されるアカウントが sudoers ファイルにリストされていることを確認します。通常、ファイルを簡単に

    visudo

  3. PHP は編集されていchrootますか? その場合、適切なコードを含むスクリプトから新しい Linux ユーザー アカウントを作成できない可能性があります。

動作テスト

以下は、Debian(sudoなし)で機能しました。

newuser.sh

#!/bin/bash
useradd -d /home/$1 -m $1

newuser.php

<?php
  exec('/bin/bash /var/www-scripts/newuser.sh joe');
?>

テスト呼び出し: php newuser.php

同じテストを実行できる (必要に応じて sudo を追加する) ことができる場合、Web サーバーによって呼び出されたときに機能しない唯一の理由は、セキュリティの問題です。chroot 環境であるか、sudoer 権限が不足している可能性があります。

その他のリソース

以下を確認することで、他の人がこの問題をどのように解決したかを確認できます。

  1. http://www.weberdev.com/get_example.php3?ExampleID=3766
  2. http://www.linuxforums.org/forum/programming-scripting/176031-solved-crafting-php-script-create-unix-user.html
于 2012-12-16T09:45:32.353 に答える