Infra Engineer

ファイル所有者の変更~chownコマンド・chgrpコマンド~
2022.08.31
Lv1

ファイル所有者の変更~chownコマンド・chgrpコマンド~

本記事の対象者

LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。


今回の内容

今回は、chownコマンドとchgrpコマンドについて解説します。
ファイルやディレクトリの所有者・所有グループの変更をするコマンドです。

・chownコマンド
・chgrpコマンド
・まとめ
・確認問題

chownコマンド

chownコマンドは、ファイルやディレクトリの所有者を変更できます。
なお、使用できるのはrootユーザのみです。

chown
意味 ファイルやディレクトリの所有者を変更する。
書式 chown [オプション] ユーザ[:グループ] ファイル名 or ディレクトリ名

「:」区切りで指定することで、所有者と合わせて所有グループを変更することも可能です。
主なオプションは以下です。

オプション 説明
-R 指定したディレクトリとその中にあるファイルすべての所有者を変更する。
例①)
「chownsample」ディレクトリの所有者を「sie」に変更。
[root@localhost chsample]# ll
合計 0
drwxr-xr-x. 2 root root 6  8月 25 14:18 chownsample
[root@localhost chsample]# chown sie chownsample/
[root@localhost chsample]# ll
合計 0
drwxr-xr-x. 2 sie root 6  8月 25 14:18 chownsample
例②)
「chownsample」ディレクトリの所有者を「sie」、所有グループを「sak」に変更。
[root@localhost chsample]# ll
合計 0
drwxr-xr-x. 2 root root 6  8月 25 14:18 chownsample
[root@localhost chsample]# chown sie:sak chownsample/
[root@localhost chsample]# ll
合計 0
drwxr-xr-x. 2 sie sak 6  8月 25 14:18 chownsample

「:」区切りで「所有者:所有グループ」と指定することで、所有者と所有グループを合わせて変更できます。

例③)
「chsample」ディレクトリ内のすべてのディレクトリとファイルの所有者を「sie」、所有グループを「sak」に変更。(-R)
[root@localhost ~]# ll | grep chsample
drwxr-xr-x. 3 root root   48  8月 25 14:26 chsample
[root@localhost ~]# ll chsample/
合計 0
drwxr-xr-x. 2 root root 6  8月 25 14:18 chownsample
-rw-r--r--. 1 root root 0  8月 25 14:26 chownsamplefile
[root@localhost ~]# chown -R sie:sak chsample/
[root@localhost ~]# ll | grep chsample
drwxr-xr-x. 3 sie  sak    48  8月 25 14:26 chsample
[root@localhost ~]# ll chsample/
合計 0
drwxr-xr-x. 2 sie sak 6  8月 25 14:18 chownsample
-rw-r--r--. 1 sie sak 0  8月 25 14:26 chownsamplefile

「-R」オプションを使用すると、そのディレクトリ配下のすべてのディレクトリとファイルも含めて所有者と所有グループを変更できます。


chgrpコマンド

chgrpコマンドは、ファイルやディレクトリの所有グループを変更できます。
一般ユーザでも使用することができます。ただし、対象ファイルやディレクトリの所有者が自身でありかつ自身の所属グループへの変更に限ります。
rootユーザは制限なく変更することができます。

chgrp
意味 ファイルやディレクトリの所有グループを変更する。
書式 chgrp [オプション] グループ ファイル名 or ディレクトリ名

主なオプションは以下です。

オプション 説明
-R 指定したディレクトリとその中にあるファイルすべての所有グループを変更する。
例①)
「chgrpsample」ディレクトリの所有グループを「sak」に変更。
[root@localhost chsample]# ll
合計 0
drwxr-xr-x. 2 root root 6  8月 25 15:12 chgrpsample
[root@localhost chsample]# chgrp sak chgrpsample/
[root@localhost chsample]# ll
合計 0
drwxr-xr-x. 2 root sak 6  8月 25 15:12 chgrpsample
例②)
一般ユーザでの実行。
[sak@localhost ~]$ who am i
sak pts/1 2022-08-29 17:37 (192.168.56.1)
[sak@localhost ~]$ groups sak
sak : sak sie
[sak@localhost ~]$ ll
合計 0
drwxr-xr-x. 2 root sak 6 8月 25 15:18 chgrpsample #所有者がroot
[sak@localhost ~]$ chgrp sie chgrpsample/
chgrp: `chgrpsample/' のグループを変更中: 許可されていない操作です

一般ユーザの場合、自身が所有者でないファイルやディレクトリに対しては実行できません。

 
[sak@localhost ~]$ ll
合計 0
drwxr-xr-x. 2 sak root 6  8月 25 15:18 chgrpsample #所有者がsak(自分)
[sak@localhost ~]$ chgrp sie chgrpsample/
[sak@localhost ~]$ ll
合計 0
drwxr-xr-x. 2 sak sie 6  8月 25 15:18 chgrpsample
[sak@localhost ~]$ chgrp test chgrpsample/
chgrp: `chgrpsample/' のグループを変更中: 許可されていない操作です #自身が所属していないグループには変更できない

自身が所有者であるファイルやディレクトリの所有グループは、自身が所属するグループへなら変更できます。


まとめ

今回は、chownコマンドとchgrpコマンドについて解説しました。
chownコマンドはrootユーザのみが実行できます。
chgrpコマンドは一般ユーザでも自身が所有するファイルやディレクトリでありかつ自身の所属グループへの変更なら実行できます。

最後に、確認問題で今回の記事で得た知識を確かめましょう。


確認問題

問題

sample.txtのファイルの所有者をsieに変更し、所有グループをsakに変更するコマンドはどれか。

A) chown sie:sak sample.txt
B) chown sak:sie sample.txt
C) chgrp sie:sak sample.txt
D) chown sie+sak sample.txt
E) chown sie sample.txt | chgrp sak sample.txt

解答
答え:A

chownコマンドで「所有者:所有グループ」とすることで、所有者と所有グループを合わせて変更可能です。