chownコマンドについてまとめました 【Linuxコマンド集】

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

chownはファイルやディレクトリの所有者を変更するコマンドだ。

このページではchownを使ったファイルやディレクトリの所有者の変更方法を解説する。

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

chownコマンドの基本

コマンドの基本動作

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

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

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

$ chown 所有者名 ファイル名またはディレクトリ名

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

$ ls -l config.dat

chownコマンド

config.datの所有者も所有グループもvagrantだ。

config.datの所有者をNoaへ変更する場合は、次のコマンドだ。

$ chown Noa config.dat

chownコマンド

config.datの所有者がNoaへ変更された。

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

$ ls -l config.dat

chownコマンド

config.datの所有者がNoaへ変更されている。

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

コマンドの一覧

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

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

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

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

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

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

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

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

シンボリックリンク自体の所有者を変更する

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

ディレクトリ内の所有者も変更する

では詳細を見ていこう。

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

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

$ chown -c 所有者名 ファイル名またはディレクトリ名

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

$ ls -l config.dat

chownコマンド

config.datの所有者はNoa、所有グループはvagrantだ。

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

$ chown -c Noa config.dat

chownコマンド

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

今度は、Wood所有者へ変更してみよう。

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

$ chown -c Fujiya config.dat

chownコマンド

今度は所有者がNoaからFujiyaに変更になったので、変更のメッセージが表示された。

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

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

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

$ chown -v 所有者名 ファイル名またはディレクトリ名

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

$ ls -l config.dat

chownコマンド

config.datの所有者はFujiya、所有グループはvagrantだ。

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

$ chown -v Fujiya config.dat

chownコマンド

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

今度は、所有者Shihoへ変更してみよう。

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

$ chown -v Shiho config.dat

chownコマンド

今度は所有者がFujiyaからShihoに変更になったメッセージが表示された。

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

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

$ chown -f 所有者名 ファイル名またはディレクトリ名

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

$ chown Lime config12.dat

chownコマンド

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

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

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

$ chown -f Lime config12.dat

chownコマンド

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

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

$ chown -f Dany config.dat

chownコマンド

ユーザーDanyは存在しないため、メッセージが表示された。

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

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

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

書式は次のとおりだ。

$ chown -h 所有者名 ファイル名またはディレクトリ名

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

$ ls -lR

chownコマンド

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

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

slinkの所有者も、php/hello.phpの所有者もvagrantだ。

オプションなしで、slinkの所有者をLimeへ変更してみよう。

$ chown Lime slink

chownコマンド

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

$ ls -lR

chownコマンド

slinkの所有者はvagrantのままで、シンボリックリンク先のphp/hello.phpの所有者がLimeへ変更されている。

オプションなしでは、シンボリックリンク自体の所有者は変更しない。

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

$ chown -h Lime slink

chownコマンド

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

$ ls -lR

chownコマンド

slinkの所有者がLimeへ変更されている。

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

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

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

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

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

書式は次のとおりだ。

$ chown -R 所有者名 ディレクトリ名

カレントディレクトリ配下のファイルやディレクトリの所有者をすべてFujiyaに変更するには次のコマンドだ。

$ chown -R Fujiya ./

chownコマンド

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

$ ls -lR

chownコマンド

カレントディレクトリ配下のファイル、ディレクトリすべてがFujiya所有者へ変更されている。

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

-hオプションではシンボリックリンク自体の所有者を変更できた。

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

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

確認してみよう。

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

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

main_targetの所有者をNoaに変更する操作を行った場合、どこまでが変更範囲なのかを調べてみよう。

$ chown Noa main_target

chownコマンド

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

$ ls -lR

chownコマンド

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

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

chown関連コマンド

最後にchownコマンドに関連して、基本的な所有者関連、及びアクセス権限関連のコマンドも紹介しておく

groupaddコマンド

所有者を追加する。

groupmodコマンド

所有者の設定を変更する。

groupdelコマンド

所有者を削除する。

useraddコマンド

ユーザーを追加する。

usermodコマンド

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

userdelコマンド

ユーザーを削除する。

chgrpコマンド

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

chmodコマンド

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

まとめ

今回は、chownコマンドを使ったファイルの所有者の設定の方法を解説した。

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

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

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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. misoshiru より:

    この記事全体を通してファイル所有者の名前が画像と文章とで違う箇所が多数あると思います。
    加えて、「ls -l」の出力結果の話で、「config.datの所有者はvagrant、所有者もvagrantだ。」と書いている部分はファイルオーナーとグループのことを言っているのであれば文言を変えた方がいいのではないかと思います。

    1. リカレントテクノロジー より:

      ご指摘いただきありがとうございます。
      所有者なのか所有グループなのかわかりづらい記述でしたので、
      該当箇所を修正いたしました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

misoshiru へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する