Linux chownコマンド入門
ファイルの所有者とグループを変更する
chownコマンドでファイルやディレクトリの所有者・グループを変更する方法を解説します。
こんな人向けの記事です
- ファイルの所有者やグループの概念を理解したい方
- Webサーバーやアプリのファイル所有権を適切に設定したい方
- システム管理でchownを使いこなしたい方
Step 1chownコマンドの基本
chownコマンドは「change owner」の略で、ファイルやディレクトリの所有者を変更するコマンドです。通常はroot権限(sudo)が必要です。
ターミナル
# 所有者を変更
sudo chown user file.txt
# 所有者とグループを同時に変更
sudo chown user:group file.txt
# ディレクトリの所有者を変更
sudo chown user directory/
# 現在の所有者を確認
ls -l file.txt
# 出力: -rw-r--r-- 1 owner group 1024 Mar 14 file.txt
基本構文: chown [オプション] 所有者[:グループ] ファイル。所有者の変更にはroot権限が必要です。一般ユーザーは自分のファイルのグループのみ変更できます。
Step 2グループの変更
所有者とグループの指定方法にはいくつかのパターンがあります。
ターミナル
# 所有者のみ変更
sudo chown newuser file.txt
# グループのみ変更(:を前置)
sudo chown :newgroup file.txt
# 所有者とグループを同時に変更
sudo chown newuser:newgroup file.txt
# 所有者を変更し、グループを所有者のデフォルトグループに
sudo chown newuser: file.txt
# chgrpコマンドでグループのみ変更(代替方法)
sudo chgrp newgroup file.txt
# UID/GID番号で指定
sudo chown 1000:1000 file.txt
| 指定方法 | 説明 |
|---|---|
user | 所有者のみ変更 |
user:group | 所有者とグループを変更 |
:group | グループのみ変更 |
user: | 所有者を変更、グループは所有者のデフォルト |
Step 3よく使うオプション一覧
chownコマンドの主要なオプションを紹介します。
ターミナル
# ディレクトリ内を再帰的に変更
sudo chown -R www-data:www-data /var/www/html/
# 変更内容を詳細表示
sudo chown -v user:group file.txt
# 変更があった場合のみ表示
sudo chown -c user:group file.txt
# 参照ファイルと同じ所有者に設定
sudo chown --reference=ref_file.txt target_file.txt
# シンボリックリンクの処理
sudo chown -h user link.txt # リンク自体の所有者を変更
| オプション | 説明 |
|---|---|
-R | ディレクトリ内を再帰的に変更 |
-v | 変更内容を詳細表示 |
-c | 変更があった場合のみ表示 |
-h | シンボリックリンク自体を変更 |
--reference=FILE | 参照ファイルと同じ所有者に設定 |
--from=OWNER:GROUP | 現在の所有者が一致する場合のみ変更 |
Step 4実践的な使用例
Webサーバー設定やシステム管理での実践例を紹介します。
ターミナル
# Webサーバー(Apache/Nginx)の設定
sudo chown -R www-data:www-data /var/www/html/
# アプリケーションのデプロイ
sudo chown -R deploy:deploy /opt/myapp/
# ログディレクトリの設定
sudo chown -R syslog:adm /var/log/myapp/
# ホームディレクトリの修復
sudo chown -R username:username /home/username/
# Dockerボリュームの権限修復
sudo chown -R 1000:1000 /var/lib/docker/volumes/myapp/
# 特定の所有者のファイルのみ変更
sudo chown --from=olduser newuser -R /data/
# findと組み合わせた条件付き変更
sudo find /var/www -user olduser -exec chown newuser {} +
注意: chownの変更はsudoが必要です。-Rでディレクトリ内を再帰的に変更する場合、意図しないファイルまで変更されないようパスを確認しましょう。特に/や/home直下での実行は危険です。