Linuxでは、ファイルやディレクトリに対して「所有者」や「グループ」といった情報が紐づいています。アクセス権限の管理を行ううえで、これらの情報は非常に重要です。中でも「グループ」は複数ユーザー間でのファイル共有に活用されることが多く、ファイルのグループを適切に管理することで、安全かつ効率的な運用が可能になります。
本記事では、ファイルのグループを変更するchgrp
コマンドについて、基本的な使い方から実践的な応用までを詳しく解説します。また、スクリプトでフィールドごとの情報を変数に代入しながら処理を行う方法についても紹介します。初心者の方にもわかりやすいよう丁寧に説明していきますので、ぜひ参考にしてください。
chgrpコマンドとは?
chgrp
は「change group」の略で、ファイルやディレクトリのグループ所有権を変更するためのLinuxコマンドです。通常、ファイルを作成したユーザーのプライマリグループが自動で所有グループになりますが、管理上の都合で別のグループに変更したい場面も出てきます。
基本構文
chgrp [オプション] グループ名 対象ファイル
例
chgrp developers report.txt
この例では、report.txt
ファイルのグループをdevelopers
に変更しています。
chgrpの主なオプション
chgrp
には便利なオプションがいくつか用意されています。
-R(再帰的に処理)
ディレクトリ内のすべてのファイルやサブディレクトリにも変更を適用したい場合に使用します。
chgrp -R staff /var/www
このコマンドは、/var/www
以下のすべてのファイル・ディレクトリのグループをstaff
に変更します。
-v(詳細出力)
変更内容を出力することで、何が変更されたのか確認できます。
chgrp -v users test.txt
--reference=FILE
指定したファイルのグループを基準にして、他のファイルのグループを変更できます。
chgrp --reference=template.txt data.txt
この例では、template.txt
と同じグループにdata.txt
を変更します。
グループを変更する際の注意点
権限が必要
グループの変更は、対象ファイルの所有者か、root権限を持つユーザーでなければ実行できません。通常ユーザーが他人のファイルに対して勝手にグループ変更を行うことはできません。
sudo chgrp devteam script.sh
実在するグループであること
指定するグループ名は、あらかじめ/etc/group
ファイルに定義されている必要があります。定義されていないグループを指定すると、エラーが発生します。
スクリプトでの応用:フィールドを変数に代入して処理する方法
複数ファイルの所有グループを一括で変更したい場合や、ログファイルやCSVなどを読み込んで処理する場合は、変数を使ったスクリプトが有効です。
例1:CSVの内容を読み込んでchgrpを実行
#!/bin/bash
# ファイル形式(group,file)
# developers,projectA.txt
# testers,testReport.log
while IFS=, read -r group file
do
echo "Changing group of $file to $group"
chgrp "$group" "$file"
done < input.csv
このスクリプトでは、input.csv
というファイルを1行ずつ読み込み、カンマ区切りの1列目をグループ名、2列目をファイル名としてchgrp
でグループを変更しています。
例2:ディレクトリ内のすべてのファイルに同じグループを適用
#!/bin/bash
target_dir="/home/user/shared"
target_group="team"
for file in "$target_dir"/*
do
chgrp "$target_group" "$file"
done
このスクリプトは、指定ディレクトリ内のすべてのファイルに対して、グループを一括でteam
に変更します。
グループ管理とchgrpの活用シーン
共有作業ディレクトリの運用
プロジェクトチームで共有ディレクトリを使う場合、すべてのファイルのグループを共通にしておくことで、チームメンバー全員がファイルの編集や閲覧を行いやすくなります。
chgrp -R devgroup /home/projects/app/
chmod -R g+rw /home/projects/app/
アクセス制限と安全性の確保
特定のグループだけが閲覧・編集できるように制御することで、業務上の重要ファイルを守ることができます。グループとパーミッションの組み合わせで柔軟なセキュリティ対策が可能です。
よくあるエラーと対処法
「Operation not permitted」と表示される
これは権限が足りないことが原因です。sudo
を付けて再実行しましょう。
sudo chgrp admins confidential.txt
「invalid group: ‘xxx’」と表示される
指定したグループが存在しない場合に発生します。事前に/etc/group
で確認するか、groupadd
で作成しましょう。
sudo groupadd xxx
まとめ
chgrp
コマンドは、Linux環境でのファイル管理やグループ共有に欠かせない重要なコマンドです。単体で使うだけでなく、スクリプトと組み合わせて大量のファイルを効率的に管理することも可能です。変数を使った処理は、業務の自動化や一貫性のある運用にも役立ちます。
適切なグループ管理は、セキュリティの確保や作業の効率化につながります。ぜひ本記事で紹介した内容を参考に、実務でもchgrp
を活用してみてください。