ファイル操作

Linux chownコマンド入門|ファイルの所有者とグループを変更する

Linux chown 権限管理

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直下での実行は危険です。