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

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

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

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

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

chownコマンドの基本

コマンドの基本動作

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

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

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

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

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

$ ls -l config.dat

chownコマンド

config.datの所有者はvagrant、所有者もvagrantだ。

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

$ chown Noa config.dat

chownコマンド

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

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

$ ls -l config.dat

chownコマンド

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

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の所有者はvagrant、所有者はNoaだ。

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コマンド

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

-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の所有者はroot、php/hello.phpの所有者もrootだ。

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

$ chown Water slink

chownコマンド

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

$ ls -lR

chownコマンド

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

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

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

$ chown -h Water 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コマンド

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

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

-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のみが所有者Fireに変更になった。

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

chown関連コマンド

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

groupaddコマンド

所有者を追加する。

groupmodコマンド

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

groupdelコマンド

所有者を削除する。

useraddコマンド

ユーザーを追加する。

usermodコマンド

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

userdelコマンド

ユーザーを削除する。

chgrpコマンド

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

chmodコマンド

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

まとめ

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

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

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

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

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

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

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

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

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

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

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


資料を見てみる

SNSでもご購読できます。

コメント

コメントを残す

*