アマゾン商品サーチ
フリー,素材,壁紙,携帯,待ち受け
消費者金融・ローン比較
ウイルス
オンライン・タイピング,ゲーム
健康,サプリメント
グラビア アイドル
DVDレコーダー
DVD
« Vine Linux - 時刻合わせ | サーバー構築からDVDまで | PHP imap関数を使えるようにする »
コマンドライン上からLinuxユーザを作成するには、以下のような感じになります。 ユーザ名、グループ名は同じ「 user01 」とし、「 /home 」以下にユーザ名と同じディレクトリを作成。 ログインシェルを「 /bin/bash 」とします。 パスワードは「 abcd 」にします。
# useradd user01 -s /bin/bash # 次にパスワードを設定します。 # passwd user01 Changing password for user user01. New password: ←実際には「 abcd 」を入力 BAD PASSWORD: it's WAY too short Retype new password: ←実際には「 abcd 」を入力 passwd: all authentication tokens updated successfully. #
# visudo ※vi が立ち上がり 「 /etc/sudoers 」ファイルが開きます ※ 「 i 」キーを押し編集モードにし、カーソルを最終行まで移動させ 以下のように打ち込む。 apache ALL=NOPASSWD: /usr/sbin/useradd ※ 打ち終わったら、「 Esc 」キーを押し(編集モード終了)、 「 :wq! 」と押していきエンターを押す(保存して vi を終了)
これで「 useradd 」コマンドは「 apache 」ユーザからパスワードなしで使用できるようになりました。 ※ このことは、非常に危険な設定をしていると認識しなければなりません。 Apacheのセキュリティホールを突かれてApacheになりすますことが出来たのなら、権限の強いユーザを作成されてしまう可能性があります。 そしてそれは防ぎようがありません。 次に、ユーザを作成するPHPスクリプトの方は、以下のようになります。
<? $user = "user01"; $pass = "abcd"; $passed = crypt($pass , "AB"); $command = "sudo /usr/sbin/useradd -M " . $user . " -s /bin/false -p " . $passed; system($command , $status); print $status; ?>
この記事はご希望通りの内容でしたか?
☆ 参考リンク 「 useradd 」コマンドについて 「 コマンドラインの設定 useradd 」 「 visudo 」コマンドについて 「@IT:止められないUNIXサーバの管理対策 第五回 sudo 」
このエントリーのトラックバックURL:
コマンドライン上からLinuxユーザを作成するには、以下のような感じになります。
ユーザ名、グループ名は同じ「 user01 」とし、「 /home 」以下にユーザ名と同じディレクトリを作成。
ログインシェルを「 /bin/bash 」とします。
パスワードは「 abcd 」にします。
「 useradd 」コマンドに「 -p 」オプションをつけてやると、ユーザの作成と同時にパスワードを設定してくれますが、この時渡す値は暗号化された値なので、どちらにしろ暗号化処理は必要になってきます。
VineLinuxでは、「 $1$ で始まる12文字の暗号化ベース文字を有するMD5暗号」になっているようです。
よって、暗号化されたパスワード(/etc/shadow に記述されている)を見てみると「 $1$ 」ではじまり32文字が続いた値になっているはずです。
例) $1$abcdefghijklmnopqrstuvwxyz012345
ブラウザ上からユーザの作成が出来ると楽ですよね。
というより、アクセス認証が必要なサイト等を作るには、ブラウザ上からこうした作成をユーザにやってもらう事になるでしょう。
ここでは簡単にそれを実現するためのPHPソースを公開します。
一応、今回はメールアカウントだけ取得できるといった条件とします。つまり、ログインも出来ない(SSHやFTP等で)し「 /home 」以下にもユーザのディレクトリは作成されません。
まず、これを実現するに当たって、Apacheが「 useradd 」コマンドを使用できるようにしてやらなくてはなりません。
コマンドライン上で、以下のように打ち込んで「 sudo 」が実行できるユーザと実行できるコマンドを登録します。
これで「 useradd 」コマンドは「 apache 」ユーザからパスワードなしで使用できるようになりました。
※ このことは、非常に危険な設定をしていると認識しなければなりません。
Apacheのセキュリティホールを突かれてApacheになりすますことが出来たのなら、権限の強いユーザを作成されてしまう可能性があります。
そしてそれは防ぎようがありません。
次に、ユーザを作成するPHPスクリプトの方は、以下のようになります。
「 sudo 」コマンドに「 useradd 」コマンドを渡しています。
「 -M 」オプションは、ホームディレクトリを作成しない設定です。もしホームディレクトリを作成したい場合はこのオプションははずしてください。
「 -s 」オプションは、ログインシェルを指定します。
デフォルトでは「 /bin/bash 」ですが、ログインさせたくないときは「 /bin/false 」を指定します。
「 -p 」オプションは、暗号化されたパスワードを指定します。
VineLinuxでは、暗号化後は
$1$abcdefghijklmnopqrstuvwxyz012345
といった形になります。
「 $1$ 」に32個の文字列が続きます。
これはPHPの「 crypt 」関数の第一引数にパスワードを与えた場合と同じ値になりますが、ここで「 $1$ 」 + 32文字を渡すと、途中で削られてしまうようです。
ここには、PHPの「 crypt 」関数の第一引数にパスワードを、第二引数に暗号化のベースとなる2文字を指定するとうまくいきます。
今回は「 AB 」を渡しましたが、なんでもかまいません。
うまくいくと $status には、「 0 」が入っているはずです。
この記事はご希望通りの内容でしたか?
☆ 参考リンク
「 useradd 」コマンドについて
「 コマンドラインの設定 useradd 」
「 visudo 」コマンドについて
「@IT:止められないUNIXサーバの管理対策 第五回 sudo 」
このエントリーのトラックバックURL: