IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

はじめてのLinux

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第13回 Linuxのファイル操作に慣れよう ファイルやディレクトリのオーナー・グループを設定しよう (濱田康貴) 2023年4月

みなさんこんにちは。株式会社パイプラインの濱田です。前回はファイルやディレクトリのパーミッション変更コマンド chmod コマンドの実例を取り上げました。今回は、ファイルやディレクトリのオーナーやグループを変更する chown コマンドについて、実例を交えながら解説します。

オーナー・グループ変更の大前提

ファイルやディレクトリのオーナーやグループを変更するコマンドは「chown」コマンドです。似たようなコマンドに、ファイルやディレクトリのグループを変更する「chgrp」コマンドもありますが、ほとんどのケースにおいて chown コマンドで用が足りるので、今回は chown コマンドで操作する手順を取り上げます。また、 chown コマンドはrootユーザーで実行もしくは一般ユーザーのシェルからは sudo をつけて実行します。

ファイルのオーナーを変更してみよう

今回の実習は、Ubuntu 22.04.2 LTS (Jammy Jellyfish)にNginxをaptコマンドでインストールした環境を想定しています。
単一のファイルに対して、オーナーを以下のように変更します。

変更対象ファイル /var/www/html/index.nginx-debian.html
オーナー (変更前) root
オーナー (変更後) www-data

まずは事前にlsコマンドでファイルのオーナーを確認します。


ls -l /var/www/html/index.nginx-debian.html

それでは、以下のコマンドでファイルのオーナーを変更してみましょう。


sudo chown www-data /var/www/html/index.nginx-debian.html

再度、ファイルのオーナーを以下のコマンドで確認します。


ls -l /var/www/html/index.nginx-debian.html

chownコマンド実行前後で、ファイルのオーナーが変わったことがおわかりいただけたかと思います。次の実例のために、以下のコマンドでファイルのオーナーを元のrootへ戻しておきます。


sudo chown root /var/www/html/index.nginx-debian.html

次に、ファイルのオーナーとグループを以下のように変更します。

変更対象ファイル /var/www/html/index.nginx-debian.html
オーナー (変更前) root
オーナー (変更後) www-data
グループ (変更前) root
グループ (変更後) Nullpopopo

まずは以下のコマンドで事前確認です。


ls -l /var/www/html/index.nginx-debian.html

chownコマンドでオーナーとグループを一撃で変更するには、「chown <ユーザー名>:<グループ名> <ファイル名>」の構文で実行します。今回の例ですと、以下のように実行します。


sudo chown www-data:nullpopopo /var/www/html/index.nginx-debian.html

それでは以下のコマンドで事後確認してみましょう。


ls -l /var/www/html/index.nginx-debian.html

次の実例のために、以下のコマンドで再度もとのオーナーに戻しておきます。


sudo chown root:root /var/www/html/index.nginx-debian.html

また、上記構文は以下のコマンドでも代用可能です。


sudo chown root. /var/www/html/index.nginx-debian.html

ユーザー名に続けて(スペースを開けずに)ドットをつけることで、グループ名を省略しながらもそのユーザーのログイングループへ変更することができます。
chownコマンドは、ファイルだけではなくディレクトリに対しても実行することができます。先ほど操作したファイル /var/www/html/index.nginx-debian.html を格納しているディレクトリ /var/www/html に対して、以下の内容で実行します。

変更対象ディレクトリ /var/www/html
オーナー (変更前) root
オーナー (変更後) www-data
グループ (変更前) root
グループ (変更後) nullpopopo

まずは以下のコマンドで事前確認です。


ls -l /var/www/ | grep -E html$

それでは以下のコマンドを実行してみましょう。


sudo chown www-data:nullpopopo /var/www/html

実行後の確認を以下のコマンドで行います。


ls -l /var/www/ | grep -E html$

また、ディレクトリ /var/www/html 配下にあるファイル /var/www/html/index.nginx-debian.html のオーナーも以下のコマンドで確認してみましょう。


ls -l /var/www/html/index.nginx-debian.html

次の実例のために、以下のコマンドで元のオーナーへ戻しておきます。


sudo chown root. /var/www/html
応用編 - あるディレクトリ以下のファイルやディレクトリのオーナー・グループを再帰的に変更する

先ほどの例示では、単一のファイルやディレクトリに対してオーナーやグループの変更を行いました。しかし、あるディレクトリ内にファイルが複数ある場合、1つひとつにchownコマンドを実行せずとも、対象のディレクトリ以下に対して一撃で(再帰的に)オーナー・グループを変更することができます。
まずは以下のコマンドで事前確認です。


ls -l /var/www/html/index.nginx-debian.html
ls -l /var/www/ | grep -E html$

それでは以下内容で変更します。

変更対象ディレクトリ /var/www/html 以下ファイルすべて
オーナー (変更前) root
オーナー (変更後) www-data
グループ (変更前) root
グループ (変更後) nullpopopo

以下のようにコマンドを実行します。


sudo chown -R www-data:nullpopopo /var/www/html

以下のコマンドで事後確認してみましょう。


ls -l /var/www/html/index.nginx-debian.html
ls -l /var/www/ | grep -E html$

/var/www/html ディレクトリも、その配下にある index.nginx-debian.html ファイル、どちらもオーナー・グループともに変更されたことがおわかりいただけたかと思います。
さて、前回のchmodコマンドでも少し触れましたが、chmodコマンドにも、chownコマンドにも「-R」オプションが存在し、どちらのコマンドも再帰的に下位ディレクトリやファイルに対してコマンドの効力が及びます。以下のケースでどのようなコマンドを実行すべきか、考察してみましょう。

WEBサーバーの実行ユーザー(www-data)と、特定のグループ (nullpopopo) にドキュメントルート(/var/www/html)の読み書き権限を与える

まず、chmodコマンドを実行します。


sudo chmod -R ug+rw /var/www/html

次に、chownコマンドを実行します。


sudo chown -R www-data:nullpopopo /var/www/html

この2コマンドにより、WEBのプログラムおよびnullpopopoユーザーがドキュメントルート配下のファイルに対して読み書きを行うことができたので、要件を満たすことができました。
これまで、ファイル管理について取り上げましたが、Linuxサーバー管理はファイル管理以外にも重要な仕事はまだまだあります。次回はプロセス管理について取り上げてみたいと思います。
CTC教育サービスではLinuxをはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。

https://www.school.ctc-g.co.jp/category/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes