web-dev-qa-db-ja.com

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

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

37
guillermooo

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

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

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

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

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

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

23
ParanoiaPuppy

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

ファイル許可

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

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

Traversingディレクトリをパス名の一部として使用することを本質的に意味します。 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ええ、 w儀式、およびeバツ実行許可、
b)付与されたファイルのグループ readとeバツ許可を実行する
c)他のすべては reADアクセス。

その結果、ファイルのパーミッションは次のようになります

 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

chmodで許可ビットを変更する2つのオプションがあります。

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を使用しなければならない理由です。これを行うには、組み込みコマンドが2つあります。 chown ユーザー用および chgrp グループ用です。

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

Sudo chown takkat testfile

ファイルのグループをtakkatに変更するには、発行します

Sudo chgrp takkat testfile

詳細とオプションについては、コマンドのマンページを参照してください。さらに読むには、このニースのより詳細なガイドをお勧めします:

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

31
Takkat