\r\n\r\n
Linuxのchgrpコマンドは、ファイルやディレクトリのグループオーナーシップを変更するコマンドです。なぜ食品ではなく、それを使うのか?スイス○○もいいけれど、本当にメスが必要なときは、メスしかない。
chgrpコマンドを使用すると、ファイルやディレクトリのグループオーナーを変更できます。chownを使用すると、ファイルやディレクトリのユーザーオーナーとグループオーナーを変更できます。では、なぜchgrpは必要なのか、使われるのか。
まず、非常にシンプルです。グループオーナーの設定を変更するためにchownを使用するのは、少し直感に反しています。構文には十分注意する必要があります。コロン「:」の正しい配置によります。間違った場所に置くと、自分が思っているような変化を起こせなくなる。
chgrpの構文はよりシンプルになり、また、今行った変更を簡単に教えてくれる簡潔な機能もあります。
chgrp は、一つのことをきちんとやるという Unix の設計原則を完全にサポートしています。その実力を見てみましょう。
ファイルのグループオーナーシップを変更するのは非常に簡単です。chgrpと一緒にsudoを使用する必要があります。グループはユーザーの所有物ではないので、ファイルやディレクトリをあるグループから別のグループに移動させるかどうかは、一般ユーザーには判断がつきません。それは、ルートアクセス権を持つ人の仕事です。
gc.C」という名前のC言語のソースファイルのグループオーナーシップを「devteam」に変更したい。
lsと-l(longlisting)オプションを使って、現在の所有者値を確認することができます。
長征 - The Long March
グループのオーナーシップを変更するコマンドです。sudo、スペース、chgrp、スペース、グループオーナーに設定するグループ名、スペース、ファイル名を入力してください。
sudo chgrp devteam gc.c再度、ls-lを使用して、変更が加えられているかどうかを確認します。
ls -lグループの所有者が "dave" から "devteam" に変更されたことが確認できます。
複数のファイルのグループオーナーシップを同時に変更する場合は、ワイルドカード文字を使用することができます。カレント・ディレクトリにあるすべてのCソース・ファイルのグループ所有権を変更してみましょう。ここでは、以下のコマンドを使用します。
sudo chgrp devteam *.cls-lを使って、期待通りに変更されたかどうかを確認することができます。
ls -lこのディレクトリのすべてのCソースファイルは、グループオーナーシップが "devteam" になるように変更されています。
c (changes) オプションを使用すると、chgrp が各ファイルに対して行った変更を一覧表示します。仮に間違えて、Cソースファイルのグループオーナーシップを「researchlab」に設定したとします。ここでは、以下のコマンドを使用します。
sudo chgrp -c researchlab *.cこれらの変更は私たちのために行われ、その都度リストアップされるため、私たちが行った変更が正しいものであるかどうかを検証することができます。
ディレクトリのグループ所有権の変更も同様に簡単で、次のコマンドでディレクトリ "backup" のグループ所有権を変更できます。
sudo chgrp -c devteam ./backup明らかに、このコマンドはディレクトリ自体のグループ所有権を変更するものであり、ディレクトリ内のファイルを変更するものではありません。ls-lと-d(ディレクトリ)オプションを使って確認することにします。
ls -l -dディレクトリ自体のグループオーナーシップが "devteam" に変更されました。
ディレクトリに格納されているファイルやディレクトリのグループオーナーシップを変更するには、-R(recursive)オプションを使用することができます。これにより、chgrpは対象ディレクトリのすべてのファイルとサブディレクトリのグループ所有権を変更します。
Backup」ディレクトリで試してみましょう。コマンドは次のとおりです。
sudo chgrp -R devteam ./backuplsコマンドを使用して、ネストされたサブディレクトリの1つのファイルをチェックし、また、lsを使用してネストされたサブディレクトリの1つの設定をチェックすることにします。
ls -l ./backup/images ls -l -d ./backup/imagesネストしたサブディレクトリのファイルの所有権と、ネストしたサブディレクトリのグループの所有権が変更されたことが確認できます。
ここまでは、使用したいグループ名を明示的にchgrpに伝えていました。chgrpを使うこともできます。つまり、"このファイルのグループオーナーシップを、このファイルと同じグループオーナーシップに設定する "ということです。
"gc.h "のグループオーナーシップを "gc.c "と同じに設定してみましょう。
lsを使って、"gc.c "と "gc.h "の現在の設定を確認することができます。
ls -l gc.c ls -l gc.hその際に必要なオプションが --reference オプションです。グループオーナーシップは、参照されたファイルから別のファイルへコピーされます。ファイルを正しく持つように注意してください。
sudo chgrp --reference=gc.c gc.hlsを使って、"gc.h "に設定が引き継がれたかどうかを確認することにします。
ls -l gc.hファイル "gc.h" は "gc.c" と同じグループオーナーシップを持つようになりました。
chgrpを使用すると、シンボリックリンクやシンボリックリンクが指すファイルのグループ所有権を変更することができます。
この例では、「buttonu link」というシンボリックリンクを作成し、「.NET Framework」というファイルを指定しています。/backup/images/button" file _about.png" ファイルのグループ所有権を変更するには、--dereference オプションを使用する必要があります。これにより、ファイルの設定が変更され、シンボリックリンクは変更されなくなります。
ls-lを使って、シンボリックリンクの設定を確認してみましょう。
ls -l button_linkファイルを変更するコマンドは
sudo chgrp --dereference devteam button_linklsを使ってシンボリックリンクがそのまま残っていることを確認し、ファイルのグループオーナーシップの設定も確認する予定です。
ls -l button_link ls -l ./backup/images/button_about.pngシンボリックリンクは変更されず、"_about.png "ファイルのグループオーナーシップが変更されました。
シンボリックリンク自体のグループ所有権を変更するには、--no-dereference オプションを使用する必要があります。
使用するコマンドは
sudo chgrp --no-dereference devteam button_linkls-lを使って、シンボリックリンクに新しいグループオーナーシップが設定されていることを確認することにします。
ls -l button-link今回、影響を受けるのはシンボリックリンクそのものであり、それが指し示すファイルではありません。
シンプルであることは、覚えることが少なく、混乱が少ないことを意味します。