Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly 共著
第一版 1999 年 11 月
1-56592-449-5, 注文番号: 4495
416 ページ, 34.95 ドル

ハードコピー版(英語)を購入する

目次


Previous: 5.5 ロックと Oplock Chapter 6 Next: 6.2 共有に対するアクセス権の制御
 

6. ユーザ、セキュリティ、ドメイン

この章は、Samba サーバでユーザを設定する方法に付いて記述する。この話題は、最初は分かりやすく見えるかもしれないが、やってみるといろいろ厄介な点もあることがすぐにわかる。Samba 管理者の困難の一つは、ユーザの認証である。パスワードとセキュリティの問題は、現在のところ Samba のメーリングリストで最も頻出する質問である。いろいろな認証機構が、あるアーキテクチャではなぜうまく動作するのか(あるいは他のアーキテクチャではなぜだめなのか)について学べば、将来 Samba のユーザ設定のデバッグにかかる (かもしれない) 莫大な時間を節約することができる。

6.1 ユーザとグループ

始める前に前もって注意しておくが、Samba に対して Windows 98 や Windows NT 4.0 Workstation SP3 でアクセスしている場合は、接続前にサーバを暗号化パスワードに設定しておく必要がある。そうしないと、クライアントは Samba サーバへのアクセスを拒否されることになる。Windows クライアントは暗号化されたパスワードを送信するので、Samba がこれらを待ち受け、解読できるようにする必要があるのだ。 Chapter 2, UNIX システムへの Samba のインストールでもこの問題は扱ったが、それはないものとして、この章の後半で Samba をどのように設定すべきか示す。

ユーザを一人設定することからはじめよう。クライアントのユーザを設定する最もシンプルな方法は、サーバ上にその人の UNIX アカウント(とホームディレクトリ)を作成し、Samba にユーザの存在を認識させる方式である。このためには、Samba の設定ファイル中にユーザのホームディレクトリに対応する共有を作成し、 valid users オプションを用いて、アクセス可能なユーザを制限すればよい。以下に一例を示す:

[dave]
		path = /home/dave
		comment = Dave's home directory
		writeable = yes
		valid users = dave

valid users オプションには、共有へのアクセスを許可するユーザを列挙する。 この例では dave というユーザだけが共有へのアクセスを許可される。以前の章では guest ok パラメータを用いて、誰でもディスク共有へのアクセスができるようにした。ここではゲストアクセスは許可したくないから、このオプションは記述していない。特定の共有に対して、認証されたユーザおよびゲストユーザ両方からのアクセスを許可するようにもできる。この両者では、例えば各ファイルに対するアクセス権が異なるのが一般的である。

%H 変数により、ユーザのホームディレクトリを表記できることを思い出してほしい。また、UNIX のユーザ名を示す %u 変数や、クライアントのユーザ名を示す %U 変数を利用することもできる。以下に例を示す。:

[dave]
	comment = %U home directory
	writeable = yes
	valid users = dave
	path = %H

この 2 つの例は、Samba がクライアント指定に用いた Unix ユーザ (nakano 注: dave のこと) が path オプションで指定されたディレクトリに対して読み書きのアクセス権を持っていれば、動作する。言い方を代えれば、クライアントが共有に対する読み書きアクセス権を獲得するためには、クライアントは 前もって Samba の認証機構(暗号化パスワード, valid users 等) にパスし、さらに通常の Unix ユーザとしてのファイル/ディレクトリへのアクセス権を持っていないといけないわけだ。

ホームディレクトリにアクセスするユーザが一人だけなら、OS上でユーザアカウントを作成する時にアクセス権に注意すればよい。しかし、グループでアクセスするための共有ディレクトリを作成する場合は、動作させるにはもう少々段階が必要とある。会計 (accounting) 部門に対するグループ共有を smb.conf ファイルに設定してみよう:

[accounting]
	comment = Accounting Department Directory
	writeable = yes
	valid users = @account
	path = /home/samba/accounting
	create mode = 0660
	directory mode = 0770

最初に気がつく点は、有効なユーザ(valid user)として個々のユーザ名を設定せず、 @account と設定している点であろう。これは、有効なユーザが UNIX の account グループのメンバーであることを示す簡略記法である。ユーザをグループのメンバーとするには、システムのグループファイル (/etc/group もしくは同等のもの)の accountグループのエントリに追加する必要がある。一度行われれば、Samba は追加されたユーザを共有に対する valid users として認識する。

更に、グループのメンバがアクセス可能な共有を、 path 設定オプションで指定したところに作成する必要もある。以下は( /home/samba が既に作成されているとして) accounting 部門のための共有ディレクトリを作成する UNIX のコマンド例になる:

# mkdir /home/samba/accounting
# chgrp account /home/samba/accounting
# chmod 770 /home/samba/accounting

この smb.conf ファイルの例には、他にも二つのオプションが書いてあるが、両方とも以前の章で説明した。 create mode directory mode オプションである。これらのオプションは新規ファイルやディレクトリに与えうる最大限のアクセス権を設定する。上記の場合、この共有の内容に対する world からのアクセスを全て拒否する設定にしている(コマンド例に示したように chmod を使えば更に確実)。

6.1.1 [homes] 共有

各ユーザの共有に話を戻そう。ホームディレクトリの共有を数人のユーザに設定しなければならなくなったら、Chapter 5, ブラウジングと高度なディスク共有で紹介した、特殊な共有である [homes] 共有が使いたくなるだろう。 [homes] 共有を用いれば、必要なのは以下の設定だけである:

[homes]

	browsable = no
	writable = yes

[homes] 共有は Samba の設定ファイルにおける特別なセクションになる。ユーザが smb.conf ファイルに存在しない一般の共有に(UNCやWindows の Explorer を用いて)接続しようとすると、Samba は [homes] 共有があるかどうか探す。見つかったら、求められた共有名をユーザ名だとみなして、Samba サーバ上のパスワードデータベースファイル (/etc/passwd や同様のもの) を検索する。そのユーザが存在した場合は、Samba はそのクライアントを、自分のホームディレクトリに接続しようとしているユーザであると想定する。

実際に例を示そう。 sofia が Samba サーバ上の [sofia] という共有に接続しようとしているとする。設定ファイル中にそのような名前の共有は存在しないが、 [homes] 共有が存在しており、 sofia というユーザがパスワードデータベースに存在したとしよう。この場合 Samba は以下のような処理を行う:

  1. [sofia] という名前の新しいディスク共有を [homes] 共有で指定された pathオプションの値を用いて作成する。 path オプションが [homes] 共有で指定されていなければ、Samba はユーザのホームディレクトリを利用する。

  2. Samba は新しい共有のオプションを [globals]セクションの定義を用いて初期化し、更に [homes] 内で設定された値で上書きする (ただし browseable だけは上書きしない)。

  3. Samba は sofia のクライアントをその共有に接続させる。

[homes] 共有を使えば、 あなたのユーザたちに対して素早く手軽に共有を用意できる。また smb.conf ファイルにパスワードデータベースの内容を複写する必要もない。しかしながら、この方法には、いくつか指摘しておかなければならない問題点もある:

  • [homes] セクションは、マシン上の全てのアカウントに適用されるが、これは常に望ましいとは限らない。例えば root, bin, sys, uucpのような共有も、原理的には作成される。(グローバルな invalid users オプションを用いればこれを防止できる。)

  • browseable 設定オプションの意味が、他の共有とは異なっている。この設定は、 [homes] セクションがローカルなブラウズリストに現れないことを意味しているだけであって、例えば [alice] という共有が現れなくなる訳ではない。 [alice] というセクションが作成された場合、 [globals] セクションで共有に対して設定された browsablese の値が用いられ、 [homes]セクションの設定は用いられない。

説明したように、ユーザの UNIX ホームディレクトリがサーバの /etc/passwd ファイルで設定されていれば、 [homes] 共有には path の設定は不要である。ただし、有効なホームディレクトリがちゃんと存在することは確認しておくようにしよう。Samba はユーザのホームディレクトリの実体を自動で作成することはせず、ユーザのディレクトリが存在しなかったり、アクセスできなかったりした時は、単にtree connection を拒否する。


Previous: 5.5 ロックと Oplock 目次 Next: 6.2 共有に対するアクセス権の制御
5.5 ロックと Oplock 書籍索引 6.2 共有に対するアクセス権の制御

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.