Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Linux
自宅サーバいじり(今日は主に Samba)でマズイ点がぼろぼろと明るみに。

今日の今日まで気づきませんでしたが、Samba の homes 共有を使うとサーバの / 以下すべてが共有されてしまう模様。。。
というのは、

$ getent passwd nobody
nobody:x:99:99:Nobody:/:/sbin/nologin

ということで、nobody の home directory は / に設定されています(他にも / が home dir になっているアカウントは存在するケースがあります)。
つまり homes 共有が有効だと、「\\SambaServer\nobody」というような UNC パスで / へのアクセスが得られてしまいます。

この時の権限は nobody ではなく接続時に入力したユーザ名になるので、

valid users = +somegroup

のように指定を行っても、nobody の共有は消えることはありません。
valid users は [homes] という共有へログオン可能なユーザのアクセスを制限するだけで、実際にそのユーザの共有が停止されるわけではないということです(ログオンを許可した後の挙動はパーミッションに依存)。

コンソールログオンを想定している場合はセキュリティレベルは変わりませんが、そうではない場合、/tmp 以下に大量のファイルを作成されるなど、予期しない結果が起こる可能性があります。

 *

結論 1. homes 共有を使う場合は、「valid users = %S」を設定するべき
%S はサービス名に置換され、「\\SambaServer\user1」というパスであれば user1 に相当する。
これによって、「\\SambaServer\ユーザ」 に対するアクセスを「ユーザ」のみに限定することが可能。

結論 2. [global] セクションに「invalid users = root」を追加しておくべき
smbldap-tools を使って LDAP 上でアカウントを管理している場合、UID = 0 のユーザがログオン可能なことがあるが、これは好ましくないので禁止する。
ドメイン環境でなければ管理者アカウントは不要だと思われるので、
# smbldap-userdel root
のように削除してもよいだろう(自分のスタンドアロンサーバではそうしました)。

 *

一番ベストなのは、

[myhome]
path = /home/%U
...

のように設定することですが、これだと階層的なホームディレクトリを構成できないという弱点が。~%U とか出来ればいいのにな。


(追記) これは %H でできますね。というか、これを何故ベストだと思ったのか思いだせない...。

Comments

寿
2008/11/10
homes 共有は全員の設定が共有化できて書けるから便利なんだけど、昔試してた時に連続してログオンした時とかに前のが残ったりなんか挙動が不思議(今思えばnet useが残ってただけだろうけど)だったので、今ではご存じのようにセッションに左右されないように、LDAPのsambaHomePathに相対パス+ユニークによるほぼフルパスを書いています。
2008/11/10
なるほど、不特定多数の利用する環境だとそういうケースもあるんですね。
セッションが残るというのがいかにも Windows らしいですね ^^;;
Leave Yours...
Name:
E-mail / URL (optional):
Comment:
Are You Robot?: