必要に迫られて Snow Leopard での ACL の取り扱い、とくに ACL を付けたり取り除いたりといった最低限の操作について調べた。ググってみても、「これだ!」という情報には出会えなかった。結局、一番実用的なのは man chmod
だった。
chmod
のマニュアルページには "ACL MANIPULATION OPTIONS" というセクションがあり、操作の具体例を挙げつつコマンドオプションとACL属性の説明が書かれている。ACL で困ったら、まずは man chmod
を見るべき。
ACL を見る
ls
に表示用オプションが増えている。ls -l
で表示させたとき、許可ビット欄の一番右に +
が付いていたら、そのファイルやフォルダに ACL が付いている印。オプション l
に e
を加えることで、その ACL の内容を表示できる。以下が実行例。ユーザのホームにあるライブラリフォルダに ACL が付いていることを示している。その意味は「誰であっても消せない」というもの。これが付いていると、削除できないのはもちろん、名前の変更や移動もできない。
[imac] mnbi% ls -l [~] [...snip...] drwx------+ 39 mnbi staff 1326 8 3 01:34 Library/ [...snip...] [imac] mnbi% ls -le [~] [...snip...] drwx------+ 39 mnbi staff 1326 8 3 01:34 Library/ 0: group:everyone deny delete [...snip...]
ちなみに、+
ではなくて @
が付いていたら、それは EA (Extended Attribute) が付いている印。ACL と EA の両方が付いている場合、EA の印が優先されるようだ。
ACL を付ける
group:everyone deny delete
を付けてみる。
[imac] mnbi% ls -l [~/tmp] total 184 -rw-r--r--+ 1 mnbi staff 12427 1 21 2010 chess.pdf [...snip...] [imac] mnbi% ls -le [~/tmp] total 184 -rw-r--r--+ 1 mnbi staff 12427 1 21 2010 chess.pdf [...snip...] [imac] mnbi% chmod +a "everyone deny delete" chess.pdf [~/tmp] [imac] mnbi% ls -l [~/tmp] total 184 -rw-r--r--+ 1 mnbi staff 12427 1 21 2010 chess.pdf [...snip...] [imac] mnbi% ls -le [~/tmp] total 184 -rw-r--r--+ 1 mnbi staff 12427 1 21 2010 chess.pdf 0: group:everyone deny delete [...snip...] [imac] mnbi% rm chess.pdf [~/tmp] rm: chess.pdf: Permission denied
rm
で削除しようとするとダメだと怒られる。
一方、このファイルを Finder から削除(やリネーム、それに移動)しようとすると、管理者パスワードの入力を求めるダイアログが出てくる(→)。もちろん、パスワードを正しく入力すれば削除(やリネーム、または移動)される。コマンドラインからでも sudo rm
すれば削除できる。
ACL を取り除く
自分で付けた ACL を自分で変更したり取り除いたりする分には問題がないけれど、システムの初期状態で付いている ACL をいじると、何が起きるかわかったもんじゃない。たいていは group:everyone deny delete
が付いているぐらいだけど、一部にはその他の属性も付いている(/Volumes
とか)。そういうものを取り除く場合は、相応の覚悟をしてからやること。
付けるときと同様に chmod
を使う。取り除くときは -a#
オプションを使う。あらかじめ ls -le
で ACL を表示させ、消したいものの番号を調べておく。その番号を -a#
の後に指定する。-N
オプションを使えば、ファイルに複数の ACL が付いている場合、まとめて取り除くことができる。実行例は以下のとおり。
[imac] mnbi% ls -le [~/tmp] total 184 -rw-r--r--+ 1 mnbi staff 12427 8 4 06:36 chess.pdf 0: group:everyone deny delete [...snip...] [imac] mnbi% chmod -a# 0 chess.pdf [~/tmp] [imac] mnbi% ls -le [~/tmp] total 184 -rw-r--r-- 1 mnbi staff 12427 8 4 06:36 chess.pdf [...snip...] [imac] mnbi% chmod +a "everyone deny delete" chess.pdf [~/tmp] [imac] mnbi% chmod +a "staff allow delete" chess.pdf [~/tmp] [imac] mnbi% ls -le [~/tmp] total 184 -rw-r--r--+ 1 mnbi staff 12427 8 4 06:36 chess.pdf 0: group:everyone deny delete 1: group:staff allow delete [...snip...] [imac] mnbi% chmod -N chess.pdf [~/tmp] [imac] mnbi% ls -le [~/tmp] total 184 -rw-r--r-- 1 mnbi staff 12427 8 4 06:36 chess.pdf [...snip...]
ACL、雑感
ACL は、ユーザやグループに対して、allow
と deny
を様々な許可項目(man chmod
には 21 項目ある)ごとに組み合わせて指定することで「きめこまやかな」アクセス制御を可能にする、というものだ。指定する順序も関係する(番号の小さいものが優先)。もちろん指定する順序を間違うと意図したようには効かない。正直、難しい。サーバはともかく、個人が専有する Mac には不要だと思う。自分から積極的に使う気にはなれない。
関連リンク
- File Server Administration (Mac OS X Server ガイドの一部; Chapter 2 Setting Up File Service Permission に ACL についていろいろ記述がある)
0 件のコメント:
コメントを投稿