スポンサーリンク

【Ubuntu】ファイルやディレクトリの所有者を変更する方法(chownコマンド)

Ubuntuでファイルやディレクトリの所有者を変更する方法です。

所有者の変更はchown

所有者の変更はchownで行うことが出来ますが、管理者権限が必要となります。

sudo chown ユーザ ファイル
sudo chown ユーザ ディレクトリ

所有者とグループを一度に変更することも出来ます。

sudo chown ユーザ:グループ ファイル
sudo chown ユーザ:グループ ディレクトリ

実行例

「test_01.txt」の所有者を「root」から「tamohiko」に変更します。

$ ls -l test_01.txt 
-rw-rw-r-- 1 root root 16 Sep 27 22:16 test_01.txt

$ sudo chown tamohiko test_01.txt 

$ ls -l test_01.txt 
-rw-rw-r-- 1 tamohiko root 16 Sep 27 22:16 test_01.txt

所有者とグループをあわせて「root」から「tamohiko」に変更します。

$ ls -l test_01.txt 
-rw-rw-r-- 1 root root 16 Sep 27 22:16 test_01.txt

$ sudo chown tamohiko:tamohiko test_01.txt

$ ls -l test_01.txt 
-rw-rw-r-- 1 tamohiko tamohiko 16 Sep 27 22:16 test_01.txt

オプションについて

私が普段使用することが多い下記のオプションについての説明をします。

  • -R ディレクトリ内のデータを全て変更
  • -c 変更履歴を表示

「-R」ディレクトリ内のデータを全て変更

「-R」オプションを使うと、指定したディレクトリ内のデータ全てについて所収者を変更することが出来ます。

$ sudo chown -R ユーザ:グループ ディレクトリ

検証用として以下の環境を用意しました。

$ ls -lR dir_01/
dir_01/:
total 8
drwxrwxr-x 2 root root 4096 Dec  5 16:18 dir_02
-rw-rw-r-- 1 root root    0 Sep 16 19:00 test_02.txt
-rw-rw-r-- 1 root root    8 Sep 16 19:28 test_03.txt

dir_01/dir_02:
total 4
-rw-rw-r-- 1 root root 8 Sep 13 15:30 test_04.txt

「-R」オプションを使って「dir_01」ディレクトリの所収者とグループを「tamohiko」に変更します。

$ sudo chown -R tamohiko:tamohiko dir_01/

「dir_01」ディレクトリだけではなく、その中にあるファイルやディレクトリ全ての所有者とグループが変更されています。

$ ls -lR dir_01/
dir_01/:
total 8
drwxrwxr-x 2 tamohiko tamohiko 4096 Dec  5 16:18 dir_02
-rw-rw-r-- 1 tamohiko tamohiko    0 Sep 16 19:00 test_02.txt
-rw-rw-r-- 1 tamohiko tamohiko    8 Sep 16 19:28 test_03.txt

dir_01/dir_02:
total 4
-rw-rw-r-- 1 tamohiko tamohiko 8 Sep 13 15:30 test_04.txt

「-c」変更履歴を表示

「-c」オプションを使用すると、どのような所有者変更を行った内容が表示されるようになります。

$ sudo chown -c ユーザ:グループ ファイル
$ sudo chown -c ユーザ:グループ ディレクトリ

実際に使用し見ると、元々「root:root」であったものが「tamohiko:tamohiko」と変更されたことが表示から確認できます。

$ sudo chown -c tamohiko:tamohiko test_01.txt 
changed ownership of 'test_01.txt' from root:root to tamohiko:tamohiko

私は「-R」オプションとあわせて使用することが多いです。

こうすることで、本当は変更をしてはいけないデータが無かったのかを、後から確認をすることができます。

$ sudo chown -Rc root:root dir_01/
changed ownership of 'dir_01/dir_02/test_04.txt' from tamohiko:tamohiko to root:root
changed ownership of 'dir_01/dir_02' from tamohiko:tamohiko to root:root
changed ownership of 'dir_01/test_03.txt' from tamohiko:tamohiko to root:root
changed ownership of 'dir_01/test_02.txt' from tamohiko:tamohiko to root:root
changed ownership of 'dir_01/' from tamohiko:tamohiko to root:root

変更のログを残す方法

「tee」コマンドと組み合わせることで、「chown」で行った所有者変更の履歴を残すことが出来ます。

$ sudo chown -Rc tamohiko:tamohiko dir_01/ | tee dir_01_chown.log
changed ownership of 'dir_01/dir_02/test_04.txt' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/dir_02' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/test_03.txt' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/test_02.txt' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/' from root:root to tamohiko:tamohiko

このような感じで、どのデータがどのように変更されたかの情報が記録されます。

$ cat dir_01_chown.log 
changed ownership of 'dir_01/dir_02/test_04.txt' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/dir_02' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/test_03.txt' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/test_02.txt' from root:root to tamohiko:tamohiko
changed ownership of 'dir_01/' from root:root to tamohiko:tamohiko

コメント

タイトルとURLをコピーしました