web-dev-qa-db-ja.com

「ls -al」を実行した後の+または@マーク

Mac OS Xでは、「ls -al」を実行すると次のようになります。

 drwxrwxrwx + 4 smcho staff 136 May 5 09:18 Public 
 drwxr-xr-x + 6 smcho staff 204 Feb 1 2010 Sites 
 drwxrwxrwx 9 smcho staff 306 Feb 2 2010 backup 
 drwxr-xr-x @ 36 smcho staff 1224 Sep 4 22:51 bin 
  • 最初の列の末尾にある+または@はどういう意味ですか?
  • これはMacに固有ですか、それともUNIXに共通ですか?

追加された

Michael Mrozekの回答の後、私は「ls -ale」を実行して以下を取得しました。

 drwx ------ + 66 smcho staff 2244 Aug 30 13:40 Library 
 0:group:com.Apple.sharepoint.group.3 allow search 
 1: group:everyone deny delete 
 drwxr-xr-x 3 smcho staff 102 Sep 4 15:01 Mail 
 drwx ------ + 13 smcho staff 442 Aug 28 17:55映画
 0:group:everyone deny delete 
 drwx ------ + 6 smcho staff 204 Jul 9 09:37 Music 
 0:group:everyone deny delete 
 drwx ------ + 11 smcho staff 374 Aug 28 16:55 Pictures 
 0:group:everyone deny delete 
 drwxr-xr-x 3 smcho staff 102 Mar 18 15:43プロジェクト
 drwxrwxrwx + 4 smcho staff 136 May 5 09:18 Public 
 0:group:everyone deny delete 
 drwxr-xr-x + 6 smcho staff 204 Feb 1 2010 Sites 
 0:group:everyone deny delete 

追加されたメッセージはどういう意味ですか?一部のファイルにそれらがあるのはなぜですか?彼らのために特別なことをした覚えはありません。

30
prosseek

@接尾辞はMac OSに固有であり、 この質問 でカバーされているので、そこから私の回答のこの部分をコピーしました。これは、ファイルに 拡張属性 があることを意味します。 xattrコマンドラインユーティリティを使用して、それらを表示および変更できます。

xattr --list filename
xattr --set propname propvalue filename
xattr --delete propname filename

+サフィックスは、ファイルにアクセス制御リストがあることを意味し、ACLをサポートする* nixに共通です。 ls-eフラグを付けると、ファイルの後に関連するACLが表示され、chmodを使用して変更できます。これのほとんどはchmodのmanページからです:

chmod +a "type:name flag permission,..."を使用してACLを追加し、chmod -aを使用してそれを削除します。 chmodへの引数はかなり複雑です:

  • typeuserまたはgroupのいずれかであり、nameがユーザー名を参照しているか、またはグループ名。 nameが明確な場合は、タイプを省略できます
  • nameは、ACLが適用されるユーザー名またはグループです
  • flagは、このACLエントリがアクセス権を付与している場合はallow、アクセス権を拒否している場合はdenyです。
  • permissionは、変更される実際の権限です。カンマで区切って、好きなだけリストできます
    • delete-ファイル/ディレクトリの削除を許可します
    • readattr-基本属性を読み取ります
    • writeattr-基本属性を書き込みます
    • readextattr-拡張属性を読み取ります(上記のxattrを使用)
    • writeextattr-拡張属性を書き込みます
    • readsecurity-ACL情報を読み取ります
    • writesecurity-ACL情報を書き込みます
    • chown-所有者を変更する
    • ディレクトリ固有の権限
      • list-ディレクトリ内のファイル/フォルダーを表示します
      • search-名前でディレクトリ内のファイル/フォルダーを検索します
      • add_file-ディレクトリに新しいファイルを作成します
      • add_subdirectory-ディレクトリに新しいディレクトリを作成します
      • delete_child-ディレクトリ内のファイル/ディレクトリを削除します
      • 継承制御
        • file_inherit-ディレクトリのACLはファイルに継承されます
        • directory_inherit-ディレクトリのACLはサブディレクトリによって継承されます
        • limit_inherit-このディレクトリに継承されたACLがサブディレクトリに継承されないようにします
        • only_inherit-新しく作成されたすべてのアイテムによって継承されますが無視されます
    • ファイル固有の権限
      • read-読み取り用にファイルを開きます
      • write-書き込み用にファイルを開く
      • append-追加するファイルを開く
      • execute-ファイルを実行します

特定の例では、ACLエントリのほとんどはgroup:everyone deny deleteです。つまり、everyoneグループのすべてのユーザー(当然のことながら全員)は、フォルダーを削除する権限を拒否されます。ドキュメントは見つかりませんが、必須のルートフォルダを削除できないようにするデフォルトのACLだと思います。そうでない場合は、誰かがこれを修正します。他の唯一のエントリはgroup:com.Apple.sharepoint.group.3 allow searchです。これにより、ディレクトリサービスは/Libraryフォルダ内の名前でファイルを検索できます。

40
Michael Mrozek