Linuxコマンド chown(ファイル・ディレクトリの所有者を変更)

指定したファイル・ディレクトリのオーナやグループの所有者を変更するコマンドについて解説。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

使用方法

chownコマンドを使用して、ファイルやディレクトリのユーザー所有者及びグループ所有者を変更できます。

書式

$ chown [オプション] ファイル名
-c,
–changes
変更が行われた場合は、指定したファイルの詳細情報を表示する
-R,
–recursive
指定したディレクトリ以下を再帰的に所有権を変更する
–reference=ファイル名指定したファイルのユーザーやグループ設定を利用する
–dereference指定したファイルがシンボリックリンクである場合は、
リンク先ファイルの所有権を変更する
-h,
–no-dereference
シンボリックリンクが対象の場合、リンク先ファイルではなく
シンボリックリンクファイルにのみ所有権の変更を実施する
-f,
–silent,
–quiet
所有権変更ができない場合でもエラーメッセージを表示しない
–from=ユーザー名:グループ名ユーザー名やグループ名にマッチするファイルのみ所有権を変更する
(どちらかを省略することが可能)
オプション一覧表
指定方法解説
ユーザ名対象ファイルの所有ユーザを変更する
ユーザ名:ユーザとユーザのログイングループを設定する
:グループ名対象ファイルの所有グループを変更する。chgrpと同じ動作
ユーザ名:グループ名ユーザとグループを設定する。
ユーザ名とグループ名の指定方法表

かつて、ファイルの所有者であれば一般ユーザでもコマンドを実行することができましたが、現在は管理者のみが実行できるようになっている。

システムユーザ一覧
システムユーザは、/etc/passwdファイルに記述されている。

サンプル

ファイルのオーナ所有者を別のユーザに変更するサンプル

$ chown centos sample.txt 

実行結果

[root@xxx work]$ ls -l
total 4
drwxr-xr-x 2 root root 6 Apr 21 21:21 sample
-rw-r--r-- 1 root root 4 Apr 21 21:22 sample.txt  #オーナがroot
[root@xxx work]$ chown centos  sample.txt         #オーナをユーザを変更
[root@xxx work]$ ls -l
total 4
drwxr-xr-x 2 root   root 6 Apr 21 21:21 sample
-rw-r--r-- 1 centos root 4 Apr 21 21:22 sample.txt #オーナがcentosユーザに変更されている。
[root@xxx work]$ 

オーナとグループを同時に変更する

chown コマンド後に:(コロン)で区切って指定することにより、オーナとグループを同時に変更することができる。

サンプル

$ chown centos:centos sample.txt 

実行結果

[root@xxx work]$ ls -la
total 8
drwxr-xr-x   3 root root   38 Apr 21 21:22 .
drwxrwxrwt. 12 root root 4096 Apr 21 21:21 ..
drwxr-xr-x   2 root root    6 Apr 21 21:21 sample
-rw-r--r--   1 root root    4 Apr 21 21:22 sample.txt      #オーナ及びグループの所有者がroot
[root@xxx work]$ chown centos:centos sample.txt            #コロンで区切って指定する
[root@xxx work]$ ls -la
total 8
drwxr-xr-x   3 root   root     38 Apr 21 21:22 .
drwxrwxrwt. 12 root   root   4096 Apr 21 21:21 ..
drwxr-xr-x   2 root   root      6 Apr 21 21:21 sample
-rw-r--r--   1 centos centos    4 Apr 21 21:22 sample.txt  #オーナ及びグループの所有者がcentosに変更される。
[root@xxx work]$ 

グループのユーザを変更する

chown コマンド後に:グループ名を指定することにより、オーナとグループを同時に変更することができる。

サンプル

$ chown :centos sample.txt 

実行結果

[root@xxx work]$ ls -la
total 8
drwxr-xr-x   3 root root   38 Apr 21 21:22 .
drwxrwxrwt. 12 root root 4096 Apr 21 21:21 ..
drwxr-xr-x   2 root root    6 Apr 21 21:21 sample
-rw-r--r--   1 root root    4 Apr 21 21:22 sample.txt    #オーナ及びグループの所有者がroot
[root@xxxx work]$ chown :centos sample.txt               #:(コロン)グループ名で区切って指定する
[root@xxx work]$ ls -la
total 8
drwxr-xr-x   3 root root     38 Apr 21 21:22 .
drwxrwxrwt. 12 root root   4096 Apr 21 21:21 ..
drwxr-xr-x   2 root root      6 Apr 21 21:21 sample
-rw-r--r--   1 root centos    4 Apr 21 21:22 sample.txt  #グループがcentosに変更される。
[root@xxx work]$ 

ディレクトリ配下のオーナ及びグループをすべて変更する

chown コマンドにオプション-Rを指定することにより、ディレクトリ配下すべてのサブディレクトリとファイルのオーナやグループを変更することができる。

サンプル

$ chown -R centos:centos sample

実行結果

[root@xxx work]$ tree             #ディレクトリ構成
.
├── sample
│   ├── sample2.txt
│   └── sub_sample
└── sample.txt

2 directories, 2 files
[root@xxx work]$ ls -l sample/    #sampleディレクトリ内の状態
total 4
-rw-r--r-- 1 root root 3 Apr 21 21:33 sample2.txt
drwxr-xr-x 2 root root 6 Apr 21 21:33 sub_sample
[root@xxx work]$ chown -R centos:centos sample/   #sampleディレクトリ含めて、オーナとグループをcentosに一括変更
[root@xxx work]$ ls -l
total 4
drwxr-xr-x 3 centos centos 43 Apr 21 21:33 sample
-rw-r--r-- 1 root   centos  4 Apr 21 21:22 sample.txt
[root@xxx work]$ ls -l sample/
total 4
-rw-r--r-- 1 centos centos 3 Apr 21 21:33 sample2.txt
drwxr-xr-x 2 centos centos 6 Apr 21 21:33 sub_sample
[root@xxx work]$ 

リンクファイルの所有者を変更する

chown コマンドにオプション-hを指定することにより、リンクファイル自体のオーナを変更することができる。オプションなしでオーナを変更した場合、リンク先のファイルの所有者が変更される。

サンプル

$ chown -h centos link_sample

実行結果

[root@xxx work]$ ls -l
total 0
lrwxrwxrwx 1 root root 18 Apr 21 21:57 link_sample -> sample/sample2.txt #リンクのオーナ及びグループはroot
drwxr-xr-x 3 root root 43 Apr 21 21:33 sample

[root@xxx work]$ ls -l sample/
total 4
-rw-r--r-- 1 root root 3 Apr 21 21:33 sample2.txt
drwxr-xr-x 2 root root 6 Apr 21 21:33 sub_sample

[root@xxx work]$ chown centos link_sample #リンクのオーナを変更
[root@xxx work]$ ls -l
total 0
lrwxrwxrwx 1 root root 18 Apr 21 21:57 link_sample -> sample/sample2.txt #シンボリックリンクのオーナ変わらない
drwxr-xr-x 3 root root 43 Apr 21 21:33 sample

[root@xxx work]$ ls -l sample/
total 4
-rw-r--r-- 1 centos root 3 Apr 21 21:33 sample2.txt #シンボリックリンク先のファイルのオーナが変更される。
drwxr-xr-x 2 root   root 6 Apr 21 21:33 sub_sample
[root@xxx work]$ 
[root@xxx work]$ ls -l #シンボリックリンクのオーナを確認
total 0
lrwxrwxrwx 1 root root 18 Apr 21 21:57 link_sample -> sample/sample2.txt
drwxr-xr-x 3 root root 43 Apr 21 21:33 sample

[root@xxx work]$ ls -l sample/ #リンク先ファイルのオーナを確認
total 4
-rw-r--r-- 1 root root 3 Apr 21 21:33 sample2.txt
drwxr-xr-x 2 root root 6 Apr 21 21:33 sub_sample

[root@xxx work]$ ls -l sample/
total 4
-rw-r--r-- 1 root root 3 Apr 21 21:33 sample2.txt
drwxr-xr-x 2 root root 6 Apr 21 21:33 sub_sample

[root@xxx work]$ chown -h centos link_sample #リンクのオーナを変更
[root@xxx work]$ ls -l sample/
total 4
-rw-r--r-- 1 root root 3 Apr 21 21:33 sample2.txt
drwxr-xr-x 2 root root 6 Apr 21 21:33 sub_sample

[root@xxx work]$ ls -l
total 0
lrwxrwxrwx 1 centos root 18 Apr 21 21:57 link_sample -> sample/sample2.txt
drwxr-xr-x 3 root   root 43 Apr 21 21:33 sample
[root@xxx work]$