\r\n\r\n

linuxでのchgrpコマンドの使い方

linuxのchgrpコマンドは、ファイルやディレクトリのグループオーナーシップを変更するコマンドです。なぜ食品ではなく、それを使うのか?時にはスイスアーミーナイフもいいけれど、本当にメスが必要な時はメスしかない...。

Linuxのchgrpコマンドは、ファイルやディレクトリのグループオーナーシップを変更するコマンドです。なぜ食品ではなく、それを使うのか?スイス○○もいいけれど、本当にメスが必要なときは、メスしかない。

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 *.c

ls-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 ./backup

lsコマンドを使用して、ネストされたサブディレクトリの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.h

lsを使って、"gc.h "に設定が引き継がれたかどうかを確認することにします。

ls -l gc.h

ファイル "gc.h" は "gc.c" と同じグループオーナーシップを持つようになりました。

シンボリックリンクでchgrpを使用する

chgrpを使用すると、シンボリックリンクやシンボリックリンクが指すファイルのグループ所有権を変更することができます。

この例では、「buttonu link」というシンボリックリンクを作成し、「.NET Framework」というファイルを指定しています。/backup/images/button" file _about.png" ファイルのグループ所有権を変更するには、--dereference オプションを使用する必要があります。これにより、ファイルの設定が変更され、シンボリックリンクは変更されなくなります。

ls-lを使って、シンボリックリンクの設定を確認してみましょう。

ls -l button_link

ファイルを変更するコマンドは

sudo chgrp --dereference devteam button_link

lsを使ってシンボリックリンクがそのまま残っていることを確認し、ファイルのグループオーナーシップの設定も確認する予定です。

ls -l button_link ls -l ./backup/images/button_about.png

シンボリックリンクは変更されず、"_about.png "ファイルのグループオーナーシップが変更されました。

シンボリックリンク自体のグループ所有権を変更するには、--no-dereference オプションを使用する必要があります。

使用するコマンドは

sudo chgrp --no-dereference devteam button_link

ls-lを使って、シンボリックリンクに新しいグループオーナーシップが設定されていることを確認することにします。

ls -l button-link

今回、影響を受けるのはシンボリックリンクそのものであり、それが指し示すファイルではありません。

いい加減にしてください

シンプルであることは、覚えることが少なく、混乱が少ないことを意味します。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ