chown・chgrpコマンドとは?ファイルの所有者・グループを変更する方法を解説

  • URLをコピーしました!

前の記事では、Linuxで複数のユーザをまとめて管理する グループについて学習しました。

しかし、ユーザやグループを作成しただけでは、 ファイルに対する権限は自動的に変わりません。

Linuxではファイルやディレクトリごとに、 「誰が所有しているのか」「どのグループが所有しているのか」 という情報が設定されています。

ファイルの所有者はどこで確認する?
chownとchgrpは何が違う?
ディレクトリ内をまとめて変更するには?

今回は、 chown・chgrpコマンドを使って、 ファイルやディレクトリの所有者・所有グループを変更する方法を学習します。

🐧 LINUX INTERMEDIATE

この記事はLinux中級講座の一部です。 Linuxサーバ管理に必要なユーザ・グループ・権限管理を 順番に学習していきます。

Linux中級講座を見る →
LESSON GOAL この記事のゴール

Linuxファイルの所有者(owner)・所有グループ(group) の仕組みを理解し、 chownchgrpを使って 適切に変更できる状態を目指します。

目次

Linuxのファイルには「所有者」と「所有グループ」がある

Linuxでは、ファイルやディレクトリに 次の2つの情報が設定されています。

OWNER 所有者

そのファイルを所有するユーザ

GROUP 所有グループ

そのファイルに設定されているグループ

たとえば、次のファイルがあるとします。

FILE /var/www/html/index.html

OWNER root

GROUP root

この場合、 ファイルの所有者はroot所有グループもrootです。

所有者・所有グループはls -lで確認できる

ファイルの所有者や所有グループを確認するときは、 ls -lを利用します。

ls -l index.html
Linux Terminal
$ ls -l index.html
-rw-r----- 1 root webadmin 1240 Aug 18 10:30 index.html

この表示には多くの情報がありますが、 今回注目するのは次の部分です。

PERMISSION -rw-r—– アクセス権
OWNER root 所有者
GROUP webadmin 所有グループ
FILE index.html ファイル名

つまり、

root webadmin

所有者 : 所有グループ

と読み取ることができます。

所有者・所有グループとパーミッションの関係

Linux初級で学習した rwxのパーミッションは、 所有者・所有グループと密接に関係しています。

OWNER rw- root
GROUP r– webadmin
OTHERS その他

たとえば、

-rw-r----- root webadmin index.html

というファイルであれば、

root 読み取り・書き込み可能
webadmin所属ユーザ 読み取り可能
その他のユーザ 権限なし

という意味になります。

chmodだけ理解しても権限管理は完成しない

chmodは「どんな操作を許可するか」を設定します。 一方、chownchgrpは 「その権限を誰に適用するか」に関係します。

chownとは?ファイルの所有者を変更する

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

chownは change ownerと覚えると分かりやすいでしょう。

chown ユーザ名 ファイル名

たとえば、 index.htmlの所有者を rootからtanakaへ変更する場合は、

sudo chown tanaka index.html

とします。

BEFORE root : webadmin
AFTER tanaka : webadmin

ここでは所有者だけが変更され、 所有グループのwebadminは変わりません。

chgrpとは?所有グループを変更する

chgrpは、 ファイルやディレクトリの 所有グループを変更するコマンドです。

chgrpは change groupと覚えると理解しやすくなります。

chgrp グループ名 ファイル名

たとえば、 index.htmlの所有グループを rootからwebadminへ変更する場合は、

sudo chgrp webadmin index.html
BEFORE root : root
AFTER root : webadmin

今度は所有者rootはそのままで、 所有グループだけがwebadminへ変更されます。

chownでは所有者と所有グループを同時に変更できる

実はchownでは、 所有者だけでなく 所有者と所有グループを同時に変更できます。

基本形は次のとおりです。

chown ユーザ名:グループ名 ファイル名

たとえば、

sudo chown tanaka:webadmin index.html

を実行すると、

BEFORE root : root
AFTER tanaka : webadmin

というように、 所有者と所有グループを一度に変更できます。

実務では「ユーザ:グループ」の形をよく使う

chown tanaka:webadmin file のように指定すると、 所有者と所有グループをまとめて設定できます。

chownとchgrpの違いを整理しよう

CHOWN 所有者を変更 chown tanaka file

所有者を変更する。 所有者+所有グループを 同時に変更することも可能。

CHGRP 所有グループを変更 chgrp webadmin file

所有グループだけを 変更したい場合に利用する。

chown tanaka file 所有者 → tanaka
chgrp webadmin file 所有グループ → webadmin
chown tanaka:webadmin file 所有者 → tanaka / 所有グループ → webadmin

-Rオプションでディレクトリ内をまとめて変更する

実際のLinuxサーバでは、 1つのファイルだけでなく ディレクトリ内に大量のファイルが存在する ことがあります。

その場合に利用できるのが、 -R(recursive)オプションです。

sudo chown -R tanaka:webadmin /var/www/html

このコマンドを実行すると、 /var/www/htmlと その配下にあるファイル・ディレクトリへ 再帰的に変更が適用されます。

/var/www/html
├── index.html
├── css
│   └── style.css
└── images
    └── logo.png
↓ chown -R tanaka:webadmin
/var/www/html       tanaka:webadmin
├── index.html      tanaka:webadmin
├── css             tanaka:webadmin
│   └── style.css   tanaka:webadmin
└── images          tanaka:webadmin
    └── logo.png    tanaka:webadmin
CAUTION -Rは影響範囲が大きい

指定したディレクトリ以下へまとめて適用されるため、 実際のサーバで利用するときは 対象パスを十分に確認してから実行しましょう。

実際のサーバではどんな場面で使う?

たとえば、 Webサーバ上に次のディレクトリがあるとします。

WEB CONTENT /var/www/html

OWNER root

GROUP root

一方、Webサイトを管理する tanakaとsatoは、前の記事で作成した webadminグループに所属しているとします。

USER tanaka
USER sato
GROUP webadmin

この場合、 Webコンテンツの所有グループを webadminへ変更することで、 グループ単位の権限管理がしやすくなります。

sudo chgrp -R webadmin /var/www/html

さらに適切なパーミッションを設定すれば、 webadminグループに所属するユーザへ 必要な操作権限を与えられます。

ユーザ・グループ・所有権・パーミッションはセットで考える

「誰をグループに所属させるか」 「ファイルをどのグループの所有にするか」 「そのグループに何の操作を許可するか」 を組み合わせることで、Linuxのアクセス権を管理します。

ここまでの権限管理を一本につなげてみよう

Linux初級から学習してきた内容を整理すると、 次のようにつながります。

01 USER tanaka
02 GROUP webadmin
03 OWNER / GROUP chown・chgrp
04 PERMISSION chmod

つまり、Linuxのファイルアクセスは単純に 「chmod 755にする」といった数字だけで決まるわけではありません。

誰が × どのグループに所属し × 誰がファイルを所有し × どんな権限が設定されているか

これらを組み合わせて考えることが重要です。

ここで実際に試してみよう:chown・chgrpシミュレーター

ここまで学習した内容を、 疑似Linuxターミナルで実際に操作してみましょう。

今回は ls -l → chown → chgrp → chown user:group の流れを試せます。

INTERACTIVE LAB

Linux Ownership Practice

FILE OWNERSHIP
FILE index.html
OWNER root
GROUP root
PERMISSION rw-r—–
infrauser@linux
Linux ownership practice
まず ls -l index.html を実行して現在の状態を確認してみましょう。
infrauser@linux:~$
START

現在の所有者を確認してみましょう

ls -lを実行すると、ファイルの所有者・所有グループを確認できます。

理解度チェック:どのコマンドを使う?

SCENARIO index.htmlの所有者はroot、 所有グループもrootになっています。

所有者をtanaka、 所有グループをwebadminへ 一度のコマンドで変更したい場合、 どのコマンドを利用すればよいでしょうか?

回答を選択してください

所有者と所有グループを同時に指定する方法を考えてみましょう。

chown・chgrpで初心者が間違えやすいポイント

① chownとchmodを混同する

CHOWN 誰のものか

所有者・所有グループを変更

CHMOD 何ができるか

読み取り・書き込み・実行権限を変更

名前が似ていますが役割は異なります。

chown 所有者

chmod = パーミッション

② chown user:groupの順番を逆にする

次の順番で指定します。

chown 所有者:所有グループ ファイル

ユーザ → グループの順番です。

③ -Rを不用意に使う

-Rは便利ですが、 ディレクトリ配下すべてへ変更が及びます。

IMPORTANT 再帰変更では対象パスを必ず確認する

特にsudoと組み合わせる場合、 誤ったパスへchown -Rを実行すると システムのファイル所有権まで変更してしまう可能性があります。

確認問題:chown・chgrpを理解できたか確認しよう

QUESTION 01

ファイルの所有者を変更する代表的なコマンドはどれですか?

正解:B

chownはchange ownerの意味で、 ファイルやディレクトリの所有者を変更するコマンドです。

QUESTION 02

index.htmlの所有グループだけをwebadminへ変更するコマンドはどれですか?

正解:C

所有グループだけを変更する場合は chgrpを利用できます。

QUESTION 03

/var/www/html以下の所有者と所有グループを tanaka:webadminへ再帰的に変更するコマンドはどれですか?

正解:A

-Rはrecursive(再帰的)を意味し、 ディレクトリ配下にも変更を適用します。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

Linuxのファイルには 所有者(owner)と所有グループ(group) が設定されている

02

所有者・所有グループは ls -lで確認できる

03

chownは所有者、 chgrpは 所有グループを変更する

04

chown tanaka:webadmin fileのようにすると、 所有者と所有グループを同時に変更できる

05

-Rを利用すると ディレクトリ配下へ再帰的に適用できるが、 影響範囲には注意する

次は「ファイル」から「動いているプログラム」へ

ここまでのLinux中級では、 ユーザ・グループ・ファイル所有権を学習してきました。

01 USER ユーザ管理
02 GROUP グループ管理
03 FILE 所有者・権限
04 PROCESS 実行中の処理

しかし、Linuxサーバを管理するうえでは 「ファイルがどうなっているか」だけでなく、 現在どんなプログラムが動いているのか を確認することも非常に重要です。

Linuxでは実行中のプログラムを プロセス(process)として管理しています。

次の記事では、 pstopを使って Linux上で動いているプロセスを確認する方法を学習します。

NEXT LESSON

次は「ps・topでLinuxプロセスを確認する」を学びましょう

Linuxサーバでは、WebサーバやSSH、 データベースなどさまざまなプログラムが動作しています。

次の記事では、 プロセスとは何か、PIDとは何か、 ps・topで実行中のプロセスを確認する方法 を実際に操作しながら学習します。

ps・topでLinuxプロセスを確認する
LINUX INTERMEDIATE

Linux中級講座の一覧へ戻る

Linux中級の学習順を確認したい場合は、 講座一覧へ戻りましょう。

← Linux中級講座へ戻る
目次