Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly 共著
第一版 1999 年 11 月
1-56592-449-5, 注文番号: 4495
416 ページ, 34.95 ドル
ハードコピー版(英語)を購入する

目次


Previous: 6.1 ユーザとグループ Chapter 6
Users, Security, and Domains
Next: 6.3 認証とセキュリティ
 

6.2 共有に対するアクセス権の制御

セキュリティ上の理由で、特定の共有に対する特定のユーザからのアクセスを制限する必要が発生することは多いであろう。 Samba でこれを行うのは簡単である。Samba には、実用的なセキュリティ設定を行うためのオプションが豊富にある。Samba のセットアップ時に利用したくなるであろう設定の幾つかを、ここで紹介しよう。

WARNING: 繰り返しになるが、Windows 98 や Service Pack 3 (以上)を適用した Windows NT 4.0 から接続する場合、クライアントから Samba サーバへは暗号化されたパスワードが送付されるため、接続が定常的に拒否されることがある。この章では、どのように Samba の暗号化パスワードの設定を行うかについて記述する。 Section 6.4, パスワード セクションも参照のこと。

有効なユーザ(valid users)を指定した場合にどうなるかは既にみてきた。また無効なユーザ(invalid users)  -Sambaやその共有へのアクセスを許可されないユーザ- のリストを設定することも同様に可能である。この設定は invalid users オプションにより行われる。このオプションが頻繁に使われる状況の一つを先に述べた: [homes] セクションのデフォルトをグローバルに設定した上で、様々なシステムユーザやスーパーユーザにはアクセスを許可したくない場合である。以下一例を示す:

[global]
	invalid users = root bin daemon adm sync shutdown \
						halt mail news uucp operator gopher
	auto services = dave peter bob

[homes]
	browsable = no
	writeable = yes

invalid users オプションには valid usersオプションと同様に、ユーザ名だけでなくグループ名も設定できる。ユーザもしくはグループが両方のリストに存在した場合は、 invalid users オプションの方が優先され、そのユーザやグループは共有へのアクセスを拒否される。

逆に、 admin usersオプションを用いることで、特定のユーザが特定の共有に対してスーパーユーザ(root)としてアクセスできるように明示的に設定することもできる。例を以下に示す:

[sales]
		path = /home/sales
		comment = Fiction Corp Sales Data
		writeable = yes
		valid users = tom dick harry
		admin users = mike

このオプションは、ユーザ名とグループ名の両方を含むことが可能である。加えて先頭に @をつけることで、NIS のネットグループ名で設定を行うことも可能である。ネットグループが見つからなかった場合、Samba は、通常の UNIX のグループと見なして参照を行う。

共有に対する管理者権限をグループに割り当てるのは、注意すること。 Samba チームは、このオプションの利用を避けることを強く推奨する。このオプションにより、特定の共有に対して指定したユーザやグループが root 権限でアクセスできるようになるためである。

共有にアクセスするユーザに対して、読み込み専用、もしくは読み書き可能のアクセス権を強制的に付与したい場合は、 read list write list の各オプションを用いて行うことができる。これらのオプションを用いることで、共有単位で書き込みを禁止したり、読み込み専用でも特定のユーザに対して書き込みアクセス権を与えたりすることが可能になる。以下に例を示す:

[sales]
		path = /home/sales
		comment = Fiction Corp Sales Data
		read only = yes
		write list = tom dick

write list オプションは UNIX 上の権限を上書きするものではない。write list 中のユーザに UNIX システム上での書き込み権限を付与せずに共有を作成した場合、そのユーザは write listの設定に関わらず、書き込みを拒否される。

6.2.1 ゲストアクセス

前述したように、共有に対してゲストアクセスが可能なユーザを設定することが可能である。ゲストアクセスを設定するオプションは簡単である。一つめのものは guest accountであり、ゲストユーザが Samba サーバに接続する際に用いられる UNIX のアカウントを設定する。デフォルトは、コンパイル時に設定されるが、通常 nobodyである。システムのサービスへのアクセスでトラブルが発生している場合は、ゲストユーザを ftp にすることもできる。

共有へのアクセスをゲストのみに制限したい場合、すなわち共有にアクセスする際には全てのクライアントがゲストアカウントとして接続するようにさせたい場合は、 guest only オプションを guest ok オプションと併せて用いることで実現できる。以下に例を示す:

[sales]
		path = /home/sales
		comment = Fiction Corp Sales Data
		writeable = yes
		guest ok = yes
		guest account = ftp
		guest only = yes

この場合、 guest only guest ok の両方のオプションを yesとすること。そうしないと、Samba は指定したゲストアカウントを使用しない。

6.2.2 アクセス制御オプション

表 6.1 に、共有に対するアクセス制御に利用できるオプションをまとめた。


表 6.1: 共有レベルのアクセスオプション

オプション

パラメータ

機能

デフォルト

範囲

admin users

文字列 (ユーザ名のリスト)

root としてアクセス可能なユーザのリストを指定する

なし

共有

valid users

文字列 (ユーザ名のリスト)

共有に接続可能なユーザのリストを指定する

なし

共有

invalid users

文字列 (ユーザ名のリスト)

共有へのアクセスを拒否するユーザのリストを指定する

なし

共有

read list

文字列 (ユーザ名のリスト)

書き込み可能な共有に対して読み込み専用でのアクセスを許可されたユーザのリストを指定する

なし

共有

write list

文字列 (ユーザ名のリスト)

読み込み専用の共有に対して読み書き可能のアクセス権を持つユーザのリストを指定する

なし

共有

max connections

数値

共有に対して同時に接続可能な接続数を指定する

0

共有

guest only (only guest)

真偽値

共有に対してゲストアクセスのみを許可するかどうかを指定する

no

共有

guest account

文字列 (アカウント名)

ゲストアカウントとして利用される UNIX のアカウント名

nobody

共有

6.2.2.1 admin users

このオプションは、 rootとしてファイル操作が可能なユーザのリストを指定する。指定したユーザは、アクセス権に関わらず修正や削除等の作業を行うことができる。作成されたファイルは所有者が root となり、admin user のデフォルトグループが使用される。 admin users オプションは PC のユーザが特定の共有に関して管理者権限を持つことを可能とする。このオプションを使わないことを推奨する。

6.2.2.2 valid users と invalid users

これらの二つのオプションは、特定の共有に対してアクセス権可能、あるいは不可能なユーザやグループのリストを設定する。コンマで区切ったユーザもしくはアットマーク(@)を先頭に付けた NIS や UNIX のグループ名を入力することが可能である。

これらのオプションに関して忘れてはならない重要なこととして、 invalid users リストに存在する名前やグループについては 常に アクセスを拒否されることがある。これは valid users のリストに(何らかの形)で含まれていても変わらない。デフォルトではどちらもオプションも設定されていない。どちらのオプションも設定されていない場合は、全てのユーザが共有へのアクセスを許可される。

6.2.2.3 read list と write list

valid users invalid users オプションと同様に、このオプションの組は各々書き込み可能な共有に対して読み込みアクセス権しか持たないユーザと、読み込み専用のアクセスに対して書き込みアクセス権を持つユーザとを指定する。各々のオプションの値は、ユーザのリストである。 read list は、サーバ上の UNIX のファイルアクセス権も含め、Samba が付与するアクセス権を上書きすることで、ユーザの書き込みを拒否する。 write list は他の Samba が付与したアクセス権を上書きすることで、書き込みアクセスを実現する。ただしユーザが UNIX システム上のファイルに対する書き込みアクセス権を持たない場合は、書き込みアクセスを可能とすることはできない。( @usersのように)アットマークを名前の前につけることで、NIS や UNIX のグループ名を指定することが可能である。どちらの設定オプションもデフォルト値はない。

6.2.2.4 max connections

このオプションは、ある共有に対してクライアントが同時に接続可能な最大数を設定する。最大接続数に到達した後で接続しようとした場合、それらは接続を拒否される。デフォルト値は 0であり、これは無制限の接続が可能であることを意味する。この設定は以下のようにして共有単位で変更することが可能である:

[accounting]
	max connections = 30

このオプションは、ライセンス制限のあるプログラムやデータに対して同時にアクセスを行うユーザを制限する必要があるときに有用である。

6.2.2.5 guest only

この共有レベルのオプションは、( only guestと呼ばれることもあるが) 共有に対する接続を guest account オプションで指定されたユーザが行ったものとする。このオプションを設定する共有は、Samba にこのオプションを認識させるため、 guest ok = yes を明示的に指定する必要がある。このオプションのデフォルト値は noである。

6.2.2.6 guest account

このオプションは、Samba が共有に対するゲストアクセス時に使用するアカウント名を指定する。このオプションのデフォルトはシステムによって異なるが、通常は nobodyに設定される。デフォルトのユーザアカウントをゲストユーザとして接続に利用するとトラブルが発生する場合がある。もしシステムでそのような現象が発生した場合、Samba チームは ftp アカウントをゲストユーザのアカウントとして利用することを推奨する。

6.2.3 ユーザ名のオプション

表 6.2 に Samba が Windows と UNIX との間でユーザ名に関する非互換性を是正するために利用する二つのオプションを示す。


表 6.2: ユーザ名のオプション

オプション

パラメータ

機能

デフォルト

範囲

username map

文字列 (フルパス名)

ユーザ名のマッピングファイルの名前を指定する

なし

グローバル

username level

数値

ユーザ名を合致させる時に何文字の大文字を利用するかを指定する

0

グローバル

6.2.3.1 username map

SMB ネットワークにおけるクライアントのユーザ名は UNIX ネットワークでのユーザ名が普通 8 文字以内に制限されているのに比べると長い(255文字まで可能である)。従って、個々のユーザはクライアント上でのユーザ名とは別に Samba サーバ上で短い名前を持つ必要があるかも知れない。クライアントのユーザ名と 8 文字以下の文字数のユーザ名からなる UNIX のユーザ名を マッピング させることで、この問題を解消することが可能である。これは、この後で記述するフォーマットに従った通常のテキストファイルに記述する。Samba のグローバルな username map オプションでファイルのパスを指定することが可能である。このファイルへのアクセスを制限するため、ファイルの所有者を root とし、所有者以外からのアクセスを禁止すること。そうしないと、信頼できないユーザがこのファイルにアクセスして、簡単にクライアントのユーザ名を Samba サーバの root ユーザにマッピングすることができてしまう。

このオプションは以下のようにして記述する:

[global]
	username map = /etc/samba/usermap.txt

username map ファイルの各エントリは以下のように記述する: まず UNIX ユーザ名を記述し、次に等号(=)を記述、最後にホワイトスペースで区切った一つ以上の SMB クライアントのユーザ名である。Note that unless instructed otherwise, (i.e., a guest connection), Samba はクライアントとサーバのユーザは同じパスワードである仮定して動作する。なお、NT グループも @ 記号を用いることで、一つ以上の UNIX のグループにマッピングできる。以下に例を示す:

jarwin = JosephArwin
manderso = MarkAnderson
users = @account

アスタリスクを利用することで、username map ファイルのエントリに全ての長いクライアントのユーザ名に対応するワイルドカードを設定することもできる:

nobody = *

ファイル中にコメントを挿入する場合は、(#) か (;)で行をはじめること。

このファイルを用いることで、ある UNIX のユーザを別のユーザとしてみなすことも可能である。これを行う場合、Samba やクライアントは、マッピングされたユーザと Samba が別のパスワードを期待してる場合も通知を受け取れないので、注意すること。

6.2.3.2 username level

(Windows 等の)SMB クライアントはSMB コネクションの要求時に大文字でユーザ名を送信する。つまりクライアントのユーザ名は大文字と小文字を区別する必要はない。一方 UNIX サーバではユーザ名は大文字と小文字を区別する。デフォルトではユーザ ANDY はユーザ andy と異なる。デフォルトの Samba ではこの問題に対応するため、以下のような処理を行っている:

  1. クライアントから送信された名前のユーザアカウントが存在するかどうかをチェックする

  2. ユーザ名を全て小文字に変換してチェックする

  3. 最初の文字だけを大文字に、それ以外の文字を小文字にしたユーザ名をチェックする

もし Samba により多くの大文字と小文字の組をチェックさせたい場合は、 username level グローバル設定尾部損を利用することができる。このオプションはユーザ名中の何文字が大文字になっていると見なして共有への接続時にチェックを行うかを指定する整数値を値としてとる。このオプションは以下のようにして指定する:

[global]
	username level = 3

この場合、Samba は、あるユーザ名について 3 文字の大文字を持つ全ての組み合わせを確認する。数値を大きくすることで、Samba はユーザ名を確認するときにより多くの組合わせを確認することとなり、認証にかかる時間が増加する。


Previous: 6.1 ユーザとグループ Next: 6.3 認証とセキュリティ
6.1 ユーザとグループ Book Index 6.3 認証とセキュリティ

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

© 1999, O'Reilly & Associates, Inc.