Mac OS XでACLをコピーするにはどうすればよいですか?


13

ほとんどのUNIX派生物は、次の方法でACLをあるファイルから別のファイルにコピーできます。

getfacl filename1 | setfacl -f - filename2

残念ながら、Mac OS Xにはgetfaclコマンドとsetfaclコマンドがありません。これらのコマンドはACL処理をchmodにロールしているためです。chmod -EはstdinでACLのリストを受け入れますが、stdoutで適切な形式でACLを吐き出すコマンドが見つかりませんでした。私が思いついた最高のものは:

ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2

より堅牢なソリューションはありますか?

ボーナス質問:10.6に同梱されていないモジュールを使用せずにPythonでそれを行う良い方法はありますか?


そのため、2020年になりましたが、macOSにはまだgetfacl/ がありませんsetfacl。かなり注目に値します。github.com/jvscode/getfaclは10歳ですが、機能させることができませんでした。serverfault.com/a/303752/104173は複雑に見えますが、get/setfacl機能を置き換えようとしているかどうかはわかりません。macOSはサーバープラットフォームではありませんが、それでもセキュリティ侵害が発生する可能性があります。apple.stackexchange.comでこの会話を再開する価値はありますか?
ジョニーユタ

回答:


8

ls -e ファイルに関連付けられているアクセス制御リスト(ACL)があれば、長い(-l)出力で印刷します。

これにより、次のような結果が得られます。

drwxr-xr-x@ 19 localadmin   646B Aug  4 00:21  APPBUNDLE
0: user:localadmin allow add_file,add_subdirectory,writeattr,writeextattr,writesecurity
                   ⬆    ⇧                      ⇶                                     ⬆

個人的に、私は私の「輸出」を持っています ~/.bash_profile

export FILE_ALL="read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
export DIR_ALL="list,search,add_file,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"

そのようなことをchmod可能にする...

sudo chmod + a "localadmin $ DIR_ALLを許可" / APPBUNDLE

chmodmanページから、この情報が少しあります...これは、あなたが説明したようなことを実際に行うことができるかもしれないことを示唆しています。

「ACLは、シンボリックモードの文法の拡張機能を使用して操作されます。各ファイルには、エントリの順序付きリストを含む1つのACLがあります。各エントリは、ユーザーまたはグループを参照し、アクセス許可のセットを許可または拒否します。グループが同じ名前で存在する場合、ユーザー/グループ名の前に「user:」または「group:」を付けて、名前のタイプを指定できます。

chmod -E 改行で区切られたACEの連続リストとして、stdinからACL情報を読み取ります。情報が正しく解析されると、既存の情報が置き換えられます。

また、昔ながらのBatchModにも大声で言いますが、ACLとTinkerToolSystemには良い点があります。


これは私のために働いたが、私はへのchmodコマンドを変更する必要がありました:sudo chmod +a "localadmin allow $DIR_ALL" /APPBUNDLE(ユーザー名を切り替えてallow
E.モファット


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.