グループ情報を変更するchgrpコマンドの使い方【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

chgrpはファイルやディレクトリの管理グループを変更するLinuxコマンドだ。

このページではchgrpを使ったファイルやディレクトリの管理グループの変更方法を解説する。

ぜひ、この機会に覚えておいてほしい。

chgrpコマンドの基本

コマンドの基本動作

Linuxのグループについて全体像を知りたい方は下記のページを先に確認してほしい。

コマンドも一通り解説!Linuxグループの設定方法まとめ

 chgrpコマンドは管理者ユーザー権限で行わないと、権限なしで操作できない場合がある。chgrpコマンドは管理者権限のアカウントで操作しよう。

使い方は、次のとおりだ。

$ chgrp グループ名 ファイル名またはディレクトリ名

まず、ファイルconfig.datのグループをlsコマンドの-lオプションで確認してみよう。

$ ls -l config.dat

chgrpコマンド

config.datの所有ユーザーはvagrant、グループもWaterだ。

config.datの所有ユーザーをFireへ変更する場合は、次のコマンドだ。

$ chgrp Fire config.dat

chgrpコマンド

config.datの所有ユーザーがFireへ変更された。

config.datの所有ユーザーを再度lsコマンドの-lオプションで確認してみよう。

$ ls -l config.dat

chgrpコマンド

config.datの所有ユーザーがFireへ変更されている。

chgrpコマンドのオプションたち

コマンドの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション-c( オプション--changes)

変更があったとき、メッセージを表示する

オプション-v(オプション--verbose)

コマンドの実行状況を表示する

オプション-f(オプション--silent,オプション--quiet,)

エラーメッセージを表示しない

オプション-h( オプション--no-dereference)

シンボリックリンク自体のグループを変更する

オプション-R(オプション--recursive)

ディレクトリ内のグループも変更する

では詳細を見ていこう。

-cオプション(--changesオプション):変更があったとき、メッセージを表示する

変更があったときのみ、結果を表示するコマンドで、書式は次のとおりだ。

$ chgrp -c グループ名 ファイル名またはディレクトリ名

現在のファイルconfig.datのグループをlsコマンドの-lオプションで確認してみよう。

$ ls -l config.dat

chgrpコマンド

config.datの所有ユーザーはvagrant、グループはFireだ。

config.datの所有ユーザーを-cオプションを使ってわざとFireへ変更するような操作をしてみよう。

$ chgrp -c Fire config.dat

chgrpコマンド

特にメッセージは表示されない。現在と同じグループ名を指定したからだ。

今度は、Woodグループへ変更してみよう。

config.datの所有ユーザーをWoodへ変更した時に変更のメッセージを表示するコマンドは次の通りだ。

$ chgrp -c Wood config.dat

chgrpコマンド

今度はグループがFireからWoodに変更になったので、変更のメッセージが表示された。

-vオプション(--verboseオプション):コマンドの実行状況を表示する

-cオプションでは変更があったときのみ、結果を表示した。

-vコマンドは、どんな場合でも実行状況を表示するコマンドで、書式は次のとおりだ。

$ chgrp -v グループ名 ファイル名またはディレクトリ名

現在のファイルconfig.datのグループをlsコマンドの-lオプションで確認してみよう。

$ ls -l config.dat

chgrpコマンド

config.datの所有ユーザーはvagrant、グループはWoodだ。

config.datの所有ユーザーを-vオプションを使ってわざとWoodへ変更するような操作をしてみよう。

$ chgrp -v Wood config.dat

chgrpコマンド

変更がなかったため、処理が保留されたメッセージが表示された。

今度は、Waterグループへ変更してみよう。

config.datの所有ユーザーをWaterグループへ変更した時に、結果にかかわらずメッセージを表示するコマンドは次の通りだ。

$ chgrp -v Water config.dat

chgrpコマンド

今度はグループがWoodからWaterに変更になったメッセージが表示された。

-fオプション(--silentオプション,--quietオプション):エラーメッセージを表示しない

ほとんどの場合、エラーメッセージを表示しないコマンドで、書式は次のとおりだ。

$ chgrp -f グループ名 ファイル名またはディレクトリ名

わざと存在しないファイル名config12.datの所有ユーザーを-vオプションを使わないでグループWaterへ変更するような操作をしてみよう。

$ chgrp Water config12.dat

chgrpコマンド

ファイルが存在しないメッセージが表示された。

今度は、-fオプションを使用してみよう。

存在しないファイル名config12.datの所有ユーザーをグループWaterへ変更した時に、エラーメッセージを表示しないコマンドは次の通りだ。

$ chgrp -f Water config12.dat

chgrpコマンド

今度はメッセージが表示されない。

すべてのエラーメッセージが表示されなくなるのではなく、指定したグループが存在しない時はエラーメッセ―ジを表示する。

$ chgrp -f Sky config.dat

chgrpコマンド

グループSkyは存在しないため、メッセージが表示された。

-hオプション(--no-dereferenceオプション):シンボリックリンク自体のグループを変更する

chgrpコマンドを使ってシンボリックリンクを変更すると、シンボリックリンク先を変更することになり、シンボリックリンク自体を変更しない。

そこで-hオプションを指定することで、シンボリック自体を変更できる。

書式は次のとおりだ。

$ chgrp -h グループ名 ファイル名またはディレクトリ名

現在のカレントディレクトリ配下のディレクトリ構造をlsコマンドの-l、-Rオプションで確認してみよう。

$ ls -lR

chgrpコマンド

シンボリックリンクに注目してみよう。

カレントディレクトリのslinkはphp/hello.phpへのシンボリックリンクになっている。

slinkの所有グループはroot、php/hello.phpの所有グループもrootだ。

オプションなしで、slinkのグループをWaterへ変更してみよう。

$ chgrp Water slink

chgrpコマンド

lsコマンドの-l、-Rオプションで再度確認してみよう。

$ ls -lR

chgrpコマンド

slinkのグループはrootのままで、シンボリックリンク先のphp/hello.phpのグループがWaterへ変更されている。

オプションなしでは、シンボリックリンク自体のグループは変更しない。

では、次に、-hオプションを使ってみよう。

$ chgrp -h Water slink

chgrpコマンド

lsコマンドの-l、-Rオプションで再度確認してみよう。

$ ls -lR

chgrpコマンド

slinkのグループがWaterへ変更されている。

-Rオプション(--recursiveオプション):ディレクトリ内のグループも変更する

一度に複数のファイルやディレクトリを変更したい場合もあるだろう。

その場合、*などのワイルドカードを使って名前の一部を指定する場合がある。

オプションの指定がなければ、ディレクトリ内部のグループは変更せず、カレントディレクトリのみが対象となる。

そこで-Rオプションを指定することで、カレントディレクトリ配下のファイルやディレクトリのグループを変更できる。

書式は次のとおりだ。

$ chgrp -R グループ名 ディレクトリ名

カレントディレクトリ配下のファイルやディレクトリのグループをすべてWoodに変更するには次のコマンドだ。

$ chgrp -R Wood ./

chgrpコマンド

lsコマンドの-l、-Rオプションで再度確認してみよう。

$ ls -lR

chgrpコマンド

カレントディレクトリ配下のファイル、ディレクトリすべてがWoodグループへ変更されている。

シンボリックリンク先がシンボリックリンクだった場合

-hオプションではシンボリックリンク自体のグループを変更できた。

オプションなしの場合では、シンボリック先を辿ったもののグループを変更している。

オプションなしの場合でのシンボリックリンク先がさらにシンボリックリンクだった場合は、どうなるだろうか。

確認してみよう。

現在、カレントディレクトリ内のmain_targetはphp/targetへのシンボリックリンクだ。

さらにphp/targetはphp/include/target.incへのシンボリックリンクだ。

main_targetのグループをFireグループに変更する操作を行った場合、どこまでが変更範囲なのかを調べてみよう。

$ chgrp Fire main_target

chgrpコマンド

lsコマンドの-l、-Rオプションでどう変更されたか確認してみよう。

$ ls -lR

chgrpコマンド

main_targetから辿ることができる最終的なphp/include/target.incのみが所有グループFireに変更になった。

シンボリックリンク先がシンボリックリンクだった場合、オプションなしでは最終的なリンク先のグループのみ変更する。

chgrp関連コマンド

最後にchgrpコマンドに関連して、基本的なグループ関連、及びアクセス権限関連のコマンドも紹介しておく

groupaddコマンド

グループを追加する。

groupmodコマンド

グループの設定を変更する。

groupdelコマンド

グループを削除する。

useraddコマンド

ユーザーを追加する。

usermodコマンド

ユーザーの設定を変更する。

userdelコマンド

ユーザーを削除する。

chownコマンド

ディレクトリやファイルの所有者を変更する。

chmodコマンド

ディレクトリやファイルのアクセス権を変更する。

まとめ

今回は、chgrpコマンドを使ったファイルのグループ設定の方法を解説した。

Linuxファイルサーバー管理者は必須の知識だ。

ぜひ覚えてスキルアップに役立てて欲しい。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメント

コメントを残す

*