chgrpはファイルやディレクトリの管理グループを変更するLinuxコマンドだ。
このページではchgrpを使ったファイルやディレクトリの管理グループの変更方法を解説する。
ぜひ、この機会に覚えておいてほしい。
chgrpコマンドの基本
コマンドの基本動作
Linuxのグループについて全体像を知りたい方は下記のページを先に確認してほしい。
chgrpコマンドは管理者ユーザー権限で行わないと、権限なしで操作できない場合がある。chgrpコマンドは管理者権限のアカウントで操作しよう。
使い方は、次のとおりだ。
$ chgrp グループ名 ファイル名またはディレクトリ名
まず、ファイルconfig.datのグループをlsコマンドの-lオプションで確認してみよう。
$ ls -l config.dat
config.datの所有ユーザーはvagrant、グループもWaterだ。
config.datの所有ユーザーをFireへ変更する場合は、次のコマンドだ。
$ chgrp Fire config.dat
config.datの所有ユーザーがFireへ変更された。
config.datの所有ユーザーを再度lsコマンドの-lオプションで確認してみよう。
$ ls -l config.dat
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
config.datの所有ユーザーはvagrant、グループはFireだ。
config.datの所有ユーザーを-cオプションを使ってわざとFireへ変更するような操作をしてみよう。
$ chgrp -c Fire config.dat
特にメッセージは表示されない。現在と同じグループ名を指定したからだ。
今度は、Woodグループへ変更してみよう。
config.datの所有ユーザーをWoodへ変更した時に変更のメッセージを表示するコマンドは次の通りだ。
$ chgrp -c Wood config.dat
今度はグループがFireからWoodに変更になったので、変更のメッセージが表示された。
-vオプション(--verboseオプション):コマンドの実行状況を表示する
-cオプションでは変更があったときのみ、結果を表示した。
-vコマンドは、どんな場合でも実行状況を表示するコマンドで、書式は次のとおりだ。
$ chgrp -v グループ名 ファイル名またはディレクトリ名
現在のファイルconfig.datのグループをlsコマンドの-lオプションで確認してみよう。
$ ls -l config.dat
config.datの所有ユーザーはvagrant、グループはWoodだ。
config.datの所有ユーザーを-vオプションを使ってわざとWoodへ変更するような操作をしてみよう。
$ chgrp -v Wood config.dat
変更がなかったため、処理が保留されたメッセージが表示された。
今度は、Waterグループへ変更してみよう。
config.datの所有ユーザーをWaterグループへ変更した時に、結果にかかわらずメッセージを表示するコマンドは次の通りだ。
$ chgrp -v Water config.dat
今度はグループがWoodからWaterに変更になったメッセージが表示された。
-fオプション(--silentオプション,--quietオプション):エラーメッセージを表示しない
ほとんどの場合、エラーメッセージを表示しないコマンドで、書式は次のとおりだ。
$ chgrp -f グループ名 ファイル名またはディレクトリ名
わざと存在しないファイル名config12.datの所有ユーザーを-vオプションを使わないでグループWaterへ変更するような操作をしてみよう。
$ chgrp Water config12.dat
ファイルが存在しないメッセージが表示された。
今度は、-fオプションを使用してみよう。
存在しないファイル名config12.datの所有ユーザーをグループWaterへ変更した時に、エラーメッセージを表示しないコマンドは次の通りだ。
$ chgrp -f Water config12.dat
今度はメッセージが表示されない。
すべてのエラーメッセージが表示されなくなるのではなく、指定したグループが存在しない時はエラーメッセ―ジを表示する。
$ chgrp -f Sky config.dat
グループSkyは存在しないため、メッセージが表示された。
-hオプション(--no-dereferenceオプション):シンボリックリンク自体のグループを変更する
chgrpコマンドを使ってシンボリックリンクを変更すると、シンボリックリンク先を変更することになり、シンボリックリンク自体を変更しない。
そこで-hオプションを指定することで、シンボリック自体を変更できる。
書式は次のとおりだ。
$ chgrp -h グループ名 ファイル名またはディレクトリ名
現在のカレントディレクトリ配下のディレクトリ構造をlsコマンドの-l、-Rオプションで確認してみよう。
$ ls -lR
シンボリックリンクに注目してみよう。
カレントディレクトリのslinkはphp/hello.phpへのシンボリックリンクになっている。
slinkの所有グループはroot、php/hello.phpの所有グループもrootだ。
オプションなしで、slinkのグループをWaterへ変更してみよう。
$ chgrp Water slink
lsコマンドの-l、-Rオプションで再度確認してみよう。
$ ls -lR
slinkのグループはrootのままで、シンボリックリンク先のphp/hello.phpのグループがWaterへ変更されている。
オプションなしでは、シンボリックリンク自体のグループは変更しない。
では、次に、-hオプションを使ってみよう。
$ chgrp -h Water slink
lsコマンドの-l、-Rオプションで再度確認してみよう。
$ ls -lR
slinkのグループがWaterへ変更されている。
-Rオプション(--recursiveオプション):ディレクトリ内のグループも変更する
一度に複数のファイルやディレクトリを変更したい場合もあるだろう。
その場合、*などのワイルドカードを使って名前の一部を指定する場合がある。
オプションの指定がなければ、ディレクトリ内部のグループは変更せず、カレントディレクトリのみが対象となる。
そこで-Rオプションを指定することで、カレントディレクトリ配下のファイルやディレクトリのグループを変更できる。
書式は次のとおりだ。
$ chgrp -R グループ名 ディレクトリ名
カレントディレクトリ配下のファイルやディレクトリのグループをすべてWoodに変更するには次のコマンドだ。
$ chgrp -R Wood ./
lsコマンドの-l、-Rオプションで再度確認してみよう。
$ ls -lR
カレントディレクトリ配下のファイル、ディレクトリすべてがWoodグループへ変更されている。
シンボリックリンク先がシンボリックリンクだった場合
-hオプションではシンボリックリンク自体のグループを変更できた。
オプションなしの場合では、シンボリック先を辿ったもののグループを変更している。
オプションなしの場合でのシンボリックリンク先がさらにシンボリックリンクだった場合は、どうなるだろうか。
確認してみよう。
現在、カレントディレクトリ内のmain_targetはphp/targetへのシンボリックリンクだ。
さらにphp/targetはphp/include/target.incへのシンボリックリンクだ。
main_targetのグループをFireグループに変更する操作を行った場合、どこまでが変更範囲なのかを調べてみよう。
$ chgrp Fire main_target
lsコマンドの-l、-Rオプションでどう変更されたか確認してみよう。
$ ls -lR
main_targetから辿ることができる最終的なphp/include/target.incのみが所有グループFireに変更になった。
シンボリックリンク先がシンボリックリンクだった場合、オプションなしでは最終的なリンク先のグループのみ変更する。
chgrp関連コマンド
最後にchgrpコマンドに関連して、基本的なグループ関連、及びアクセス権限関連のコマンドも紹介しておく
groupaddコマンド
グループを追加する。
groupmodコマンド
グループの設定を変更する。
groupdelコマンド
グループを削除する。
useraddコマンド
ユーザーを追加する。
usermodコマンド
ユーザーの設定を変更する。
userdelコマンド
ユーザーを削除する。
chownコマンド
ディレクトリやファイルの所有者を変更する。
chmodコマンド
ディレクトリやファイルのアクセス権を変更する。
まとめ
今回は、chgrpコマンドを使ったファイルのグループ設定の方法を解説した。
Linuxファイルサーバー管理者は必須の知識だ。
ぜひ覚えてスキルアップに役立てて欲しい。
コメント