chmod(許可設定)と chown(所有者変更)がよく使われますが、グループだけを変更したい場面では chgrp コマンドが最もシンプルです。この記事では、ファイルやディレクトリの所有グループを変更する
chgrp(チェンジグループ)コマンド の使い方を解説します。基本的なグループ変更から、
-R オプションによるディレクトリ一括変更、chown との使い分けまで、実務で必要なポイントをまとめました。・-R オプションでディレクトリ以下を再帰的に一括変更できる
・chown :グループ名 でも同じ操作ができ、所有者変更と同時に行うには chown ユーザー:グループ が便利
・Webサーバー(apache/nginx)の実行ユーザーにグループを合わせることで Permission denied を解消できる
・グループの確認は ls -l、グループ一覧は getent group コマンドを使う
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxの「グループ」とは何か
Linuxでは、すべてのファイルに「所有ユーザー」と「所有グループ」が設定されています。ls -l で確認すると、3列目が所有ユーザー、4列目が所有グループです。$ ls -l index.html -rw-r--r-- 1 pakira pakira 1024 Mar 10 10:00 index.html # ↑所有者 ↑グループ
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サイトを公開する際、ドキュメントルートのグループをapache や nginx に設定するのが定番です。# 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:fileコマンドでファイルの種類を調べる方法|MIME判定やスクリプトでの活用も
- 前のページへ:chownコマンドで所有者・グループを変更する方法|-Rの一括変更も
- この記事の属するカテゴリ:Linuxコマンド・LinuxコマンドA-E・ファイル・ディレクトリ管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます