chown はファイルの所有者とグループを変えるコマンドです。`sudo` が要る理由、`user:user` の書き方、ディレクトリごと変える `-R` を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-06
chown [オプション] 所有者[:グループ] ファイル...
ファイルやディレクトリの持ち主を変えます。
まず、誰のものかを ls -l で見ます。
$ ls -l
total 16
drwxr-xr-x 2 root root 4096 Sep 6 00:57 build/
-rw-r--r-- 1 root root 11 Sep 6 00:57 config.yml
-rw-r--r-- 1 root root 16 Sep 6 00:57 deploy.log
-rw-r--r-- 1 user user 10 Sep 6 00:57 README.md
3列目が所有者、4列目がグループです。
README.md だけが自分(user)のもので、ほかは root のものになっています。
sudo を付けて動かした処理が、root 所有のファイルを残していった状態です。
そのまま変えようとすると断られます。
$ chown user config.yml
chown: changing ownership of 'config.yml': Operation not permitted
所有者の変更は管理者の仕事なので、sudo が要ります。
$ sudo chown user config.yml
$ ls -l config.yml
-rw-r--r-- 1 user root 11 Sep 6 00:57 config.yml
所有者は user になりましたが、グループは root のままです。
: の右にグループを書くと、両方まとめて変わります。
$ sudo chown user:user deploy.log
$ ls -l deploy.log
-rw-r--r-- 1 user user 16 Sep 6 00:57 deploy.log
実務では、この 所有者:グループ の形で書くほうが安全です。
片方だけ変えると、あとで「読めるのに書けない」といった中途半端な状態になります。
-R を付けると、中のファイルまでまとめて変わります。
$ ls -l build
total 4
-rw-r--r-- 1 root root 15 Sep 6 00:57 bundle.js
$ sudo chown -R user:user build
$ ls -l build
total 4
-rw-r--r-- 1 user user 15 Sep 6 00:57 bundle.js
ディレクトリ自体も変わっています。
$ ls -l
total 16
drwxr-xr-x 2 user user 4096 Sep 6 00:57 build/
-rw-r--r-- 1 user root 11 Sep 6 00:57 config.yml
-rw-r--r-- 1 user user 16 Sep 6 00:57 deploy.log
-rw-r--r-- 1 user user 10 Sep 6 00:57 README.md
chown は、持ち主が違うせいで触れないものを渡すときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| sudo で作ってしまったファイルを自分に戻す | sudo chown $USER:$USER config.yml |
| デプロイしたファイルを Web サーバーに渡す | sudo chown -R www-data:www-data /var/www/app |
| 持ち主を確かめる | ls -l |
| グループだけ変える | sudo chgrp <グループ> <ファイル> |
chmod で直らないときは持ち主を疑ってください。
権限が -rw-r--r-- なら、書けるのは所有者だけです。
自分のものでなければ、いくら chmod を打っても書けるようにはなりません。
まず ls -l で3列目を見ます。
存在しないユーザーは指定できません。
$ sudo chown nosuchuser README.md
chown: invalid user: 'nosuchuser'
そのユーザーが本当にあるかは id <名前> で確かめられます。
ファイル名の打ち間違いは、そのまま止まります。
$ sudo chown user nope
chown: cannot access 'nope': No such file or directory
-R の対象は指差し確認してください。
/ や /home に -R を掛けると、システム全体の持ち主が変わります。
戻すのは非常に大変なので、対象は必ず相対パスかフルパスで具体的に書きます。
webterm.appこのサイト
ターミナル応用
特定場面で役立つコマンドを学ぶ
learn.webterm.app別のサイト
