コマンド ls -l で表示されるアクセス権「+」を消す手順
ターミナルで「ls- l」を実行して表示されたパーミッションの末尾に、
「+」が表示されている場合があります。
これは拡張ACLという属性が付与されていることを示しています。
ここでは「+」が表示される状態を作り、削除する手順をご紹介します。
概要
「+」の表示は「-le」オプションで確認
最初にMacOSのカーネルはUNIXが採用されています。
UNIXにおいてアクセス制御を行う仕組みでは、
以下の3つの属性に対してアクセス制御(パーミッション)を指定することができます。
- オーナー(所有者)
- グループ
- その他
それぞれに対して、書き込み・読み込み・実行の
各権限を設定することができます。(他にもありますが)
では、MacOSのファイル情報ウィンドウを見てみます。
以下のファイルはテキストエディットで作成したものです。
初期では以下のように権限が設定されています。
- オーナー(自分): 読み/書き [rw-]
- グループ(staff):読み出しのみ [r–]
- その他(everyone):読み出しのみ [r–]
さて上記を見て、3つの属性に対してアクセス権の設定ができますが、
Finderのファイル情報からはさらにユーザーの追加を行って権限設定ができます。
パーミッション設定先が3項目しかないところに、
オーナー以外の別のユーザーを追加してアクセス権の設定ができます。
これでは格納先がありません。
この格納先が拡張ACLデータです。
実際にユーザーを追加してみます。
次に、以下のコマンドを実行します。
ls -le (ファイルパス)
※-le を付与することで、アクセス制御情報がある場合には表示されます。
以下のように、パーミッション情報の横に「+」が表示され、
追加した「macports」ユーザーの情報が表示されています。
-rw-r–r–+ 1 <userneme> staff 4 2 2 07:14 (ファイルパス)
0: user:macports allow read,readattr,readextattr,readsecurity
この情報が「+」の意味する拡張ACLデータです。
コマンド ls -l で表示される「+」をターミナルから消す手順
さて、次は2ユーザーを追加して確認してみます。
「macports」ユーザーと「admin」グループを追加しています。
同様にls -le (ファイルパス)
で確認します。
2行の拡張ACLデータが表示されます。
-rw-r–r–+ 1 <userneme> staff 4 2 2 07:14 /Users/<userneme>/Documents/memo.txt
0: user:macports allow read,readattr,readextattr,readsecurity
1: group:admin allow read,readattr,readextattr,readsecurity
上記キャプチャの状態から削除処理を行っています。
拡張ACLの個別削除
chmod コマンドに「-a#」オプションを付け、
削除対象の拡張ACL番号(0:macportsユーザー)を指定しています。
sudo chmod -a# 0 (ファイルパス)
実行後にls -le (ファイルパス)
で確認します。
以下のように0番が削除され、残った「1:adminグループ」が、
繰り上がって0になっています。
正しく削除されています。
-rw-r–r–+ 1 <userneme> staff 4 2 2 07:14 /Users/<userneme>/Documents/memo.txt
0: group:admin allow read,readattr,readextattr,readsecurity
このようにsudo chmod -a# n (ファイルパス)
形式で拡張ACLデータを個別に削除できます。
削除後に再度「ファイル情報」を開くと、
追加したユーザーが削除されているのが確認できます。
続いて拡張ACLの全削除を行います。
拡張ACLの全削除
拡張ACLの全削除は以下のコマンドで行えます。
chmod コマンドに「-N」オプションを付けると拡張ACLデータがすべて削除されます。
sudo chmod -N (ファイルパス)
実行後にls -le (ファイルパス)
で確認します。
削除後に再度「ファイル情報」を開くと、
追加したユーザーが削除されているのが確認できます。
実行後にls -le (ファイルパス)
で確認します。
拡張ACLデータがすべて削除され「+」が表示されなくなっています。
-rw-r–r– 1 <userneme> staff 4 2 2 07:14 /Users/<userneme>/Documents/memo.txt
このようにしてターミナルから拡張ACLを削除することができます。
コマンド ls -l で表示される「+」をFinderから消す手順
ターミナルから消せることは分かりましたが、
Finderから消すこともできます。
ファイル情報のウィンドウの「共有とアクセス権」から、
ユーザーを削除します。
「-」をクリックするだけでユーザーは削除できます。
誤って元のパーミッション設定を消してしまわないか?
ユーザーを追加すると「共有とアクセス権」の一覧からは、
どのユーザーがオーナーなのか?などが分からなくて誤って消しそうに感じます。
しかし、オーナーとその他ユーザーでは「-」が有効になりません。
また、グループを消そうとすると「権限がない」旨のメッセージが表示されます。
消してはならないパーミッション設定されている
「オーナー」「グループ」「その他」は消すことができません。
要は、消せるユーザーとグループを削除して、
最終的に残った3つが元々のパーミッション設定されていたものであると分かります。
そういう意味では、拡張ACLを消すには、
以下のコマンドを利用した方が1回の処理で無用なアクセス権を削除できます。
※無用であることは事前に確認する必要があります。
sudo chmod -N (ファイルパス)
参考
以下を参考にしています。
ACL MANIPULATION OPTIONS
ACLs are manipulated using extensions to the symbolic mode grammar. Each file has one ACL, containing
an ordered list of entries. Each entry refers to a user or group, and grants or denies a set of per-missions. permissions.
missions. In cases where a user and a group exist with the same name, the user/group name can be pre-fixed prefixed
fixed with “user:” or “group:” in order to specify the type of name.(中略)
-N Removes the ACL from the named file(s).
ls(1) Mac OS X Manual Page|developer.apple.com
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: