chgrpコマンドでグループを変更する方法|chownとの使い分けと-R一括変更コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, ファイル・ディレクトリ管理コマンド > chgrpコマンドでグループを変更する方法|chownとの使い分けと-R一括変更コマンド
「chownコマンドで所有者を変えたのに、グループが変わっていなくてPermission deniedが消えない」 「Webサーバーのファイルのグループだけを変更したいが、所有者は変えたくない」 Linuxのファイル権限管理では、chmod(許可設定)と chown(所有者変更)がよく使われますが、グループだけを変更したい場面では chgrp コマンドが最もシンプルです。

この記事では、ファイルやディレクトリの所有グループを変更する chgrp(チェンジグループ)コマンド の使い方を解説します。
基本的なグループ変更から、-R オプションによるディレクトリ一括変更、chown との使い分けまで、実務で必要なポイントをまとめました。
【この記事でわかること】 ・chgrp はファイル・ディレクトリの所有グループだけを変更するコマンド
・-R オプションでディレクトリ以下を再帰的に一括変更できる
・chown :グループ名 でも同じ操作ができ、所有者変更と同時に行うには chown ユーザー:グループ が便利
・Webサーバー(apache/nginx)の実行ユーザーにグループを合わせることで Permission denied を解消できる
・グループの確認は ls -l、グループ一覧は getent group コマンドを使う

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Linuxの「グループ」とは何か

Linuxでは、すべてのファイルに「所有ユーザー」と「所有グループ」が設定されています。ls -l で確認すると、3列目が所有ユーザー、4列目が所有グループです。

$ ls -l index.html -rw-r--r-- 1 pakira pakira 1024 Mar 10 10:00 index.html # ↑所有者 ↑グループ

グループは、複数のユーザーにまとめて権限を付与する仕組みです。たとえばWebサーバーのファイルを apache グループに設定すれば、apache グループに所属するユーザー全員がアクセスできるようになります。

chgrpコマンドの基本~グループを変更する

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

# 基本書式 # chgrp グループ名 ファイル名 # index.html のグループを "apache" に変更する $ sudo chgrp apache index.html

変更後は ls -l で確認しましょう。

$ ls -l index.html -rw-r--r-- 1 pakira apache 1024 Mar 10 10:00 index.html # ↑ apache に変わった

一般ユーザーとroot権限の違い

chgrp は一般ユーザーでも実行できますが、条件があります。

一般ユーザー:自分が所有するファイルに対してのみ、自分が所属しているグループへの変更が可能
rootユーザー:すべてのファイルのグループを任意に変更できる

自分が所属していないグループに変更しようとすると「Operation not permitted」エラーが出ます。

# 一般ユーザーが所属していないグループに変更しようとした場合 $ chgrp docker myfile.txt chgrp: changing group of 'myfile.txt': Operation not permitted # sudo を付ければ変更できる $ sudo chgrp docker myfile.txt

自分が所属しているグループは groups コマンドで確認できます。

$ groups pakira wheel apache

ディレクトリ以下を一括変更する(-R オプション)

-R(大文字のアール)オプションを付けると、指定したディレクトリ以下のすべてのファイル・サブディレクトリのグループを再帰的に変更します。

# /var/www/html/ 以下のすべてのファイルのグループを apache に変更する $ sudo chgrp -R apache /var/www/html/

【重要】-R オプションの注意点

chown -R と同様に、chgrp -R もパスを間違えるとシステムに深刻な影響を与えます。特に /(ルートディレクトリ)を指定してしまうと、OS全体のファイルのグループが書き換わり、起動不能になる可能性があります。
実行前に必ず対象パスを確認してください。

エラーメッセージを非表示にする(-f オプション)

-f オプションを付けると、権限不足で変更できないファイルがあってもエラーメッセージを表示しません。

# エラーメッセージを抑制して一括変更 $ sudo chgrp -Rf apache /var/www/html/

ただし、エラーを見落とす原因にもなるため、通常は -f なしで実行し、エラーが出たら原因を確認するのが安全です。

chgrp と chown の使い分け

chown コマンドでもグループの変更は可能です。では chgrp を使うのはどんな場面でしょうか。

グループだけ変更したいとき:chgrp グループ名 ファイル名 が最もシンプル
所有者も同時に変更したいとき:chown ユーザー名:グループ名 ファイル名 が効率的

実務では chown :グループ名 ファイル名 でもグループだけの変更は可能ですが、コロンの付け忘れに注意が必要です。グループだけを確実に変更したい場合は chgrp のほうが安全です。

# chgrp でグループだけ変更(シンプル・確実) $ sudo chgrp apache index.html # chown でグループだけ変更(コロンを忘れるとユーザー変更になるので注意) $ sudo chown :apache index.html

「invalid group」が出た時の対処法

存在しないグループ名を指定した場合に表示されるエラーです。

$ sudo chgrp nogroup myfile.txt chgrp: invalid group: 'nogroup'

システムに登録されているグループ名は /etc/group ファイルで確認できます。

# グループ一覧を確認 $ cat /etc/group | grep apache apache:x:48:

実務でよく使うchgrpの活用例

1. Webサーバーの公開ディレクトリを設定する

ApacheやNginxでWebサイトを公開する際、ドキュメントルートのグループを apachenginx に設定するのが定番です。

# Apache の場合 $ sudo chgrp -R apache /var/www/html/ $ sudo chmod -R g+r /var/www/html/

2. 共有ディレクトリのグループを設定する

複数のユーザーで共有するディレクトリでは、SGIDビットと組み合わせることで、新規作成ファイルに自動的にグループが継承されるように設定できます。

# 共有ディレクトリのグループを設定 $ sudo chgrp -R project /shared/docs/ # SGIDビットを設定(新規ファイルがグループを継承) $ sudo chmod g+s /shared/docs/

本記事のまとめ(chgrpコマンド早見表)

やりたいこと コマンド
ファイルのグループを変更する chgrp グループ名 ファイル名
ディレクトリ以下を一括変更する chgrp -R グループ名 ディレクトリ名
エラーメッセージを非表示にする chgrp -f グループ名 ファイル名
現在のグループを確認する ls -l ファイル名
自分の所属グループを確認する groups
システムのグループ一覧を確認する cat /etc/group

グループ管理を正確に理解してサーバーを守れていますか?

コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。