はじめに

こんにちは!今回はchgrpコマンドについて解説します。

chgrpはファイルやディレクトリのグループ所有権を変更するコマンドです。“change group"の略ですね。

Linuxではファイルに所有者とグループが設定されていて、アクセス権限はこの両者に基づいて決定されます。chgrpを使うことで、複数のユーザーがまとめてファイルにアクセスできるようにできます。チーム開発やプロジェクト管理では欠かせないコマンドですよ。


chgrpコマンドとは

chgrpは、ファイルやディレクトリの所属グループを変更する外部コマンドです。

chmodが権限(読み書き実行)を変更し、chownが所有者を変更するのに対して、chgrpはファイルの「グループ」部分のみを変更します。複数ユーザーでの共有ファイル管理、プロジェクトディレクトリの権限設定で活躍します。

主な用途:

  • ファイルのグループ所有権を変更
  • ディレクトリをチーム所有にする
  • グループベースのアクセス制御

基本構文

1
chgrp [オプション] グループ ファイル/ディレクトリ

グループには、グループ名またはグループID(GID)を指定します。


主なオプション

オプション 説明
-R ディレクトリを再帰的に変更
-r -Rと同じ(古いシステムの互換性)
-f エラーメッセージを抑制
-c 変更されたファイルのみ表示
-v 詳細表示(verbose)
--reference=FILE 別ファイルと同じグループに変更

使用例

例1: 基本的なグループ変更

1
chgrp developers myfile.txt

実行結果:

1
(成功時は何も表示されない)

myfile.txtのグループをdevelopersに変更します。最もシンプルな使い方です。


例2: グループIDで指定

1
chgrp 1001 myfile.txt

実行結果:

1
(成功時は何も表示されない)

グループIDで直接指定する方法です。グループ名が不明な場合に便利です。


例3: ディレクトリを再帰的に変更

1
chgrp -R project /var/www/myproject

実行結果:

1
(成功時は何も表示されない)

-Rオプションで、ディレクトリ配下のすべてのファイル・ディレクトリをまとめて変更します。


例4: 変更内容を表示

1
chgrp -v developers myfile.txt

実行結果:

1
changed ownership of 'myfile.txt' from developers to developers

-vオプションで、実際に変更されたファイルを表示します。


例5: 変更されたものだけを表示

1
chgrp -c -R project /var/www/myproject/

実行結果:

1
2
changed group of '/var/www/myproject/config.php' from www-data to project
changed group of '/var/www/myproject/data.txt' from www-data to project

-cオプションで、実際に変更があったファイルのみ表示します。


例6: 別ファイルと同じグループに設定

1
chgrp --reference=/etc/config.conf myfile.txt

実行結果:

1
(成功時は何も表示されない)

/etc/config.confと同じグループをmyfile.txtに適用します。


例7: 複数ファイルを同時に変更

1
chgrp developers file1.txt file2.txt file3.txt

実行結果:

1
(成功時は何も表示されない)

複数ファイルを一度に同じグループに変更できます。


例8: エラーメッセージを抑制

1
chgrp -f developers nofile.txt

実行結果:

1
(エラーメッセージが表示されない)

-fオプションで、存在しないファイルなどのエラーを表示しません。スクリプトで便利です。


例9: ディレクトリ配下を特定グループに設定

1
2
chgrp -R www-data /var/www/html
chmod -R g+w /var/www/html

実行結果:

1
(成功時は何も表示されない)

Webサーバーディレクトリのグループをwww-dataに変更して、グループメンバーが書き込み可能にします。


例10: グループの確認と変更

1
2
3
4
5
6
7
8
# 変更前の確認
ls -l myfile.txt

# グループ変更
chgrp -v developers myfile.txt

# 変更後の確認
ls -l myfile.txt

実行結果:

1
2
3
-rw-r--r-- 1 user apache    1234 Jan  3 10:00 myfile.txt
changed ownership of 'myfile.txt' from apache to developers
-rw-r--r-- 1 user developers 1234 Jan  3 10:00 myfile.txt

変更前後の状態を確認する標準的な手順です。


Tips・注意点

chownとchgrpの違い

1
2
3
4
5
6
7
8
# chown:ファイルの所有者を変更
chown user myfile.txt

# chgrp:ファイルのグループを変更
chgrp developers myfile.txt

# chown:所有者とグループを同時に変更
chown user:developers myfile.txt

chownでも所有者とグループの両方を変更できますが、グループだけ変更する場合はchgrpが便利です。


グループが存在しない場合のエラー

1
2
3
4
5
6
$ chgrp nonexistentgroup myfile.txt
chgrp: invalid group: 'nonexistentgroup'

# 存在するグループを確認
$ cat /etc/group | grep developers
developers:x:1001:

存在しないグループを指定するとエラーが出ます。/etc/groupで有効なグループを確認しましょう。


Root権限が必要な場合がある

1
2
3
4
5
# 自分のファイルなら、自分のグループ内のグループに変更できる(通常)
chgrp users myfile.txt

# 他人のファイルを変更する場合は、通常root権限が必要
sudo chgrp developers otheruser_file.txt

実行ユーザーや権限設定によっては、sudo が必要になります。


-Rオプションは再帰的に実行される

1
2
3
4
5
6
# 間違えると、ディレクトリ配下のすべてが変更される可能性
chgrp -R developers /home/user/  # 注意!大きなディレクトリでは時間がかかる

# 本当に変更するか確認してから実行
find /home/user -type f | wc -l  # ファイル数を確認
chgrp -Vc developers /home/user

大きなディレクトリで誤実行すると、時間がかかるので注意しましょう。


実践的な使い方

チーム開発プロジェクトのセットアップ

1
2
3
4
5
6
# プロジェクトディレクトリをチーム所有にする
chgrp -R developers /var/www/myproject
chmod -R g+rw /var/www/myproject

# グループメンバーが読み書き可能に
ls -ld /var/www/myproject

複数のデベロッパーがプロジェクトにアクセスできるようにします。


共有ディレクトリの作成

1
2
3
4
5
mkdir /data/shared
chgrp -R team /data/shared
chmod -R 775 /data/shared

# チームメンバーが読み書き実行可能に

複数ユーザーが共有して使用するディレクトリを作成できます。


バックアップディレクトリの権限設定

1
2
3
4
chgrp -R backup /backup/data
chmod -R 750 /backup/data

# バックアップグループだけがアクセス可能に

バックアップデータへのアクセスを特定グループに制限できます。


Webアプリケーションの権限設定

1
2
3
4
5
6
7
# Webサーバーがファイルを読み書きできるようにする
chgrp -R www-data /var/www/app
chmod -R g+w /var/www/app/uploads

# ログディレクトリもwww-dataグループに
chgrp -R www-data /var/www/app/logs
chmod -R 775 /var/www/app/logs

Webアプリケーションの権限設定を標準化できます。


まとめ

chgrpコマンドのポイント:

  • 基本形式chgrp グループ ファイル
  • 再帰的変更chgrp -R グループ ディレクトリ
  • 詳細表示chgrp -v
  • 変更確認のみchgrp -c
  • グループの確認/etc/groupで確認
  • 複数ファイルchgrp グループ file1 file2 file3
  • よく使う組み合わせchgrp -Rc グループ /pathchmod g+wと合わせて使用

グループ所有権の変更は、チーム開発やアクセス制御の基本です。chmodと組み合わせることで、効果的な権限管理ができますよ!