ファイル許可はどのように機能しますか?


37

ファイルのアクセス許可を管理するために使用される主な概念とコマンドラインツールについて簡単に説明できますか?

回答:


23

各ファイルには、3つの異なるカテゴリの権限があります。

  • ファイルの所有者、
  • ファイルに関連付けられたグループ、および
  • 他のみんな。

権利とは、ファイルを読み取る権利、ファイルに書き込む権利、またはスクリプトまたはプログラムの場合にファイルを実行する権利を意味します。

CLIでは、次のことができます

  • で所有者を変更するchown、例えばchown guillermooo
  • でグループを変更するchgrp、例えばchgrp root
  • chmodたとえば、権限を変更しchmod u+w filename.extます(ファイルの所有者の書き込み許可を追加しますfilename.ext

これらの各ツールについて詳しく知りたい場合は、ターミナルを開いてman [tool]、たとえばと入力しman chmodます。


8
ディレクトリにはもう少し注意が必要です。ディレクトリのコンテンツにアクセスするには実行権限が必要です。これは、たとえば、必要なファイルを読み書きするには、そのファイルを含むディレクトリへの実行アクセスと、ファイル自体に対する適切なアクセス許可が必要です。これはほとんど発生しませんが、それが不十分に文書化/理解されている理由です!
アダムフィッシュ

ほら あなたが正しい。明日、眠くなる前に編集します。
パラノイア

1
chown guillermoooこれはいけませんchown guillermooo filenameか?
ザイネル

32

警告:ファイルとディレクトリの権限を変更すると、潜在的に有害であり、システムが使用できなくなる可能性があります。間違ったパスでrootとして再帰的に実行すると、Ubuntuを再インストールしなければならないポイントに到達する場合があります。したがって、HOMEディレクトリ以外のパーミッションを変更しないことをお勧めします。可能な限り、rootとしてコマンドを再帰的に実行することは避けてください。

ファイル許可

ファイルまたはディレクトリに対して許可または拒否できるタスクが3つある場合、UbuntuはUnixからアクセス許可の概念を継承しています。

  • r(読み取り)ファイル/ディレクトリを読み取りアクセス用に開くことができます。
  • w(書き込み)ファイル/ディレクトリは、書き込み/編集アクセスのために開くことができます。
  • x(実行)ファイルは、プログラム/ディレクトリを走査するときに実行される場合があります。

(ディレクトリをトラバースするとは、基本的にパス名の一部として使用することを意味します。詳細については、https://unix.stackexchange.com/a/13891またはhttps://unix.stackexchange.com/questions/21251を参照してください。)

さらに、許可を与える相手については3つのケースがあります。

  • u(ユーザー)ファイルの所有者には、任意の許可が付与されます。
  • g(グループ)ファイルが属するグループには許可が与えられます。
  • o(その他)他のすべてのユーザーには許可が与えられます。

ソートされたこれらの組み合わせを取得するには、各ビットが許可を定義するバイナリシステムを使用します。これは次の表に最もよく示されています。

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

たとえば、たとえば

A)ファイル(=ユーザ)の所有者が有しているのR EAD、W儀式、およびe X ecute許可、
b)は、ファイルのグループ付与のR EADおよびe X ecuteアクセス許可、および
C)を他のすべてしか有していなければならないのR EADアクセス。

その結果、ファイルの許可は次のようになります。

 u   g   o
rwx r-x r--

これを8進数で取得するには、たとえば 以下のためのchmodコマンドまたはときに我々は、我々は以下のようにテーブルの上に記入する必要があり、エラーメッセージを理解する必要があります。

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

ユーザー(4 + 2 + 1 = 7)、グループ(4 + 0 + 1 = 5)、およびその他(4 + 0 + 0 = 4)を合計するには、各許可番号を追加する必要があります。結果の数値は次のとおりです。

 u   g   o
 7   5   4

許可ビットを変更するには、次の2つのオプションがありますchmod

chmod u+rwx g+rx o+r filename

またははるかにシンプル

chmod 751 filename

両方のコマンドは同じことをします。

ホームで新しく作成されたファイルのデフォルトの許可は、664(-rw-rw-r--)になります。

ファイルをプログラムとして実行可能にする場合は、この許可を変更する必要があります。

  • また、この実行可能ファイルが存在するディレクトリのアクセス許可を変更する必要があることに注意してください。ファイルディレクトリの実行可能ビットの両方が設定されている場合のみ、このファイルをプログラムとして実行できます。

  • ファイルを自宅にコピーすると、その権限が失われ、独自のデフォルトの権限に置き換えられます(アーカイブオプションなどの高度なオプションを使用してコピーしない限り)。

  • また、ファイルはマウントポイントから権限を継承する場合があることに注意してください。マウントオプション。これは、Unix許可をサポートしないWindowsフォーマットのドライブをマウントする場合に重要です。

ユーザーとグループ

すぐに、これは物語の半分にすぎないことがわかりました。持ち物も整理する必要があります。これを行うには、各ファイルまたはフォルダーに所有者とグループメンバーシップが定義されています。

ファイルを作成するたびに、ファイルの所有者になり、ファイルのグループも私たちになります。ではls -l、次の出力例から分かるように、私たちはパーミッション、所有権、およびグループを見ることができます:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • 変更できるのは、自分のものであるファイルの許可、グループ、または所有権のみです。

ファイルの所有者でない場合、Permission deniedエラーが発生します。すべてのファイルに対してこれを変更できるのはrootのみです。これが、sudo私たちのものではないファイルの許可を編集するときに使用しなければならない理由です。chownユーザーおよびchgrpグループ用に2つの組み込みコマンドがあります。

ファイルの所有権を誰かから変更するtakkatには、次のコマンドを発行します。

sudo chown takkat testfile

ファイルのグループを変更しtakkatて発行する

sudo chgrp takkat testfile

詳細とオプションについては、コマンドのマンページを参照してください。さらに読むために推奨されるこのより精巧なガイドもあります:

また、関連する質問もここにあります。

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