Linux / コマンド / chgrp - ファイルの所有グループを変更

chgrpはファイルやディレクトリの所有グループのみを変更します。複数のユーザーが同じ作業ファイルにアクセスできるようにグループを合わせるときに使用します。

グループ所有権が変更されても、ファイルのグループ権限ビットは自動的には追加されません。実際に共有アクセスを許可するには、対象のグループの読み取り・書き込み権限と上位ディレクトリの通過権限もあわせて確認する必要があります。

基本的な文法

chgrp [オプション] グループ ファイル ...

インストールされている実装とオプションは、配布版によって異なる場合があります。man chgrpで現在のシステムの説明を確認してください。

使用例

ファイルグループの変更

対象グループが存在し、変更権限があるか確認します。

sudo chgrp editors report.txt

複数ファイルに適用

既存の実習用 draft.txt と final.txt を対象にします。複数ファイルへの変更は一括で元に戻る処理ではないため、途中でエラーになった場合も各ファイルを確認します。

sudo chgrp editors draft.txt final.txt

変更前後の確認

statでグループと権限を一緒に確認します。

stat -c '%U:%G %A %n' report.txt

グループ変更後に確認すること

chgrpは所有者はそのままにして、グループ所有権のみを変更します。以下の例のグループはあらかじめ存在している必要があり、既存の実習用 demo.txt に対する変更権限も必要です。Linuxの一般ユーザーは通常、自分が所有するファイルを、自分が所属するグループへ変更できます。所属を確認するには groupsによる所属グループの確認 を使います。必要な管理権限があれば、この制限は異なります。

chgrp developers demo.txt
stat -c '%G %n' demo.txt

例の出力:

developers demo.txt

権限がない場合、Operation not permittedエラーが発生することがあります。所有グループが変更されてもアクセス可能かどうかは、ファイルのグループ権限ビットと現在のプロセスのグループメンバーシップによります。共有ディレクトリの新しいファイルに同じグループを維持する場合は、ディレクトリのsetgidビット(新しい項目にディレクトリのグループを引き継がせる特殊ビット)も確認します。既存のファイルが遡って変わるわけではなく、新しいファイルの読み書き権限は新規作成時の権限を制限するumaskや、アクセス制御リスト(ACL)などの条件も別に確認します。

主なオプションと形式

オプション・形式 説明
-R サブパスまで再帰的に変更します。
-h シンボリックリンク自体のグループを対象にします。
--reference=ファイル 参照ファイルのグループを使用します。
-v 処理したファイルを詳しく表示します。

使用する際の注意点

グループだけ変更した後でもPermission deniedが出ることがあります。ls -ldで上位ディレクトリの実行権限とファイルのグループ権限を確認してください。chgrp -Rは範囲が広く、シンボリックリンクの処理も考慮する必要があるため、正確な対象でのみ実行してください。Linuxではグループ変更でset-user-ID・set-group-IDなどの特殊ビットが解除される場合もあるため、モードも再確認します。変更前のグループIDを記録しておくと、必要な権限で元のグループへ戻す際に役立ちます。

よくある質問

chgrpとchown :グループは同じ用途ですか?

どちらも所有グループだけの変更に使えます。chownの所有者・グループ指定 では、chown :editors ファイル のようにコロンの前の所有者を省略します。グループだけを変更することが目的であれば、chgrpの方がより明確です。

公式ドキュメント

オプションの正確な動作や実装ごとの差異については、chgrpに関する公式ドキュメントで確認できます。