AFP3.4とGSSって何だろね [Mac OS X]
さて、Lionは何か目新しいものがあるでしょうか。
$ asip-status.pl macchon AFP reply from macchon:548 Flags: 1 Cmd: 3 ID: 57005 Reply: DSIGetStatus Request ID: 57005 Machine type: iMac12,1 AFP versions: AFP3.4,AFP3.3,AFP3.2,AFP3.1,AFPX03 UAMs: DHCAST128,DHX2,Recon1,Client Krb v2,GSS,No User Authent Flags: SupportsCopyFile,SupportsChgPwd,SupportsServerMessages,SupportsServerSignature,SupportsTCP/IP,SupportsSrvrNotifications,SupportsReconnect,SupportsOpenDirectory,SupportsUTF8Servername,SupportsUUIDs,SupportsSuperClient (後略)
AFP3.4って新バージョンですね。何が変わったんでしょうね。
あと、UAMにGSSってのも増えてますね。名前から想像するにKerberos関係かも。
Appleの仕様書がアップデートされてないので、どちらも不明。
Apple Filing Protocol Programming Guide
Apple Filing Protocol Reference
Mac OS XでWindows禁止文字 [Mac OS X]
が、最近同じことを試したら、なんと保存できる。FATのUSBメモリにも保存できる。いつの間に仕様変更したんだろう。
カーネルソースに詳細があります。
http://www.opensource.apple.com/source/xnu/xnu-1504.7.4/bsd/vfs/vfs_utfconv.c
/*
* Invalid NTFS filename characters are encodeded using the
* SFM (Services for Macintosh) private use Unicode characters.
*
* These should only be used for SMB, MSDOS or NTFS.
*
* Illegal NTFS Char SFM Unicode Char
* ----------------------------------------
* 0x01-0x1f 0xf001-0xf01f
* '"' 0xf020
* '*' 0xf021
* '/' 0xf022
* '<' 0xf023
* '>' 0xf024
* '?' 0xf025
* '\' 0xf026
* '|' 0xf027
* ' ' 0xf028 (Only if last char of the name)
* '.' 0xf029 (Only if last char of the name)
* ----------------------------------------
*
* Reference: http://support.microsoft.com/kb/q117258/
*/
なんと、旧Service for Machintoshの仕様に倣い、Unicodeの私用領域を使って無理矢理保存するんだな。
当然のことながら、Windows側では正常に表示できません。
というか、SFMがそんな仕様になってたとは知らなかった。
EA未対応AFPサーバ上の*.appを削除できない [Mac OS X]
これはAFPサーバの問題ではなく、Snow Leopardのバグです。
10.6.1, 10.6.2, 10.6.3, 10.6.4, 10.6.5で確認済です。
再現方法:
- Internetからサイズのでかい*.appを含むファイルをダウンロードする。
- *.appをダブルクリックしない。つまり実行しない。
- これをAFPサーバにコピーする。
- AFPサーバ上の*.appをダブルクリックしない。
- Finderを使ってこの*.appを削除しようとする。 → エラー発生
Terminal.app内で
rm -rf xxx.appとした場合は問題なく削除できます。この問題が発生するAFPサーバとして確認しているのは、netatalk 2.0.xとTigerです。
EA対応のnetatalk 2.1では発生しません。ただし、敢えてea:noneに設定すると発生します。
つまり、AFPサーバがEA未対応のときに発生する問題です。
原因:
インターネットからダウンロードしたファイルには
com.apple.quarantineという名前のEAがつきます。このEAがついたファイルを実行しようとすると、「開いてもよろしいですか?」という警告が表示されます。開いたタイミングでこのEAが削除されます。で、巨大な*.appの場合、その中に含まれる全てのファイルに
com.apple.quarantineがついています。そのままEA未対応AFPサーバにコピーすると、「._」で始まるファイルが大量にできます。この*.appをFinderで削除すると、まずディレクトリ内のファイルを全部消してから親ディレクトリを削除します。
しかし、ファイルを全部消していないのに親ディレクトリを消そうとして、失敗するわけです。「
._」ファイルが沢山あると、ファイル数を間違えていると思われます。対策:
本質的な対処方法はありません。
AFPサーバをEA対応のものにする。コマンドラインでrm -rfして消す。Snow Leopardが直るのを待つ。などですね。
emacsで編集したときの拡張属性の挙動 [Mac OS X]
$ ls -l@i aaa.txt 13960281 -rw-r--r--@ 1 hat hat 9 Dec 10 21:14 aaa.txt com.apple.TextEncoding 14
このファイルをemacsで編集してやると、
abc.txt~というバックアップファイルができるわけですが、$ ls -l@i aaa.txt* 13960284 -rw-r--r-- 1 hat hat 12 Dec 10 21:15 aaa.txt 13960281 -rw-r--r--@ 1 hat hat 9 Dec 10 21:14 aaa.txt~ com.apple.TextEncoding 14
拡張属性がバックアップファイルの方に移動してしまいます。
なぜかというと、emacsはファイルをリネームしてバックアップファイルとし、新たに元のファイル名を作るからです。この挙動は編集前後のinode番号を見ればわかります。
で、対策方法ですが、
.emacs.elで(setq backup-by-copying t)
としてやると、リネームではなくコピーでバックアップファイルを作るようになるので、拡張属性が移動しません。バックアップファイルの方は拡張属性が付きませんが、まあ、しょうがないか。
Snow Leopard X11にxonコマンドなし [Mac OS X]
Snow Leopardにしたら、なんかまたX11がおかしい。
xonコマンドがなくなっている。まあ、r系コマンドはセキュリティ云々の問題があるから、なくなっていく運命ですね。
G4 CubeのTigerに入っているxonコマンドをもってきて対処しました。
xonコマンドは単なるスクリプトなので、どこから持ってきても動くでしょうね。
あと、Leopard 10.5.7のとき、MacアプリとX clientの間で文字列のコピー&ペーストがうまくいかなくなったので、~/Library/Preferences/org.x.X11.plistを直接編集して対処してましたが、Snow Leopardだとちゃんとこれの設定項目ができてますね。
Snow Leopardのカタカナ表記はスノーレオパード [Mac OS X]
と、心の中で100回唱えてやっと「レパード」と言えるようになりました。しかし、商標の称呼では「レオパード」でした。
Snow Leopardも「スノーレオパード」として商標出願してます。
何故?
Leopard X11 その6 MacOSX10.5.2になっても変→1.5.5で直った [Mac OS X]
Leopard X11 その5 非公式X11.app [Mac OS X]
その4からのつづき
一通りのバグがfixされた非公式版があるんですね。
http://trac.macosforge.org/projects/xquartz/wiki/Releases
どうしようかなあ。試すかなあ。
その6へつづく
afpかafpovertcpか [Mac OS X]
一般にafpと呼びますが、場合によってはafpovertcpと呼ぶ場合もあります。その使い分けを考えてみました。
AppleTalkベースのときは、
AFP over ASP over ATP over DDP
TCP/IPベースのときは、
AFP over DSI over TCP over IP
という構造になっています。
どちらにしろAFPは同じプロトコルです。ASPをDSIに差し替える事で違いを吸収しているのです。
afpovertcpは、その名の通りTCP/IPベースを示すものです。
port 548はDSI以上で使われるので、AFPというよりもDSIを示していると考えた方がいいかもしれません。ただ、仕様書上でもAFPとDSIの区別がはっきりしていない部分があります。
wiresharkでafpを解析する [Mac OS X]
wiresharkでafpを解析するのは、はっきりいって簡単です。
少なくともnetatalkをセットアップ出来る人なら誰でも出来るでしょう。tcpdumpコマンドの出力を目で追うのは大変ですが、wiresharkはGUIなのでマウスでいじるだけで何が起きているのかわかります。
LinuxだろうがBSD系だろうが、最近のディストリビューションならwiresharkは用意されていると思います。
次の図は、クリアテキストのパスワードを表示している例です。

ユーザhatのパスワードhogehogeがあっさり見えています。暗号化パスワードならこうはいきません。
ただし、afpを調べるには、ちょっとだけコツが必要です。
Leopard X11 その3 - Unicode対応xtermをビルド [Mac OS X]
その2からのつづき。
[注] このページの記述は10.5.0〜10.5.1の話である。10.5.2に付属するX11.app 2.1.1のxtermはunicodeに対応している。環境変数LANGをja_JP.UTF-8にしてxtermを起動すれば良い。
Mac OS X 10.5 Leopardに付属するxtermがunicode未対応なので、
Leopardで-u8対応のxtermをビルド - Acanthopanax の日記
のページを参考にビルドしてみたが、失敗した。
調べた結果、2つの方法でビルドに成功した。
Leopardの共有アイコン [Mac OS X]
Mac OS X 10.5 Leopardは、ファイル共有サーバのアイコンがafpとsmbで区別出来ます。

左がBonjourで見つけたafpサーバ、右がnmbで見つけたsmbサーバです。
このsmbサーバのアイコン、どう見てもWindowsが落ちたときのブルーバックじゃないですか。しかも液晶モニタじゃなくて古くさいCRTですよ。
Windowsをナメてるんでしょうか。すごいセンスです。
[2008.10.07 追記]
なお、netatalkのサーバアイコンを変えて遊ぶ方法もあります。






