WebDAVでディレクトリごとにログインできるユーザーを分ける方法がわかった。
WebDAVでというか、lighttpdでのアクセス認証がそのままWebDAVに当てはまるということなんだけどね。
lighttpdのディレクトリアクセス認証はApatcheのように.htaccessを置くということではなくて、すべて設定ファイルlighttpd.confで一元管理するのね。
そのユーザーがどこのディレクトリアクセスに対応しているかは、まずひとつめとしてhtdigestでのユーザー作成時のレルムで分けられる。
このユーザーというのはシステムのユーザーではなくて、あくまでもlighttpdのために作られたパスワードファイル内のユーザーのことね。
だから例えば
ユーザー"user1"にアクセスを許すのが"dav/dir1/"
ユーザー"user2"にアクセスを許すのが"dav/dir2/"
だったら、例えばユーザーを以下で作成したら、
htdigest passfile "realm1" user1
htdigest passfile "realm2" user2
auth.require =(
"/dav/dir1/" =>
(
"method" => "digest",
"realm" => "realm1", #レルムが違う
"require" => "valid-user"
),
"/dav/dir2/" =>
(
"method" => "digest",
"realm" => "realm2", #レルムが違う
"require" => "valid-user"
)
)
これでそれぞれのディレクトリのアクセスが分けられる。
これはまんまWebDAVにも反映される。
このとき、WebDAVクライアントからは自分がアクセスしているディレクトリ以外は見えません。
この例の場合dav以下にdir1とdir2がありますが、dir1にログインしているuser1からはdir2は存在さえもわかりません。
WebDAVのディレクトリ設定はもちろん複数必要。
$HTTP["url"] =~ "^/dav/dir1($|/)"{
webdav.activate = "enable"
webdav.is-readonly = "disable"
}
$HTTP["url"] =~ "^/dav/dir2($|/)"{
webdav.activate = "enable"
webdav.is-readonly = "disable"
}
ディレクトリの設定は正規表現なので以下のように1つにできるけど
$HTTP["url"] =~ "^(/dav/dir1|/dav/dir2)($|/)"{
アクセス設定が分けられるので前者のように個別にした方がいいでしょう。
この部分はあくまでも「WebDAVでこのディレクトリをこう使うよ」ということなのでユーザー認証には直接には関係がない。
レルムは1ディレクトリに1つしか設定できない模様。
またレルムが同じだとしても、"require"の設定でユーザー別に設定できる。
"valid-user"が「全てのユーザーの中で」の意なので以下のようにする。
以下の例はuse1,user2ともにレルムが"realm1"とする。
auth.require =(
"/dav/dir1/" =>
(
"method" => "digest",
"realm" => "realm1", #レルム同じ
"require" => "user=user1"
),
"/dav/dir2/" =>
(
"method" => "digest",
"realm" => "realm1", #レルム同じ
"require" => "user=user1|user=user2" #ここで対象ユーザー設定
)
)
この場合、/dav/dir1/にはuse1のみ。
/dav/dir2/にはuse1とuser2の両方がアクセスできる。
管理する人数が少ない場合にはこっちの方が柔軟性があってよいかもしれない。
これらは実際に試してますので、Pogoplug上のバージョンでは同様に動くと思われ。
Pogoplug ブラック POGO-P25/Cloud Engines

¥価格不明
Amazon.co.jp
WebDAVでというか、lighttpdでのアクセス認証がそのままWebDAVに当てはまるということなんだけどね。
lighttpdのディレクトリアクセス認証はApatcheのように.htaccessを置くということではなくて、すべて設定ファイルlighttpd.confで一元管理するのね。
そのユーザーがどこのディレクトリアクセスに対応しているかは、まずひとつめとしてhtdigestでのユーザー作成時のレルムで分けられる。
このユーザーというのはシステムのユーザーではなくて、あくまでもlighttpdのために作られたパスワードファイル内のユーザーのことね。
だから例えば
ユーザー"user1"にアクセスを許すのが"dav/dir1/"
ユーザー"user2"にアクセスを許すのが"dav/dir2/"
だったら、例えばユーザーを以下で作成したら、
htdigest passfile "realm1" user1
htdigest passfile "realm2" user2
auth.require =(
"/dav/dir1/" =>
(
"method" => "digest",
"realm" => "realm1", #レルムが違う
"require" => "valid-user"
),
"/dav/dir2/" =>
(
"method" => "digest",
"realm" => "realm2", #レルムが違う
"require" => "valid-user"
)
)
これでそれぞれのディレクトリのアクセスが分けられる。
これはまんまWebDAVにも反映される。
このとき、WebDAVクライアントからは自分がアクセスしているディレクトリ以外は見えません。
この例の場合dav以下にdir1とdir2がありますが、dir1にログインしているuser1からはdir2は存在さえもわかりません。
WebDAVのディレクトリ設定はもちろん複数必要。
$HTTP["url"] =~ "^/dav/dir1($|/)"{
webdav.activate = "enable"
webdav.is-readonly = "disable"
}
$HTTP["url"] =~ "^/dav/dir2($|/)"{
webdav.activate = "enable"
webdav.is-readonly = "disable"
}
ディレクトリの設定は正規表現なので以下のように1つにできるけど
$HTTP["url"] =~ "^(/dav/dir1|/dav/dir2)($|/)"{
アクセス設定が分けられるので前者のように個別にした方がいいでしょう。
この部分はあくまでも「WebDAVでこのディレクトリをこう使うよ」ということなのでユーザー認証には直接には関係がない。
レルムは1ディレクトリに1つしか設定できない模様。
またレルムが同じだとしても、"require"の設定でユーザー別に設定できる。
"valid-user"が「全てのユーザーの中で」の意なので以下のようにする。
以下の例はuse1,user2ともにレルムが"realm1"とする。
auth.require =(
"/dav/dir1/" =>
(
"method" => "digest",
"realm" => "realm1", #レルム同じ
"require" => "user=user1"
),
"/dav/dir2/" =>
(
"method" => "digest",
"realm" => "realm1", #レルム同じ
"require" => "user=user1|user=user2" #ここで対象ユーザー設定
)
)
この場合、/dav/dir1/にはuse1のみ。
/dav/dir2/にはuse1とuser2の両方がアクセスできる。
管理する人数が少ない場合にはこっちの方が柔軟性があってよいかもしれない。
これらは実際に試してますので、Pogoplug上のバージョンでは同様に動くと思われ。
Pogoplug ブラック POGO-P25/Cloud Engines

¥価格不明
Amazon.co.jp