tracとSVNのユーザアカウントを一元管理する

同じhtpasswdを見させる、という方法でもいいんだが、管理対象が増えると面倒なのでmod_auth_pamとmod_auth_sys_groupでサーバ上のアカウントを使ってやってみる。
まずSVN用ユーザグループ(リポジトリごとに分けるとなお便利)を作り、SVNにはsvn+sshでアクセスする。
ちなみにMacSVNクライアントのSCPluginはdsaでパス無しログインできるようにしておくとsvn+sshを使える。

次に、mod_auth_pamとmod_auth_sys_groupでtracのログインページに同じくSVN用グループを許可する認証をかける。
認証モジュールはロード順に適用されるので、最初にauth_basicをロードしておき、「AuthBasicAuthoritative off」で認証失敗時は次の認証モジュールへ移るよう設定しておけばhtpasswdも同時に使える。(ユーザ多い環境でhtpsswdが安全かはさておき)
ただし、mod_auth_sys_groupは/etc/groupへの読み込み権限を要求するので、apacheの実行ユーザをgroupグループあたりに追加する必要がある。

mod_auth_pamはすでに開発が停止しており(たぶん)、サーバのアカウントを使うならMod_Authnz_Externalをpwauth使うべきだがubuntuにはpwauthが入っていないっぽい。mod_authnz_ldapもあるので、何ならこっちを使うのがいいか。

どの方法にしてもユーザアカウント情報を使うのであればSSLかけるべき。オレオレ証明書でも平文よりはマシ。Digest認証ならモアベター

svn+sshへの移行

サーバマシンも変更するので、まず旧リポジトリのダンプをとっておく。
リポジトリを作る時、1.5系のリポジトリは1.4から操作できないので --pre-1.5-compatible オプションをつけておく。

svnadmin dump /home/svn/hogehoge > hogehoge.dump
ファイルをコピーしたら
svnadmin create /var/lib/svn/hogehoge  --pre-1.5-compatible
svnadmin load /var/lib/svn/hogehoge < hogehoge.dump

svn+sshにする場合、リポジトリのファイルへの書き込み権限を各ユーザが持たなければいけない。
svnグループを作ってユーザを追加、リポジトリのグループをsvn変更しグループへの書き込み権限を加える。

chgrp svn -R /var/lib/svn/hogehoge
find /var/lib/svn/hogehoge -perm -u+w -exec chmod g+w {} \;

これはまとめてシェルスクリプトにしておくと便利かも(svnadminにグループ設定のオプションとか無いのかね?)

#!/bin/sh

svnadmin create $1 --pre-1.5-compatible
chgrp -R svn $1
find $1 -perm -u+w -exec chmod g+w {} \;

Apacheからも公開だけはするので、以下のように設定。

 
      deny from all
   

もはや懐かしのアレ

ネットで話題の図書館系ブロガーid:min2-flyの人気に乗ずるため偽春菜がまじゃんぱー先生を作ってみた

作りはじめてから気づいたのだが、俺図書館ネタなんて思いつかねーよ…

hikiに閲覧に認証が必要なページの作成機能を追加

承前

hiki/command.rb#cmd_view最終行でgenerate_page( data )を呼ぶ前に

if not @plugin.auth? and @db.get_attribute(@p, :keyword).include? 'auth'
  data[:body] = "Please Login"
end

とする。認証させたいページのキーワードに"auth"を指定すると、ログインしていなければ見れなくなる。(edit_userを使わない場合は誰でも認証済み扱いなので注意)

追記:

この方法ではquote_page等のページデータを直接ロードするプラグインで回避できてしまう。ので、それがいやなら

  • そういうプラグインは使わない(使うとしたら改造して要認証化して使う)
  • hiki/storage.rbとかhiki/db/フォルダ内のファイルを改造(loadやload_cacheをいじればいいかな)

という感じかな。

あと、編集なんかの権限は command.rb#dispatch メソッド中でチェックされている。フッタ・ヘッダなんかも見せたくない場合は"if @cmd == 'edit'"の直前に

if @cmd == 'view' and not @plugin.auth? and @db.get_attribute(@p, :keyword).include? 'auth'
  raise PermissionError, 'Permission denied'
end

という感じにするといいかも。

newsプラグイン改の改良(できた)

承前

はいどうも、attachプラグイン参考ではなくて、auth?でチェックしてわけました。edit_userと併用し、hikiconf.rbで"@options['news2.auth'] = true"って書くと認証されてないユーザはニュース投稿が出来ません。やったね。

http://www.open.esys.tsukuba.ac.jp/~kskeil/cgi-bin/hiki-0.8.7/?news

あとあれか、hikiのUsersMLでもあった(コメントくれた人と同一人物な気がするが)一覧から削除と閲覧制限な。俺も欲しい。あとテーブルがCSVで書きたい。
さらに言えばデフォルトのテーマは今イチなので使いやすい奴を別に作った方がいいかとか色々出てくるよね。

そういや出欠プラグインの新しいのを作ったんだが、以前のものと統合できないか迷う。しかし実現するとだんだんwikiから離れてくよなぁとか。