Linuxコマンド一覧

chownコマンド|ファイルの持ち主を変える

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
chown を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

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別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

chmod / ls / sudo / chgrp

よくある質問

chmod と chown はどう違いますか?
`chmod` は「何ができるか」、`chown` は「誰のものか」を変えます。読み書きできないとき、権限の問題なら chmod、持ち主が違うことが原因なら chown です。
なぜ sudo が必要なのですか?
自分のファイルを他人に渡す操作も含めて、所有者の変更は管理者だけができる決まりだからです。`sudo` を付けないと Operation not permitted になります。
user:user のコロンは何ですか?
左が所有者、右がグループです。`chown user file` は所有者だけを変えるのでグループは元のまま残ります。両方そろえたいときは `user:user` と書きます。
sudo で作業したらファイルが編集できなくなりました。
`sudo` で動かした処理が root 所有のファイルを残したためです。`ls -l` で持ち主を確かめ、`sudo chown <自分>:<自分> <ファイル>` で戻します。
-R を使うときに気をつけることはありますか?
対象を打ち間違えないことです。`/` や `/home` のような広い場所に `-R` を掛けると、システム全体の持ち主が変わって起動しなくなることがあります。