Macintosh Developer Online (MDOnline)


2001年7月5日発行号 - Sambaを使う



昨日の記事で、Cobalt Cubeと書きましたが、正しくは「Qube」です。申し訳ありませんでした。
セキュリティには絶対はないというのはよく言われますけど、けっこう初歩的なことをはずしていても気がつかないものです…ってのを身につまされました。実は、会社で使っているあるサーバが、anonymousのログインでファイルが書き込めるようになっていたのに、1年ほども気付かなかったのです。幸い、どうもドイツのプロバイダで仲間内にファイルを配付する程度に使われた以外はほとんどanonymousアクセスはなかったみたいで、ホッとはしているのですが、痕跡が消されていることも考えられます。ただ、anonymousでは特定のアカウントのホームより上には行けないようになっていたので、たぶん大丈夫だと思います。ちなにみ、anonymousでファイルが書き込めるなんて、あまりに初歩的なセキュリティホールなんで、もしかしてハックツールですら忘れていることじゃないかなと思います。いずれにしても気がついてよかったです。逆に、なんで気がつかなかったかを良く考えてみたら、サーバをたてる作業をまかせていて、さらに運用もまかせていたことがあるかな。というか、「あまり干渉しない」という方針でネットワーク管理をずっとやっているのですが、いちおう専門職にサーバをたてるのをまかせていたので、それはないだろうと思っていました。しかし、ごくごく基本的なチェックというのは必要であることは、痛感した次第です。とりあえず、会社中のサーバでanonymousでログインできないかをチェックしました。また、サーバは主にFTPでファイルのやりとりをしているのですが、ログインできなく自分のホーム以下しか絶対に参照できないアカウントを作るスクリプトを組んだり、あるいはセキュリティ設計を見直したりとそれなりにFreeBSDの勉強になるにはなったのが、救いかと言えるかもしれません。実は、/etc/passwdを書き換えても変化しないと悩んでいたら、主となるパスワードファイルって/etc/master.passwdになっているとか、あるいはpwコマンドを使いこなす必要があるあたりはいろいろ勉強になりました。残念ながら、Mac OS Xにはつながらないネタではありますね(笑)。みなさんも、気をつけて下さい。
(新居雅行 msyk@mdonline.jp


Browsing Mac OS X》Mac OS X ServerのWindows向けファイルサーバ機能〜基本的な使い方(1)

Mac OS X Server 10.0のファイルサーバ機能には、何種類も存在するが、Mac OSやMac OS X向けにはこれまで説明してきたApple File Serviceを使うのが基本だろう。一方、Windowsクライアント向けには、「Windows Service」として提供されているうちの、WIndows File Serviceを利用することで、Windowsパソコンから見ればファイルサーバとして機能するのである。ファイルサーバやPostScriptプリントサーバ、さらにはWINSサーバ、クライアントからのブラウジングの機能に対応している。ユーザ接続数の上限は1000となっている。
だけども、UNIXに詳しい人にとっては、「Sambaが動いています」と言った方が情報としては的確かも知れない。Mac OS X Server 10.0.3ではSamba 2.0.8、10.0.4ではSamba 2.0.9が稼動するようになっている。ただし、その管理は例によって、Server Adminを使う点も注意しなければならない。セットアップなどは自動的に行われるとして、気になる設定ファイルだが、/usr/local/samba/lib/smb.confにある。これを編集して自分の思い通りにするということは基本的には行わない方がいいだろう。Server Adminで設定を行うと、このsmb.confファイルに上書きを行うので、設定は可能な限りServer Adminで行うのが基本だと考える。

Mac OS X ServerのWindows File Service、と言うべきだろうが、以下「Samba」と言ってしまおう。(その方が通りがいいだろうし。)そのSambaを動かすためには、Authentication Managerの機能がアクティブになっていないといけない。Mac OS X Serverのセットアップ時に、Authentication Managerを使うかどうかを問い合わされて、チェックを入れていればいいのだが、そうでない場合は、UtilitiesフォルダにあるNetInfo Domain Setupアプリケーションを起動して、Authentication Managerを使用するように設定を行う。また、筆者の手元では、ドメインネームの解決がうまくいかない場合にはSambaが起動しないという状態になってしまっていた。Mac OS X ServerでDNSを運用して対処はしているが、もし起動しない場合にはドメインネーム設定や逆引きができるのかなどをチェックしてみよう。

Sambaを利用するアカウントは、これまでに説明した方法で、Server Adminアプリケーションで定義をする。つまり、このサービスだけのアカウントを登録するのであはなく、Mac OS X Serverに登録したアカウントはいろいろなサービスで有効となっているというわけだ。また、共有するフォルダについても、やはりServer Adminを使って公開するように定義を行ったり、アクセス権を設定する。従って、Apple File Service向けに公開したディレクトリは、Sambaでも同じように公開されるわけだ。多くの場合はそれでも問題はないとは思うが、どうしてもWindows向けとMac OS向けに公開するディレクトリは別々にしたいとなると、標準の状態ではかなり難しいと言わざるを得ない。また、Sambaでは、アカウントのホームディレクトリをそのアカウントで接続した時に公開されるようにする設定が可能だが、Mac OS X ServerのServer Adminではその種の設定はできない。Mac OS向けにはNetInfoと組み合わせることで、ホームの自動マウントができるのであるが、Windows向けには基本的にはできないようにしているあたりは、ちょっとした差別化というやつだろうか。アカウントの登録方法や、ディレクトリの公開方法については、すでにこのコーナでお届けしたので、今回は説明は省略する。

Sambaの設定や起動は、Server Adminにある「ファイルとプリント」のタブにあるWindowsのアイコンを使う。ここで、即座にサービスを開始したいところだが、Windowsサービスの場合には、必ず設定を一ケ所なおしてから開始をする必要がある。

◇Server AdminでのWindowsサービスのメニュー
 

サービスを起動する前に、「Windowsファイルサービスを設定」を選択すると、設定ダイアログボックスが表示される。タブがいくつかあるが、「一般」のタブの設定をまずは確認しよう。

◇Windowsファイルサービスの「一般」の設定
 

「サーバ名」は、Mac OS X Serverマシンのホスト名が入力されている。任意に変更してもかまわないみたいだ。「ワークグループ」は、Windowsのサーバを分類するグループで、とりあえず使うのであれば、デフォルトのWORKGROUPでいいだろう。「説明」はWindowsクライアントからプロパティを確認したときなどに表示される説明文である。
そして、「コードページ」という設定があるが、ここは「日本語SJIS」を選択しておく。もちろん、Windowsのクライアントが日本語版であることが前提だが、この設定を最初の状態にしておくと、Windowsクライアントから2バイトコードのファイル名のファイルを正しく扱えなくなるのである。ここの設定は必ず変更しておく必要がある。そして「保存」ボタンを忘れないようにクリックしてから、Windowsサービスを起動する。なお、各種の設定を行った後は「保存」をクリックしておくが、即座に設定は反映されない。いったんサービスを停止してから再度サービスの起動が必要になる。
こうして公開したWindowsファイルサーバは、Windows側からブラウズすることができる。Windows 2000だと、「マイネットワーク」から問題なく参照することができた。マシンのアイコンをクリックした時にはパスワードを聞かれるかも知れない。もちろん、日本語のファイル名はきちんと処理されるし、同じ公開ディレクトリをMac OS Xの方で開いて、ファイルをMac OS XとWindowsで交換するということももちろん可能である。

◇Windowsファイルサービスの「一般」の設定
 

このように、ワークグループで指定した名前でサーバが分類される。また、サーバ名が一覧に見えている。サーバのさらに中身は公開されているフォルダの名前が見えている。ワークグループや、サーバ名は、このようにサーバをブラウズする時に使う名前だから、稼動させるネットワークの事情に合わせるというのが基本だ。

カテゴリ:Windows, ユーザ管理, サーバー製品, Browsing Mac OS X


Browsing Mac OS X》Mac OS X ServerのWindows向けファイルサーバ機能〜基本的な使い方(2)

なお、Windowsのネットワーク機能はなかなか謎なところがあって、ブラウズができたりできなかったりする。謎と言うのはちょっと無責任な言い方がだが、どうにも解決がつかないという経験は多くの方がされているのじゃないだろうか。もしそんな場合に出くわした時、「マイネットワーク」からの参照がダメな場合、エクスプローラの「アドレス」に「\\〈サーバ名〉」あるいは、「\\〈サーバのIPアドレス〉」を入力してEnterキーを押せば、たいがいはうまくいく(たとえば「\\right」のように入力する。毎度こうしたキータイプが面倒なら、ちょっとレガシーな方法だけど、エクスプローラの「ツール」メニューから「ネットワークドライブの割り当て」を選ぶなどして、たとえば、Gドライブにサーバの公開フォルダを割り当てておき、起動時に割り当てがされるよにしておけば、手軽だろう。ブラウズの問題とかで解決するのが本来の解決策だが、Windowsのバージョンごとの違いなどの問題ではまったりすることもあるので、スマートじゃないけど手っ取り早い解決方法を知っておくのも悪くないだろう。

ところで、ファイル名のやりとりについて簡単にまとめておこう。WindowsもMac OS Xも256バイトまでのファイル名に対応しているので、ファイル名の長さについては気にしなくてもいいという状況になっているが、Mac OSでは31バイトという制約がある。サーバ上に31バイト以上の名前のファイルがある場合には、Mac OSのクライアント側からは同じファイル名では見えなくなるので、そのあたりは注意が必要だ。ちなみに、31バイトをこえるファイル名についてはMac OS側からは、31バイトに切り詰められ、拡張子を除く末尾に#2345みたいな番号がついたファイル名に見える。
ファイル名の制約については、どちらかと言えば、WindowsよりもMac OS Xのほうが緩い。Mac OS Xの側で、コロンやスラッシュのついたファイル名のファイルは、Windowsクライアント側では、まったく違った名前に見える。昔の形式の8+3バイトの形式に縮められたファイル名で表示されるようになってしまう。その意味では、Mac OS Xで保存した時の名前が必ずWindows側でも同じように見えるとは限らないことは頭にいれておく必要があるだろう。このあたりは、種類の異なるOSが混在しているところでは、運用を工夫するなどして、とにかく対処しなければならない。

ところで、Mac OS X Serverが発売される以前に、SambaがMac OS X 10.0で機能しないかを試して見たことがある。その結果はローカスから出版されている「Mac OS Xパワフル導入ブック」でも大津さんが紹介しているが、筆者も実際にインストールしてテストをしてみた。そのときには日本語版として配付されているSamba 2.0.7を使ってみたのだが、濁音を含むファイル名がWindows側で表示されないという問題もあり、完全に使える状態でないという結論を得た。そうした状況でMac OS X Serverが発売されたのだが、そうしたファイル名の問題は見られない状態でとにかく安心したものである。
ちなみに、smb.confファイルを見ると、client code page = 932、coding system = utf8という設定が見られる。coding systemはサーバ側のファイル名のコーディング規則を示すもので、もちろんUNICODEのUTF-8に設定される。client code pageはクライアント側のファイル名の記述に使われる文字コードで、932は日本語Shift-JISを意味している。

以上がWindowsファイルサーバとして使うための最低限の設定である。Windowsサービスに関するその他の設定は次回に説明しよう。

カテゴリ:


生成したタスクのサスペンドとレジュームを行う方法

Technical Q&AにMultiprocessing ServicesでのAPIの利用方法に関する文書が掲載された。タスクを生成するAPIであるMPCreateTaskを利用する時、kMPCreateTaskSuspendedMaskというオプションで最初からサスペンドさせることができるが、それをレジュームすることができないという問いに答えたものだ。このオプションはデバッグのために用意されているので、実際にサスペンドさせたいのなら通常とおりタスクを生成し、MPThrowExceptionを使ってサスペンドすれば、後からレジュームが可能になる。また、タスクの停止や開始のコントロールをしたいのなら、同期やシグナル関連のAPIを使うという手段もある。

関連リンク:QA1055:How do I use kMPCreateTaskSuspendedMask with MPCreateTask?
カテゴリ:Technical Q&A, Carbon/CF


TIL》Network Assistant 4.0.3の日本語版が公開

Network AssistantのVer.4.0.3が公開されている。英語版は2001年5月末に公開されたが、日本語版も公開された。機能拡張ファイルだけを以前のバージョンのものと入れ替えるだけのアップデートだ。4.0.3の変更点は、コピーに時間がかかっていた問題などのバグフィックスが中心である。以下のTech Info Libraryの文書に解説が掲載されている。

関連リンク:Network Assistant 4.0.3 Document and Software
カテゴリ:ユーザ管理, OS関連ソフトウエア


Mac OS XのスクリーンセーバーのAPIに関する資料のありか

Technical Q&Aに、スクリーンセーバーのAPIの資料がどこにあるのかという問いに対する答えが掲載されている。この資料はDeveloper Toolsによりハードディスクにインストールされており、/Developer/Documentation/ReleaseNotes/ScreenSaver/ScreenSaverTOC.htmlというパスにある。

関連リンク:QA1052:Mac OS X Screen Saver API Documentation
カテゴリ:Technical Q&A, 開発情報, Mac OS X


Core Graphicsでのテキスト描画で、テキストの幅を知る方法

Core Graphicsで描画するテキストのサイズを知る方法が、Technical Q&Aで公開されている。まず、CGContextGetTextPositionで、現在の位置を取得する。そして、CGContextSetTextDrawingModeを使ってテキスト描画モードをkCGTextInvisibleし、テキストを実際に描画する。再度、CGContextGetTextPositionを利用することで、描画後の位置を取得し差を取ればテキストの幅を測定することができる。

関連リンク:http://devworld.apple.com/qa/qa2001/qa1051.html
カテゴリ:Technical Q&A, グラフィックス


Core Graphicsでのクリッピングパスをクリアする方法

Technical Q&Aに、Core Graphicsでのクリッピングに関する解答が掲載されている。CGContextClipなどのAPIでクリッピングパスを変更しようとしても、新しいパスとクリッピングパスが統合されてしまう。クリッピングパスをクリアしたいのなら、パスを変更する前にCGContextSaveGStateで現在の状態を保存しておき、必要なときにCGContextRestoreGStateで戻すようにする。

関連リンク:QA1050:Turning Off Core Graphics Clipping
カテゴリ:Technical Q&A, グラフィックス