1. ホーム
  2. Linux

【Linux】chown の使い方|ファイルの所有者・グループを変更する方法

Share

Linux では、すべてのファイルやディレクトリに「所有者」と「グループ」という持ち主の情報が設定されています。この持ち主を変更するのが chown(change owner の略)コマンドです。Web サーバーのファイルを適切な所有者に直したり、アップロードしたファイルの持ち主を変えたりと、サーバー管理でよく使います。この記事では、chown の基本の使い方から、所有者とグループを同時に変える方法、ディレクトリごとまとめて変える -R、つまずきやすい権限エラーまでを解説します。

chown とは

chown は、ファイルやディレクトリの所有者(ユーザー)とグループを変更するコマンドです。所有者やグループを変えられるのは基本的に管理者(root)だけなので、実際には sudo と組み合わせて実行することがほとんどです。まずは現在の所有者を確認するところから始めましょう。ls -l を使うと、各ファイルの所有者とグループが表示されます。

ターミナル
$ ls -l index.html
-rw-r--r-- 1 alice staff 1024 Jul  7 10:00 index.html
#           ↑所有者 ↑グループ

この例では、所有者が alice、グループが staff です。3列目が所有者、4列目がグループを表しています。

所有者を変更する(基本)

もっとも基本的な使い方は、chown 新しい所有者 ファイル名 の形です。所有者を bob に変えるには次のようにします。

ターミナル
# 所有者を bob に変更する(管理者権限が必要なので sudo を付ける)
sudo chown bob index.html

複数のファイルをまとめて変えたいときは、ファイル名をスペースで区切って並べます。*.html のようなワイルドカードも使えます。

所有者とグループを同時に変更する

所有者とグループを一度に変えたいときは、所有者:グループ のようにコロンでつないで指定します。Web サーバーの実行ユーザー(例: www-data)に所有者とグループの両方をそろえる、といった場面でよく使います。

ターミナル
# 所有者を www-data、グループも www-data にする
sudo chown www-data:www-data index.html

指定の仕方によって、変わる対象が次のように変化します。

書き方変わるもの
chown bob file所有者だけを bob に変える
chown bob:staff file所有者を bob、グループを staff に変える
chown :staff fileグループだけを staff に変える
chown bob: file所有者を bob、グループを bob の既定グループに変える

:staff のようにコロンの前を省くとグループだけを変更できます。グループ変更専用の chgrp staff file というコマンドも同じ働きをするので、好みに合わせて使い分けて構いません。

ディレクトリの中身ごとまとめて変える(-R)

ディレクトリを指定して chown しても、変わるのはそのディレクトリ自身だけで、中のファイルは変わりません。フォルダの中身をすべて含めて所有者を変えたいときは、再帰的に処理する -R オプションを付けます。

ターミナル
# public フォルダ以下すべてを www-data の持ち物にする
sudo chown -R www-data:www-data /var/www/public

-R は強力なぶん、指定するパスを間違えると広範囲の所有者を一気に書き換えてしまいます。実行前に、対象のパスが正しいかを必ず確認しましょう。とくに / のようなルートに近いパスへの再帰指定は、システムを壊す危険があるので絶対に避けてください。

Operation not permitted と表示されるとき

一般ユーザーのまま chown を実行すると、Operation not permitted(操作は許可されていません)というエラーが出ることがあります。これは、所有者の変更が管理者権限を必要とする操作だからです。自分が持ち主のファイルであっても、その所有者を別のユーザーに渡す操作は原則として root にしか許されていません。先頭に sudo を付けて実行してください。

また、invalid userinvalid group と表示される場合は、指定したユーザー名・グループ名がそのシステムに存在しないことを意味します。id ユーザー名 でユーザーが存在するか、getent group グループ名 でグループがあるかを確認してから指定し直しましょう。名前のかわりに数値のID(UID・GID)で指定することもできます。

まとめ

chown は、ファイルやディレクトリの所有者とグループを変更するコマンドです。chown 所有者 ファイル で所有者を、chown 所有者:グループ ファイル で両方を、chown :グループ ファイル でグループだけを変えられます。フォルダの中身までまとめて変えるときは -R を使いますが、パスの指定ミスに注意が必要です。所有者の変更には管理者権限が要るため、基本は sudo を付けて実行します。ls -l で現在の状態を確認しながら操作すると、安全に持ち主を整理できます。

参考ページ