WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

DokuWiki : ユーザー管理機能を使用する

DokuWiki はなかなか優秀なユーザー管理機能を搭載しており、個々のページの編集やページ作成権限をユーザーごと、グループごとに設定することができます。また、メールによるパスワードの(再)発行もサポートしており、ユーザー登録の完全な自動化も可能です。

多人数でのサイト構築や会員制のコラボレーションサイトなどにとても便利な機能です。今回はこのユーザー管理機能を利用するための設定をご紹介しようと思います。なお、DokuWiki は MySQL などのデータベースや LDAP など多彩なユーザー管理方法をサポートしていますが、今回は一番簡単なプレーンテキストファイルによる方法をご紹介します。その他の方法も基本的な考え方は同じなので、皆さんで調べてみてください(^^)

ユーザー管理を有効にする設定

DokuWiki のユーザー管理機能を利用するには、設定を少々変更する必要があります。といっても、なにも難しいことはないのでご心配なく。DokuWiki がインストールできたのなら問題なく設定できるはずです。

必要なファイルを準備する

まずは各ページのアクセス権限やユーザー情報を格納するファイルを作成します。テンプレートになるファイルが用意されているので、それをコピーするだけです。

cp acl.auth.php.dist acl.auth.php
cp users.auth.php.dist users.auth.php

そして、Apache ユーザーから書き込みができるようにパーミッションを変更します。インストール時の設定ファイル同様、root 権限があれば所有者を変更するのが理想ですが、それが不可能な場合は全ユーザーからの書き込みを許可します。

chown apache:apache acl.auth.php users.auth.php

または

chmod 666 acl.auth.php users.auth.php

設定変更

ユーザー管理機能を有効にするため、DokuWiki の設定ファイルである "dokuwiki/conf/local.php" に以下の内容を追加します。

$conf['useacl'] = 1;
$conf['passcrypt'] = 'ssha';
$conf['superuser'] = 'admin';

設定内容の詳細は後述します。

Web 上でユーザーを追加する

ここまでの設定でユーザー管理機能が働くようになっているはずですので、あとは Web 上でユーザーを登録するだけです。ここでは、DokuWiki が "http://localhost/dokuwiki/" の URL にインストールされていると仮定しますので、適宜読み替えてください。

ユーザーを登録する

前述の設定をした後に DokuWiki のページにアクセスすると、全ページの右下に「ログイン」ボタンが表示されています。ここからユーザーのログインや新規ユーザーの登録が行えます。新規ユーザー登録の具体的な手順は以下のとおりです。

  1. Web ブラウザで "http://localhost/dokuwiki/" にアクセスします。
  2. ページ右下にある「ログイン」ボタンをクリックします。
  3. ログインフォームの下にある「ユーザー登録」のリンクをクリックします。
  4. 新規ユーザー登録のページが表示されるので、フォームにユーザー名、フルネーム、メールアドレスを入力して「ユーザー登録」ボタンをクリックします。ユーザー名には英数字と ".-_" しか使えませんのでご注意ください。
  5. パスワードを書いたメールが指定したメールアドレス宛に送信されるので、メールをチェックしてパスワードを確認してください。
  6. ログインフォームに移動し、指定したユーザー名とメールで送られてきたパスワードでログインします。

先ほど "local.php" で管理者ユーザー名を "admin" と指定してありますので、なるべく速やかに "admin" ユーザーを登録してください。でないと、勝手に登録されて管理権限を奪われてしまう可能性があります(^^;。必要に応じて、それ以外のユーザーも追加登録すればよいでしょう。

新規ユーザーの追加を禁止する

さて、ユーザー登録はできましたが、このままでは誰でも自由にユーザー登録ができてしまいます。それでは都合が悪い場合もあるかと思いますが、心配ご無用。"dokuwiki/conf/local.php" に以下の設定を追加すれば、新規のユーザー登録ができなくなります。

$conf['openregister'] = 0;

先ほどまで表示されていたログイン画面の「ユーザー登録」リンクがなくなっているはずです。この状態でも、管理者としてログインすれば後述のユーザー管理画面でユーザーの追加・削除・変更が可能です。

管理者機能を使用する

管理者でログインすると、右下に並んでいるボタンに「管理」ボタンが追加されます。それをクリックすると、以下のような管理者メニューが表示されます。

この画面で各ユーザー・グループの権限の設定やその他のサイトの設定作業が行えます。それでは、それぞれの画面について見ていきましょう。

アクセスコントロール管理

管理者メニューで「アクセスコントロール管理」のリンクをクリックすると、以下の画面が表示されます。

ここでは、各ページに対するアクセス権限が設定できます。管理者メニューを表示するために「管理」ボタンをクリックしたページそのものと、それが所属する名前空間に対する権限しか設定できないので、権限を設定したいページで「管理」ボタンをクリックするようにしてください。

ちなみに、名前空間とは DokuWiki でページをグループ化するための機能で、ページ名を "名前空間名:ページ名" とすることによって指定できます。DokuWiki は各ページ個別に、もしくは名前空間単位で、特定のユーザー、もしくはグループに以下の権限を付与することができます。

権限可能な操作
読取ページの表示
編集ページ内容の編集
作成ページの新規作成
アップロード画像などのアップロード
削除ページの削除

読取、編集以外の権限は名前空間にしか付与できません。また、表で下の欄にある権限は上の欄の権限を含むことにも注意してください。つまり、作成権限を持ったユーザー(もしくはグループ)は自動的に読取、編集権限も付与されます。

権限を付与するグループ名として "ALL" を指定すると、ログインしていないユーザーも含めた全ユーザーに対するアクセス権限が設定できます。

例えば、「匿名ユーザーには名前空間 "playground" のページ編集のみを許し、登録ユーザーには全ページのすべての権限を許可する」という設定は以下のようになります。

対象ページグループ権限
*user読取, 編集, 作成, アップロード, 削除
*ALL読取
playground:*ALL読取, 編集

匿名ユーザーに対しては全ページの閲覧と playground の編集のみを許可し、登録ユーザー(私だけですが^^;)にはすべての操作を可能にしています。設定は以下のようになっています。

ユーザー管理

管理者メニューで「ユーザー管理」のリンクをクリックすると、以下の画面が表示されます。

各ユーザーの情報を編集する場合は、「ユーザーリスト」で編集したいユーザーのアイコンをクリックします。ユーザーを追加する場合は、「ユーザー作成」のフォームに情報を入力して「追加」ボタンをクリックします。その他細かい操作は、見ればわかるのではないでしょうか(^^;

プラグイン管理

管理者メニューで「Manage Plugins」のリンクをクリックすると、以下の画面が表示されます。

プラグインに関しては、後々ご紹介しようと思います。というか、まだ私もよくわかっていません(^^ゞ

サイト設定

管理者メニューで「サイト設定」のリンクをクリックすると、以下の画面が表示されます。

ここでは、"dokuwiki/conf/local.php" の内容をビジュアルに編集することができる・・・はずなのですが、私が試した限り「設定用ファイルを更新できません。」と出て設定できませんでした。"local.php" や "local.php.bak" は書き込みできるようにしてみたのですが。使い方がわかったらまたレポートします。 "local.php", "local.php.bak" に加えて、親ディレクトリ("dokuwiki/conf")も書き込み可能にすることで設定できました。詳細はコメント参照。 vanjac さんに感謝です。

ユーザー管理関連の設定項目の詳細

最後に、ユーザー管理関連の設定項目をご紹介しておきます。前述のとおり、管理者としてログインすれば、これらは「サイト設定」の画面から簡単に変更できます。

useacl
1 を設定すると、ユーザー管理機能が有効になります。
openregister
0 を設定すると Web 上でのユーザー登録が無効になり、管理者しかユーザーを登録できなくなります。
autopasswd
0 を設定すると、ユーザー登録時にパスワードをユーザー自身で設定できるようになります。デフォルトではパスワードを自動生成してユーザーにメールします。
resendpasswd
1 を設定すると、パスワードの再発行をユーザー自身で行えるようになります。再発行されたパスワードはメールでユーザーに通知されます。この機能を利用するには、パスワードファイルが Apache ユーザーから書き込み可能になっている必要があります。
authtype
ユーザー情報の保管方法を "plain" (users.auth.php), "mysql" (MySQL), "pgsql" (PostgreSQL), "ldap" (LDAP), "punbb" (PunBBの認証情報を使うモードらしい) から選択します。デフォルトは "plain"。
passcrypt
パスワードの暗号化の方法を "md5" (通常の MD5), "smd5" (洗練された(?)MD5), "sha1" (通常の SHA1), "ssha" (洗練された(?)SHA1), "crypt" (UNIX の crypt), mysql (バージョン 4.1.1 以前の MySQL), my411 (バージョン 4.1.1 以降の MySQL) から選択します。デフォルトは "smd5"。
defaultgroup
ユーザー登録時に自動的に所属するグループを指定します。デフォルトは "user"。
superuser
管理者権限を持つユーザー名、もしくはグループ名を指定します。グループを指定するときはグループ名の前に "@" を付けることで区別します。
profileconfirm
0 を指定すると、ユーザー情報の変更時にパスワードを確認するようになります。

DokuWiki は全体的にシンプルかつ必要十分な設計がいいですね。ユーザー管理にもその思想が反映されていて、非常に設定しやすく、しかも通常の用途では不足を感じることはないと思います。TWiki のような超強力なソフトウェアもいいのですが、個人的にはシンプルですぐに使えるソフトのほうが好感が持てますね。なんというか、Linux らしい気がします(^^)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles