↓こんな風な設定書いておくと user1 さんだけに見えない /foo/bar ってディレクトリが作れる。
DefaultRoot /data/ROOT
<Directory /data/ROOT/foo/bar>
<Limit ALL>
IgnoreHidden on
DenyUser user1
</Limit>
</Directory>
- ※DefaultRootは特に必要なわけじゃなく、単にDefaultRootを使ってる場合の設定例を書きたかっただけです。
- Directoryで指定するのはchrootされた後のパス(/foo/bar)ではなく、chroot前のディレクトリで指定する。
- 設定の要は
IgnoreHidden on
です。- off な場合(デフォルト)、
ls /foo
で /foo/bar の存在は見えて、でもcd /foo/bar
はAccessDeniedで失敗する感じになる。 - on な場合、
ls /foo
で /foo/bar の存在自体が見えなくなって、cd /foo/bar
はNotFoundで失敗する感じになる。
- off な場合(デフォルト)、
- DenyUserじゃなくDenyGroupとか他の方法でDenyしても良い。
- DenyUserで指定するのは認証に使ったユーザ名です(uidに対するサーバ上の実ユーザ名ではない)。
- 例えば user1,user2,user3 が全員同じuid,gidが設定された仮想ユーザだった場合でも、 user1,user2,user3はユーザ名で区別されます。