(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

【例4】アクセスしてくる場所でアクセスを制限

 「企画」共有はビルの2階にいるユーザーだけがアクセスでき,「人事部」共有はビルの3階にいるユーザーだけがアクセスできるようにする。ビルは階ごとにTCP/IPのセグメントが分かれており,2階は10.0.2.0/255.255.255.0,3階は10.0.3.0/255.255.255.0であるとする。

 /home/kikakuの属性を775(rwxrwxr-x)とし,ディレクトリの所有者もグループもkikakuとする。また,/home/jinjiの属性を755(rwxr-xr-x)とし,ディレクトリの所有者もグループもjinjiであるとする。

[企画]
comment = 企画の共有フォルダ
path = /home/kikaku
writeable=yes
hosts allow = 10.0.2.0/255.255.255.0
force create mask = 0664
force directory mask = 0775
inherit permissions = yes
[人事部]
comment = 人事部の共有フォルダ
path = /home/jinji
writeable=yes
hosts allow = 10.0.3.0/255.255.255.0
force create mask = 0664
force directory mask = 0775
inherit permissions = yes

 共有には,ユーザーとグループによってアクセス制限がかけられているが,hosts allowを付けることで,他人のパスワードを使った不正アクセスを防止できる。

【例5】企画グループのユーザーに加え,人事グループのユーザーも更新可能な共有の設定。ただし,一般ユーザーは参照のみとする
 /home/kikakuの属性を 777(rwxrwxrwx)とし,ディレクトリの所有者もグループもkikakuとする。また,企画グループのユーザーはkikakuというグループに所属し,人事グループのユーザーはjinjiというグループに所属するものとする。
[企画]
comment = 企画の共有フォルダ
path = /home/kikaku
writeable=no
write list = @kikaku @jinji
force create mask = 0666
force directory mask = 0777
inherit permissions = yes

 例5では,Sambaサーバー経由でアクセスする場合は上記のアクセス制限がかかるが,Linuxのファイル・システムのファイル・アクセス権限が777(だれでもアクセス可能)なので,Linuxにログインすれば一般ユーザーでも自由にアクセスできてしまう。このため,(Linuxにログインできないよう)telnetやftpによる接続を制限すると良いだろう。

【例6】ユーザー・ホーム機能により,自分のユーザー・ホームは自分しかアクセスできないようにする

 ユーザー・ホーム機能とは,共有を表示する際にクライアントのユーザー名を共有名としてマッピングして表示するものである。例えば,yamadaというアカウントでSambaサーバーにアクセス(ネットワーク・コンピュータをクリック)した場合,Linux上の/home/yamadaが共有名yamadaとして表示され,また,suzukiというアカウントでSambaサーバーにアクセス(ネットワーク・コンピュータをクリック)した場合はLinux上の/home/suzukiが共有名suzukiとして表示される。

 しかし,初期状態のままではyamadaというユーザーが「\\sambaサーバー名\suzuki」としてユーザーsuzukiのホームにアクセスできてしまう(この場合,yamadaというユーザーの権限でアクセスするので,ファイル更新ができるかどうかはファイルの属性による)。これを防ぐにはsmb.confに以下のように定義すればよい。

[homes]
comment = %S さん専用の共有です
valid users = %S     
writeable=yes
browseable = No

 なお,共有名を指すマクロ%S(現在のサービス名)がユーザー・ホーム機能ではhomesでなくユーザー名になる。

【例7】Windows9x/Meの共有のような,パスワードだけでアクセスできる共有を作る

 SambaやWindows NT/2000/XPでは,一般にユーザーを登録しないと共有にアクセスできない。この例では,ユーザー登録をしていなくても,パスワード認証だけでアクセスできる共有を作る。

[global]
security = share
[企画]
comment = 企画の共有フォルダ
path = /home/kikaku
writeable=yes
username = kikaku
[人事部]
comment = 人事部の共有フォルダ
path = /home/jinji
writeable=yes
username = jinji

 上記の設定では,Sambaに登録されていないユーザーであってもkikakuユーザーのパスワード(SWATのパスワード画面で設定)を正しく入力すれば「企画」共有にアクセスできる。また,「人事」共有へはjinjiユーザーのパスワードでアクセスできる。

 usernameというパラメータは,security = shareのときしか使用できないので注意していただきたい。共有へのアクセス時にusernameで指定したユーザーのパスワードを入力すれば,そのユーザーの権限でアクセスできる。Windows9xは共有にアクセスするときにユーザーを指定できないが,usernameを使えばサーバー側で指定したユーザーに変更できる。

 これを応用すると,ユーザー・ホーム機能もパスワード入力だけで使用できるようになる。

【例8】ユーザー・ホーム機能により,パスワードだけで自分のユーザー・ホームにアクセスできるようにする
 例6では,yamada(でWindows9xマシンにログインしている)というユーザーが「\\sambaサーバー名\suzuki」として,ユーザーsuzukiのホームに(suzukiの権限で)アクセスすることはできない。しかし,以下の設定をすればユーザーyamadaでも\\sambaサーバー名\suzukiとして,ユーザーsuzukiのパスワードを入力すればsuzukiの権限でホームをアクセス可能である。
[global]
security = share
[homes]
comment = %S さん専用の共有です
username = %S     
writeable=yes
browseable = No
hosts allow = 10.1.2.0/255.255.255.0

 この設定では,例えばインターネット・プロバイダなどが,ユーザーのホームページ更新をSambaにより行わせることを可能にする(プロバイダのアクセス網に接続しているユーザーに制限した方が良いだろう)。そのときプロバイダからすれば,ユーザーがWindows9x/Meにどんなユーザーでログインしているのか分からない(Windows NT/2000/XPクライアントなら,ユーザーを切り替えられる)。ユーザーのホームページ更新をWindowsNT/2000/XPサーバーにより行わせることはできないが,Sambaならこのように簡単に実現できる。

(ミラクル・リナックス 小田切 耕司)


(次回に続く)