web-dev-qa-db-ja.com

chmodとchownの主な違いは何ですか?

いくつかの例では、一部がchownの代わりにchmodを使用していることがわかりました。 chmodchownの使用場所がわかりません。それらの違い、いつ、なぜ私はどちらを使うべきかを説明してください。

ファイルを作成しましょう

touch Rainbow

ファイルのメタデータを見てみましょう

$ ls -l Rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 Rainbow

情報の最初の部分は、ファイルタイプ(先頭の-は通常のファイルであることを意味します)と許可ビットです

その後、所有者(zanna)とグループ(zanna)が表示されます。 chownコマンドを使用して、これらを変更できます。

$ Sudo chown pixie Rainbow
$ ls -l Rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 Rainbow

そして、chmodを使用して許可ビットを変更します

$ Sudo chmod 333 Rainbow
$ ls -l Rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 Rainbow

許可ビットは所有者、グループ、その他に対して個別に設定されるため、chownchmodを組み合わせることにより、異なるユーザーのファイル許可を制御できます。 Linuxでのパーミッションのクラッシュコースについては、 この短いガイド をご覧ください。

48
Zanna

簡単に言うと、chownはファイルの所有権を変更するために使用され、chmodはファイルモードビットを変更するために使用されます。

  • chownは、ファイルの所有者を定義します。
  • chmodは、誰が何をできるかを定義します。

誰かをファイルの所有者にすると、(s)そのファイルをどこでも好きな場所で実行できます。たとえば、([s])chmodを使用してmod(許可など)を変更し、誰が何をすることができます。

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

上記の行では、ravexinaがファイルの所有者であり、adminsがグループであることがわかります。 Sudo chown dave:Sudo fileを使用して、ファイルの所有者をdaveに、グループをSudoに変更できます。これで、ファイルは「dave」と「Sudo」グループの全員に属します。

しかし、chmodでは、誰が何をできるかを定義しますか?ファイルを読み取る権利、ファイルに書き込む権利、またはファイルを実行する権利を持っている人。例えば:

chmod 777 file

所有者、グループ、その他すべての人を含むすべての人に読み取り、書き込み、実行の権限を与えます。

From turnoff.usenter image description here

96
Ravexina

ファイル(またはディレクトリなど)のアクセス許可を検討する場合、2つの要因があります。

  • whoファイルの所有者-ユーザーとグループ、および
  • whatこれでできること-読み取り、書き込み、実行、またはそれらの組み合わせ。

chownwhoを扱います。 chmodwhatを扱います。もう一方の代わりに使用することはできません。

単純なUnixアクセス許可は、ファイルにアクセスしようとするユーザーを3つのタイプに分類します。

  1. ファイルの所有者
  2. ファイルを所有するグループのメンバーであるユーザー
  3. 他のみんな

chownは、最初の2つを変更するために使用されます。 chmodは、これらのタイプに付与される権限を変更するために使用されます。

19
muru

以前の優れた回答に追加するいくつかのポイント/ヒント:

  • ディレクトリにアクセスするには、ディレクトリ(およびその上のすべてのディレクトリ)に対する実行権限が必要です。
  • -Rオプションを使用して、ターゲットを含むすべての対象に変更を再帰的に適用します。 chown -R www-data files/
  • chown user:group myfile構文を使用して、ユーザーとグループを同時に変更できます。
  • 多くの場合、特にファイルとディレクトリの組み合わせを扱う場合は、絶対アクセス権を設定するよりも「+」および「-」オプションを使用する方が簡単/良いです。たとえば、ディレクトリとその下にあるすべてのグループにグループ書き込み権限を与えたい場合、chmod -R 775 files/は 'files /'とその中および下にあるすべてを実行可能かつ読み取り可能にします。ファイル。 chmod -R g+w files/を使用すると、他には何も触れずにグループの書き込み許可を追加するだけです。
7
james-geldart

すでに非常に良い答えですが、権限が非常に理解しやすいところで貢献したいと思います

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

これにより、ファイルにアクセス許可を簡単に追加できます。上記の例では

user = read + write
other = read but not write
group = not read not write

パーミッションを再帰的に変更する場合は、-Rを忘れないでください。

6
Adam

chownは変更されますwhoファイルの所有者とその所属グループ、chmodが変更されますhow所有者とグループはファイルにアクセスできます(またはまったくアクセスできます)。

1
Bruno Finger