Skip to content

Instantly share code, notes, and snippets.

@hiroyuki-sato
Created March 10, 2013 08:20
Show Gist options
  • Save hiroyuki-sato/fed9820307ff7c2dac84 to your computer and use it in GitHub Desktop.
Save hiroyuki-sato/fed9820307ff7c2dac84 to your computer and use it in GitHub Desktop.

修正した方が良さそうなところ

  • ea = sysでかつappledoubleの場合、.AppleDouleフォルダや.Parentフォルダを作成する
  • appledouble = adの場合のみ、リソースフォーク用のACLの設定をする。(添付のパッチ)

ACLをセットする際の現状の動作(ソース確認時)

  • ACLをセットする場合
  • 指定されたフォルダまたは、ファイルのACLをセット
  • リソースフォークもACLをセット

問題点

  • appledouble = eaの場合でも.Parentや.AppleDoubleの設定を変更しようとしている。

解決案

  • appledouble = adの場合のみリソースフォークのACLをセットする

ACLの変更

ACLの設定

  • ACLの設定は、ACLの変更はAFPプロトコルの「FPSetACL」コマンドで行います。
  • プロトコルについては「参考」を参照してください。
  • このコマンドの処理をするのは、「afp_setacl」関数です。
  • この関数は、etc/afpd/acls.cで定義されています。
  • この関数では、パケットの解析を行って、ACLの設定があった場合は別の関数を呼び出します。
  • 呼び出す関数の名前は、「set_acl」です。etc/afpd/acls.cで定義されています。

set_acl

  • 細かい解説は、(まだ全部理解していないので)割愛します

  • 対象のファイルまたはフォルダのaclをacl_set_fileでセットします。

  • acl_set_file関数は、OSで用意されているaclを変更するための関数です。

  • 拡張属性内にACLの設定をします。

  • リソースフォークも同様の設定をします。

  • リソースフォークを設定するために、RF_posix_acl関数を呼び出します。

  • この関数は、「libatalk/vfs/vfs.c」で定義されています。

RF_posix_acl

ディレクトリの場合

  • 設定する対象がディレクトリの場合
  • ディレクトリ/.AppleDoubleにACLの設定をします。
  • .Parentの設定もあわせて行います。

ファイルの場合


* .リソースフォーク用のファイルにACLの設定をします。

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment