UNIX ファイルの権限

UNIX ファイルの権限

ターミナルからいくつかのフォルダーの権限を確認しているのですが、その意味がよくわかりません。

iMac:~ me$ ls -alt
total 40
drwx------   4 me  staff   136 10 Oct 06:17 .Trash
drwx------+  4 me  staff   136 10 Oct 06:16 Desktop
drwxr-xr-x   6 me  staff   204 10 Oct 06:16 .bash_sessions
-rw-r--r--@  1 me  staff  8196  8 Oct 22:37 .DS_Store
drwx------+  9 me  staff   306  8 Oct 22:37 Downloads
drwx------@ 12 me  staff   408  8 Oct 20:50 Google Drive
drwx------@ 13 me  staff   442  8 Oct 20:49 Dropbox
drwx------   9 me  staff   306  8 Oct 20:49 .dropbox
drwxr-xr-x+ 19 me  staff   646  8 Oct 20:48 .
-rw-r--r--   1 me  staff   100  4 Oct 12:03 .bash_history
drwx------@ 49 me  staff  1666  4 Oct 10:17 Library
drwx------   4 me  staff   136  4 Oct 09:52 Applications
-r--------   1 me  staff     7  4 Oct 09:45 .CFUserTextEncoding
drwx------+  3 me  staff   102  4 Oct 09:42 Documents
drwx------+  3 me  staff   102  4 Oct 09:42 Movies
drwx------+  3 me  staff   102  4 Oct 09:42 Music
drwx------+  3 me  staff   102  4 Oct 09:42 Pictures
drwxr-xr-x+  5 me  staff   170  4 Oct 09:42 Public
drwxr-xr-x   7 root             admin   238  4 Oct 09:42 ..

「.」にある「drwxr-xr-x+」と「Google Drive」にある「drwx------@」の違いは何ですか?

答え1

Unix のパーミッションは、実際には最初に考えるほど混乱することはありません。行全体を 1 つのものとして読もうとするのをやめて、常にパターン内のグループとして考えると、1 3 3 3理解しやすくなります。
実際、Mac と他の Unix 派生製品では1 3 3 3 1構造が使用されています。これについては、この投稿の最後で詳しく説明します。

この説明は、関連するすべての概念を含みながら、可能な限りシンプルになっています...

抜粋https://www.cs.swarthmore.edu/help/chmod.html

UNIX ファイルの権限

ファイル権限を使用すると、ファイルやディレクトリへのアクセスを許可または拒否できます。権限には次の 3 つの種類があります。

  • r = 読む
  • w = 書く
  • x = 実行

これらの権限は、ファイルとディレクトリに対して異なる意味を持ちます。

ファイルの場合:

  • 読み取り - ファイルを開いて読み取ることができ、またコピーすることもできます。
  • 書き込み - ファイルを変更することができます
  • 実行 - ファイルが実行可能(プログラムやコマンドなど)であれば、それを実行(実行)できます。

ディレクトリの場合:

  • 読み取り - ディレクトリを ls して内容を確認できます。
  • 書き込み - そのディレクトリ内でファイルを作成および削除できます。
  • 実行 - そのディレクトリに cd できます。

ファイルとディレクトリのファイル権限を確認するには、ls -l コマンドを使用します。次に例を示します。

$ ls -l
total 188
drwx------  jk users  4096 2008-10-24 11:30 cs21/
drwx------  jk users  4096 2007-10-01 12:24 mail/
drwxr-xr-x  jk users  4096 2008-06-05 10:33 public/
-rw-------  jk users 83623 2008-09-10 08:29 turing.pdf
-rw-r--r--  jk users  9134 2008-01-24 16:26 unix-by-example

上記の最初の列はファイルの権限 (drwx------ または -rw-r--r--)、2 番目の列はファイルとディレクトリの所有者 (jk)、3 番目の列はグループ (ユーザー) です。

ファイルの権限の場合、最初の文字は「d」または「-」で、ディレクトリまたはファイルであることを意味します。次の 3 文字 (例: rwx) は、ファイルの所有者の権限です。次にグループ権限 (例: ユーザー グループ内のすべてのユーザー)、最後にその他すべてのユーザーの権限が続きます。次に例を示します。

* drwx------ : directory only accessible by owner
* drwxr-xr-x : directory anyone can access
* -rwxr-xr-x : file anyone can read and execute
* -rw-r----- : file only people in the group can read

自分が所属するグループを確認するには、groups コマンドを実行します。

ファイル/ディレクトリの権限を変更する

ファイルの権限を変更するには、chmod (CHange MODe) を使用します。chmod コマンドでは数字を使用できます。

  • 4 - 読む
  • 2 - 書く
  • 1 - 実行

これらが 1、2、3 ではない理由は、使用する組み合わせに応じて合計が一意の数字になる必要があるためです。

したがって、読み取りおよび書き込み権限を付与するには、次のようにします。

読み取り + 書き込み = 4 + 2 = 6

または実行および読み取り権限:

実行 + 読み取り = 1 + 4 = 5

または、実行権限のみ:

実行 = 1

またはすべての権限:

読み取り + 書き込み + 実行 = 4 + 2 + 1 = 7

chmod コマンドは、3 つの権限ごとに 3 つの数字を取ります。

所有者、グループ、すべてのユーザー(この順序)

基本的な chmod コマンドは次のようになります。

$ chmod ### directory/filename

したがって、全員に読み取りアクセス権を付与したい場合 (-rw-r--r--):

$ chmod 644 filename

ファイルを自分だけが読み取り、書き込み、実行できるようにするには:

$ chmod 700 filename

ファイルを自分と自分のグループが読み取りおよび実行できるようにし、他のすべてのユーザーは読み取りのみ可能にするには、次の手順を実行します。

$ chmod 554 filename

chmod では文字も使用できます。u はユーザー (所有者)、g はグループ、o はその他、a はすべて (u、g、o) を表します。したがって、chmod g+r file を実行すると、グループの読み取りアクセスを追加できます。chmod の詳細については、マニュアル ページ (man chmod) を参照してください。

最後の文字についてのメモ

Mac OS X(および他のUnix派生製品)では、最後の権限セットの後に文字が追加されます。通常はスペースですが、+または@の場合もあります。

+ は、ファイルまたはディレクトリに ACL などの追加のセキュリティ情報があることを示します。
@ は、ファイルまたはディレクトリに拡張属性があることを示します。

ファイルまたはディレクトリの ACL を表示するには、ls を実行するときに -e オプション (-l オプション付き) を含めます。また、拡張属性を表示するには -@ (-l オプション付き) を含めます。ACL
と拡張属性に関する説明はこの回答の範囲を超えていますが、拡張属性に関する詳細情報は以下にあります。ここおよび ACLここ(そしてもちろん、Google ではあなたが知りたい以上の情報が見つかります。)

関連情報