chown は、ファイルやディレクトリの所有者(user)や所有グループ(group)を変更するコマンドです。
Webサーバーのファイル権限設定・アプリケーション用ユーザーへの割り当て・デプロイ後の一括変更など、Linux運用で頻繁に使う場面があります。
本記事では、
- 基本構文とオプション一覧
- よく使うパターンのコピペサンプル
- よくあるエラーと対処法
- chmod・chgrp との使い分け
などをコード例とともにわかりやすく解説します。ファイルパーミッションについては「chmod」も合わせて参照してください。
chownコマンドとは
Linux・macOS のファイルシステムでは、すべてのファイル・ディレクトリに所有者ユーザーと所有グループが設定されています。chown はこれらを変更するコマンドです。
現在の所有者・グループは ls -l で確認できます。
ls -l file.txt
# -rw-r--r-- 1 alice staff 1234 Apr 28 10:00 file.txt
# ↑所有者 ↑グループ
構文(Syntax)
chown [オプション] [OWNER][:GROUP] FILE...
OWNERのみ指定 → 所有者だけ変更OWNER:GROUPで指定 → 所有者とグループを同時変更:GROUPのみ指定 → グループだけ変更
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 所有者を変更 | chown alice file.txt |
: | グループも指定可能 | chown alice:staff file.txt |
-R | ディレクトリ以下を再帰的に変更 | chown -R www-data:www-data /var/www/html |
-c | 変更があった場合のみ報告 | chown -c alice file.txt |
-v | 詳細な情報を表示(変更の有無にかかわらず) | chown -v bob:developers file.txt |
--reference=FILE | 指定ファイルと同じ所有者・グループに変更 | chown --reference=ref.txt target.txt |
-h | シンボリックリンク自体の所有者を変更 | chown -h alice symlink |
すぐ使えるコピペサンプル集
所有者を変更する
sudo chown alice file.txt
所有者とグループを同時に変更する
sudo chown alice:staff file.txt
グループだけ変更する
sudo chown :developers project/
グループのみ変更したい場合は chgrp コマンドを使う方法もあります。
ディレクトリ配下を再帰的に変更する(-R)
sudo chown -R www-data:www-data /var/www/html
Webサーバー(Apache・Nginx)のドキュメントルートなど、ディレクトリ全体の所有者を一括変更するときに使います。
参照ファイルと同じ所有者・グループを適用する
sudo chown --reference=ref.txt target.txt
既存ファイルの権限設定を別ファイルにコピーしたいときに便利です。
変更内容を確認しながら実行する(-v)
sudo chown -Rv alice:staff /home/alice/
実行結果の例:
changed ownership of '/home/alice/file1.txt' from root:root to alice:staff
changed ownership of '/home/alice/docs' from root:root to alice:staff
デプロイ後にアプリ用ユーザーに一括変更する
sudo chown -R appuser:appgroup /opt/myapp
デプロイスクリプトでよく使われるパターンです。
よくあるエラーと対処法
Operation not permitted(権限エラー)
chown alice file.txt
# chown: changing ownership of 'file.txt': Operation not permitted
原因: 所有者変更には root 権限が必要です。
対処: sudo を付けて実行します。
sudo chown alice file.txt
invalid user(ユーザーが存在しない)
sudo chown nobody123 file.txt
# chown: invalid user: 'nobody123'
原因: 指定したユーザーがシステムに存在しません。
対処: id ユーザー名 や cat /etc/passwd でユーザーの存在を確認します。
id alice # ユーザーの存在確認
getent passwd # ユーザー一覧を表示
-R で意図しないファイルまで変更してしまった
原因: -R はディレクトリ以下すべてを再帰的に変更します。パスのミスに注意が必要です。
対処: 事前に -v を付けてドライラン的に確認するか、変更前に ls -lR で対象を把握しておきましょう。
# 変更前に対象ファイルを確認
ls -lR /対象ディレクトリ/
# 変更内容を出力しながら実行
sudo chown -Rv alice:staff /対象ディレクトリ/
シンボリックリンクの所有者が変わらない
原因: デフォルトでは chown はシンボリックリンクのリンク先を変更します。リンク自体を変更したい場合は -h オプションを使います。
sudo chown -h alice symlink_file
chown・chmod・chgrp の使い分け
| コマンド | 変更できるもの | 主な用途 |
|---|---|---|
chown | 所有者・所有グループ | ファイルの帰属ユーザーを変更する |
| chmod | 読み取り・書き込み・実行権限 | ファイルの操作権限を変更する |
chgrp | 所有グループのみ | グループだけ変更したいときにシンプルに使える |
umask | 新規作成時のデフォルト権限 | ファイル作成時の初期権限マスクを設定する |
実践ユースケース
NginxでWebサーバーのドキュメントルートを設定する
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
Nginx・Apache では www-data ユーザーがファイルを読む必要があります。デプロイ後にこのセットで実行するのが定番です。
スクリプトファイルをアプリユーザーに移譲する
sudo chown appuser:appgroup /usr/local/bin/myscript.sh
sudo chmod 750 /usr/local/bin/myscript.sh
ホームディレクトリを正しい所有者に戻す
sudo chown -R bob:bob /home/bob
root 操作でホームディレクトリの所有者が変わってしまった場合の修復に使います。
備考
- 所有者変更は通常 root 権限が必要です(
sudoが必要)。 - グループだけ変更する場合は
chgrpの方がシンプルに使えます。 -Rを付けて実行する場合は、意図せぬ所有権変更によるシステム障害に注意が必要です。- macOS では BSD 版の
chownが使われており、一部オプションの挙動が Linux(GNU版)と異なります。
関連コマンド
参考
- manページ: man7.org chown(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント