Linuxのchownコマンドを使用すると、ファイルとディレクトリの所有権を変更できます。 「chown」は「changeowner」の略であると正しく推測できます。
これらの用語に気付いていない場合は、Linuxでのファイルのアクセス許可と所有権に関する説明記事を読むことを強くお勧めします。
すぐに思い出せる写真は次のとおりです:
chownコマンドを使用すると、ファイルまたはディレクトリのユーザー所有権とグループ所有権の両方を変更できます。
Linuxでのchownコマンドの例
chownコマンドの構文は次のようになります。
chown [options] user_spec files
chownは管理コマンドであるため、chownコマンドで変更を行うには、rootであるか、sudo権限を持っている必要があることに注意してください。 sudoユーザーを追加する方法を知っているといいのですが。
それ以外の場合は、次のようなエラーが表示されます:
chown: changing ownership of 'agatha.txt': Operation not permitted
次に、chownコマンドの使用方法を例とともに見てみましょう。
これから使用するサンプルセットを次に示します。
-rw-r--r-- 1 abhishek abhishek 456 Jan 24 09:30 agatha.txt
drwxr-xr-x 2 abhishek abhishek 4096 Jan 24 09:31 mydir
drwxr-xr-x 3 abhishek abhishek 4096 Jan 24 09:30 new
-rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
1。ファイルのユーザー所有権を変更または設定する
ファイルの所有権を変更するには、次のようにコマンドを使用します。
sudo chown user_name file_name
ユーザー名の代わりにUID(ユーザーID)を使用することもできます。変更の例を次に示します。
[email protected]:~/tutorial$ sudo chown prakash agatha.txt
[email protected]:~/tutorial$ ls -l agatha.txt
-rw-r--r-- 1 prakash abhishek 456 Jan 24 09:30 agatha.txt
ご覧のとおり、ファイルの所有者は「abhishek」から「prakash」に変更されましたが、グループは「abhishek」のままです。ユーザーの所有権とグループの所有権の両方を変更する方法を紹介します。
2。ユーザーとグループの所有権を変更する
ファイルのユーザーとグループの所有権を変更するには、次のように列で区切られたユーザー名でグループを指定できます。
sudo chown user_name:group_name file_name
もちろん、ユーザー名とグループ名の代わりに、それぞれUIDとGIDを使用できます。
[email protected]:~/tutorial$ sudo chown prakash:adm sherlock.txt
[email protected]:~/tutorial$ ls -l sherlock.txt
-rw-r--r-- 1 prakash adm 356 Jan 24 09:30 sherlock.txt
上記の例でわかるように、ファイルsherlock.txtのユーザーを「prakash」に変更し、グループを「adm」に変更しました。
3。グループをユーザーのデフォルトグループに変更します
すべてのユーザーには、デフォルトまたはプライマリグループがあります。ユーザーが新しいファイルまたはディレクトリを作成すると、このプライマリグループが自動的にファイルのグループ所有者になります。 idコマンドを使用して、ユーザーのデフォルトグループを一覧表示できます。
ここで、ファイルのグループ所有権をユーザーのデフォルトグループに変更する場合は、グループ名をコロンの後に残す必要があります。
sudo chown user_name: file_name
以下の例でわかるように、sherlock.textファイルのユーザー所有者‘ prakash ‘およびグループ所有者‘ adm ‘。所有者を「abhishek」に変更しましたが、グループ名を提供しませんでした。それでも、グループを「adm」からデフォルトの「abhishek」グループに変更しました。
[email protected]:~/tutorial$ ls -l sherlock.txt
-rw-r--r-- 1 prakash adm 356 Jan 24 09:30 sherlock.txt
[email protected]:~/tutorial$ sudo chown abhishek: sherlock.txt
[email protected]:~/tutorial$ id abhishek
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),999(docker)
[email protected]:~/tutorial$ ls -l sherlock.txt
-rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
4。グループのみを変更する
ユーザーの所有者に煩わされることなくグループを変更したい場合は、次のようにchownコマンドを使用できます。
sudo chown :group_name file_name
以下の例では、ユーザーの所有権に触れることなく、グループの所有権をsudoに設定しています。
[email protected]:~/tutorial$ ls -l agatha.txt
-rw-r--r-- 1 prakash abhishek 456 Jan 24 09:30 agatha.txt
[email protected]:~/tutorial$ sudo chown :sudo agatha.txt
[email protected]:~/tutorial$ ls -l agatha.txt
-rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
5。ディレクトリのユーザーとグループの所有権を再帰的に変更する
上記のすべてのコマンドで、ファイルをディレクトリに置き換えることができ、ディレクトリの所有権を変更する場合も同じように機能します。
ここでの1つの問題は、デフォルトでディレクトリ内のコンテンツの所有権が変更されないことです。
ディレクトリの所有権とディレクトリ内のすべてのコンテンツを変更するには、再帰オプション-Rを使用できます。
sudo chown -R user_name:group_name directory_name
6。参照ファイルと同じユーザーとグループの所有権を設定します
次の方法で、ファイルを参照として使用し、参照ファイルに基づいてファイルのユーザーとグループの所有権を変更できます。
sudo chown --reference=file1.txt file2.txt
以下の例では、ファイルagatha.txtが参照として使用されています。ご覧のとおり、sherlock.txtの所有権はagatha.txtに基づいて変更されています。
[email protected]:~/tutorial$ ls -l agatha.txt sherlock.txt
-rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
-rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
[email protected]:~/tutorial$ sudo chown --reference=agatha.txt sherlock.txt
[email protected]:~/tutorial$ ls -l agatha.txt sherlock.txt
-rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
-rw-r--r-- 1 prakash sudo 356 Jan 24 09:30 sherlock.txt
chownコマンドの例は十分にあると思います。詳細については、chownのmanページをいつでも参照できます。
ご質問やご提案がございましたら、お知らせください。