概要
Linuxにおけるファイルやディレクトリの「所有者(オーナー)」および「所有グループ」を変更するためのコマンドです。
通常、ファイルを作成したユーザーがその所有者となりますが、Webサーバーのデプロイ時や、バックアップファイルを別ユーザーに引き渡す際など、明示的に権限を書き換える必要がある場合に使用されます。
他人のファイル操作に関わるため、実行には基本的に管理者権限(sudo)が必要です。
仕様(引数・オプション)
構文
chown [オプション] [ユーザー名[:[グループ名]]] ファイル名...
主な引数・オプション
| オプション | 説明 |
-c | 実際に変更が行われた場合のみ、詳細を表示します(changes)。 |
-R | 指定したディレクトリ以下の全ファイル・ディレクトリを再帰的に変更します(Recursive)。 |
--reference=<ファイル> | 指定したファイルと同じ所有者・グループ設定を適用します。 |
-h | シンボリックリンクの場合、リンク先ではなくリンクファイル自体の所有者を変更します(no-dereference)。 |
--dereference | シンボリックリンクの場合、リンク先のファイルの所有者を変更します(デフォルトの挙動)。 |
-f | エラーメッセージを表示しません(force)。 |
--from=<現在の所有者[:現在のグループ]> | 現在の所有者やグループが指定と一致する場合のみ変更を行います。 |
ユーザー名とグループ名の指定方法
コロン(:)の使い方によって、変更対象が変わります。
| 指定方法 | 例 | 説明 |
ユーザー名:グループ名 | user:admin | 所有者を「user」、グループを「admin」に変更します。 |
ユーザー名 | user | 所有者を「user」に変更します。グループは変更されません。 |
ユーザー名: | user: | 所有者を「user」に変更し、グループをそのユーザーのログイングループに変更します。 |
:グループ名 | :admin | グループのみを「admin」に変更します(chgrp コマンドと同等)。 |
基本の使い方
ファイルの所有者を変更する最も基本的な操作です。通常、所有権の変更はroot権限が必要となるため、sudo を付けて実行します。
コマンド
# 所有者を確認
ls -l config.xml
# 所有者を 'deploy_user' に変更
sudo chown deploy_user config.xml
# 結果確認
ls -l config.xml
実行結果
-rw-r--r-- 1 root root 1024 Jan 20 10:00 config.xml
↓ (実行後)
-rw-r--r-- 1 deploy_user root 1024 Jan 20 10:00 config.xml
実践コマンド
所有者と所有グループを同時に変更する
Webサーバーのドキュメントルートなど、特定のユーザーとグループに権限を割り当てる際によく使われる形式です。
# 所有者を 'www-data'、グループを 'www-data' に一括変更
sudo chown www-data:www-data /var/www/html/index.html
(出力なし)
ディレクトリ以下の所有権を再帰的に変更する
ディレクトリの中にあるサブディレクトリやファイル全てを、指定したユーザーの所有に変更します。WordPressなどのCMSをセットアップする際や、ホームディレクトリの修復などで頻繁に使用します。
# /var/www/project ディレクトリ配下の全ファイルの所有者を 'app_user' に変更
sudo chown -R app_user /var/www/project/
(出力なし)
カスタムポイント
- ユーザーとグループの区切り: 古いシステムではドット(
.)が使われることがありましたが、ユーザー名にドットが含まれる場合があるため、現在はコロン(:)の使用が推奨されます。 - 確認メッセージ: 変更されたファイルだけを確認したい場合は
-cオプションを併用すると、ログが見やすくなります。
注意点
- 一般ユーザーの制限:Linuxのセキュリティモデルでは、一般ユーザーが「ファイルの所有権を他人に譲渡する(自分→他人)」ことや、「他人のファイルを自分のものにする(他人→自分)」ことは禁止されています。chown は基本的に sudo (root権限) で実行する必要があります。
- -R の操作ミス:chown -R user:group / や chown -R user:group /usr などを誤って実行すると、システムの重要なファイルの所有権が書き換わり、OSが起動しなくなるなどの致命的な障害(sudoすら使えなくなる状態)を引き起こします。パスの指定は慎重に行ってください。
- シンボリックリンクの扱い:デフォルトではシンボリックリンクを指定すると「リンク先のファイル」が変更されます。リンクファイルそのものの所有者を変えたい場合は -h オプションが必要です。
応用
特定のユーザーが所有しているファイルだけを変更する
--from オプションを使用することで、誤って関係ないファイルの所有権を変更する事故を防ぎます。「退職したユーザーのファイルだけを、新しい管理者に引き継ぐ」といった場面で有効です。
# 所有者が 'old_admin' であるファイルのみ、'new_admin' に変更する
# (root所有のファイルなどは変更されずにスキップされる)
sudo chown -R --from=old_admin new_admin /shared/docs/
(出力なし。条件に一致するものだけが変更される)
まとめ
chownコマンドは、Linuxシステムにおけるアクセスコントロールの根幹を担うコマンドです。chmodコマンドによる「権限(rwx)」の設定と対になって使用され、特にWebアプリケーションのデプロイやサーバー構築作業においては、適切なユーザー権限を割り当てることがセキュリティ確保の第一歩となります。再帰的な変更を行う-Rオプションは非常に強力ですが、システム領域を誤って書き換えないよう、常に操作対象のパスを指差し確認してから実行する習慣をつけることが重要です。
