![]() |
Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly 共著第一版 1999 年 11 月 1-56592-449-5, 注文番号: 4495 416 ページ, 34.95 ドル ハードコピー版(英語)を購入する |
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.txtusername 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 ではこの問題に対応するため、以下のような処理を行っている:
もし Samba により多くの大文字と小文字の組をチェックさせたい場合は、
username
level
グローバル設定尾部損を利用することができる。このオプションはユーザ名中の何文字が大文字になっていると見なして共有への接続時にチェックを行うかを指定する整数値を値としてとる。このオプションは以下のようにして指定する:[global] username level = 3この場合、Samba は、あるユーザ名について 3 文字の大文字を持つ全ての組み合わせを確認する。数値を大きくすることで、Samba はユーザ名を確認するときにより多くの組合わせを確認することとなり、認証にかかる時間が増加する。
© 1999, O'Reilly & Associates, Inc.