所有権の変更の略 、Chownコマンドは、ファイルまたはディレクトリ、さらにはリンクのユーザーまたはグループの所有権を変更するために使用されるコマンドラインユーティリティです。 Linuxの哲学は、すべてのファイルまたはディレクトリが特定のアクセス権を持つ特定のユーザーまたはグループによって所有されるというものです。
さまざまな例を使用して、chownコマンドのさまざまなユースケースを試してみます。 Chownコマンドは、非常に単純でわかりやすい構文を採用しています。
$ chown OPTIONSユーザー:グループファイル
パラメータを簡単に具体化してみましょう:
属性USER ファイルを所有するユーザーのユーザー名を指します。ユーザー名またはUIDのいずれかを指定できます ( ユーザーID)。一方、グループ オプションは、コマンドの実行後にファイルが取得する新しいグループの名前を示します。ファイルオプションは、通常のファイルまたはディレクトリ、さらにはシンボリックリンクを表します。これらは、権限を変更できる3つのエンティティです。
注意すべき点:
1)USERオプションを単独で指定すると、ファイル/ディレクトリの所有権は指定されたユーザーの所有権に変更されますが、グループの所有権は変更されません。次に例を示します:
$ chown john file1.txt
上記のコマンドでは、ファイルfile1.txtのユーザー所有権が現在のユーザーからユーザーjohnに変更されます。
2)USERオプションの前に完全なコロン、つまりUSER:があり、グループ名が指定されていない場合、ユーザーはファイルの所有権を取得しますが、ファイルのグループ所有権はユーザーのログイングループに切り替わります。例:
$ chown john: file1.txt
この例では、ユーザーjohnがファイルfile1.txtの所有権を取得しますが、ファイルのグループ所有権はjohnのログイングループに変更されます。
3)ユーザーオプションとグループオプションの両方がコロンで区切られて指定されている場合、つまりUSER:GROUP(スペースなし)の場合、ファイルは指定されたとおりに新しいユーザーとグループの所有権を取得します
$ chown john:john file1.txt
上記の例では、ファイルはユーザーjohnのユーザーとグループの所有権を取得します。
4)USERオプションを省略し、代わりにグループオプションの前に完全なコロン:GROUPを付けると、ファイルのグループ所有権のみが変更されます。
ファイルのアクセス許可を表示する方法
ファイルのアクセス許可を表示するには、ls-lコマンドに続けてファイル名を使用するだけです
$ls-lファイル名
例:
$ ls -l file1.txt
出力から、ファイルはユーザーlinuxtechiによって所有されており、3列目と4列目にそれぞれグループlinuxtechiに属していることがわかります。
chownコマンドでファイル所有者を変更する方法
rootユーザーとして作業していない場合は、権限を変更する前に、必ずsudoを呼び出してください。これにより、ファイルのユーザーとグループの所有権を変更するための昇格された特権が付与されます。
ファイルの所有権を変更するには、次の構文を使用します:
$sudochownユーザーファイル名
たとえば、
$ sudo chown james file1.txt
出力から、ファイルの所有権がlinuxtechiからuserjamesに変更されたことがはっきりとわかります。
または、ユーザー名を使用する代わりに、ユーザーのUIDを渡すこともできます。 UIDを取得するには、/ etc/passwdファイルを表示します。
$ cat /etc/passwd | grep username
以下の例から、ユーザーlinuxtechiのUIDは1002であることがわかります
ファイルの所有権をlinuxtechiユーザーに戻すには、次のコマンドを実行します。
$ sudo chown 1002 file1.txt
chownコマンドでグループ所有者を変更する方法
前に説明したように、ファイルのグループ所有者を変更するには、ユーザーを省略し、グループ名の前に完全なコロンを付けるだけです。
$ sudo chown:group file
たとえば、file1.txtのグループ所有者をlinuxtechiからdockerに変更するには、次のコマンドを実行しました。
$ sudo chown :docker file1.txt
ファイルのファイル所有者とグループ所有者の両方を変更する方法
ファイルが属する所有者とグループの両方を変更する場合は、以下の構文に示すように、ユーザーとグループの両方のオプションを完全なコロンで区切って指定します。オプションとコロンの間にスペースがないことを確認してください。
$ sudo chown user:group filename
たとえば、次のコマンドは、ファイルfile1.txtの所有権を、lsコマンドを使用して確認されたユーザーjamesとグループredisに変更します。
$ sudo chown james:redis file1.txt
ファイルの所有権を再帰的に変更する方法
ディレクトリにアクセス許可を適用する場合、変更を再帰的に適用することをお勧めします。つまり、所有権の変更を降順で行い、ファイルとサブディレクトリに適用します。これを実現するには、再帰オプション-Rまたは–recursiveディレクティブを使用します。
$ sudo chown -R user:group directory
たとえば、次のコマンドは、/ var/wwwディレクトリの所有権にあるすべてのファイルとフォルダをwww-dataグループに割り当てます。
$ sudo chown -R :www-data /var/www
次の例では、ディレクトリレポートの所有権を、ディレクトリ内のすべてのファイルとフォルダとともにユーザーlinuxtechiに割り当てています。
$ sudo chown -R linuxtechi reports
参照ファイルを使用して所有権を変更する方法
最後に、ファイルの所有権を変更するために使用できる便利な方法があります。それは、参照ファイルを使用することです。 chownコマンドを使用すると、別のファイルを参照ポイントとして使用して、ファイルのユーザーとグループの所有権を変更できます。
構文を以下に示します。
$ chown –reference=ref_fileファイル
file1.txtのユーザーとグループの所有権を別のファイルfile2.txtに割り当てたいとします。どうしますか?これは、以下のコマンドに示されています。
$ chown --reference=file1.txt file2.txt
上記の出力は、file2.txtがfile1.txtのユーザーとグループの所有権を継承していることを確認しています。コマンドでは、file1.txtが参照ファイルです。
結論
Chownコマンドは、ファイルとディレクトリの所有権を管理するために使用される強力なツールです。詳細については、chownのマニュアルページをご覧ください。
$ man chown
また読む :LinuxのZipおよびUnzipコマンドと例