CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさんこんにちは。株式会社パイプラインの濱田です。前回はファイルやディレクトリのパーミッション変更コマンド 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」オプションが存在し、どちらのコマンドも再帰的に下位ディレクトリやファイルに対してコマンドの効力が及びます。以下のケースでどのようなコマンドを実行すべきか、考察してみましょう。
まず、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