Linuxコマンドchownの使い方と2つのオプション

Linuxシステムを運用していると、ファイルやディレクトリの所有権を変更する必要がある場合が多々あります。その際に使用するのがLinuxコマンドchownです。この投稿では、Linuxコマンドchownの基本的な使用方法から様々なオプションや注意点まで詳しく説明します。

Linuxコマンドchownとは?

chownは「change owner」の略で、ファイルやディレクトリの所有者(owner)とグループ(group)を変更するコマンドです。Linuxではファイルやディレクトリが特定のユーザーとグループに属しており、該当するユーザーやグループに応じてアクセス権限が異なります。したがって、chownコマンドを使用して所有権を適切に設定することは、システムのセキュリティと管理に非常に重要です。

基本使用方法

chownコマンドは、「オプション」、「所有者:グループ」の形式で使用しますが、グループはオプション設定です。最後にファイルやディレクトリを入力します。

chown [オプション] [所有者][:グループ] ファイル/ディレクトリ
ShellScript

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

以下のコマンドは、filenameファイルの所有者をnewuserに変更します。

chown newuser filename
ShellScript

以下の図は、test.txtファイルの所有者をrootに変更した場合です。root権限を付与する必要があるため、管理者権限で作業するためにsudoコマンドを一緒に使用します。

図1. Linuxコマンドchown: ファイルの所有者を変更
図1. Linuxコマンドchown: ファイルの所有者を変更

ファイルの所有者とグループを同時に変更する

以下のコマンドは、filenameファイルの所有者をnewuser、グループをnewgroupに変更します。

chown newuser:newgroup filename
ShellScript

以下では、ファイルの所有者をroot、グループをwww-dataに設定しました。

図2. Linuxコマンドchown: ファイルの所有者及びグループを変更
図2. Linuxコマンドchown: ファイルの所有者及びグループを変更

主要オプション

chownコマンドには様々なオプションがあります。以下はよく使用されるオプションです。

-R (Recursive, 再帰的変更)

ディレクトリとその下位にあるすべてのファイルとディレクトリの所有者を変更する際に使用します。

このコマンドは、directorynameディレクトリとその下位にあるすべてのファイルとディレクトリの所有者をnewuser、グループをnewgroupに変更します。

chown -R newuser:newgroup directoryname
ShellScript

以下では、projectディレクトリとその下位のファイル及びディレクトリをすべてroot:www-data権限に変更しました。

図3. Linuxコマンドchown: -Rオプションで再帰的変更
図3. Linuxコマンドchown: -Rオプションで再帰的変更

–reference (参照ファイルの所有者とグループに変更)

他のファイルの所有者とグループを参照して同じように変更する際に使用します。–referenceオプションはchmodコマンドでも同様に使用されます。

以下のコマンドは、targetfileの所有者とグループをreferencefileの所有者とグループと同じに変更します。

chown --reference=referencefile targetfile
ShellScript

以下では、a.pyの所有者とグループito:itoがrun.shにそのまま反映されたことが確認できます。

図4. Linuxコマンドchown: --referenceオプションで参照変更
図4. Linuxコマンドchown: –referenceオプションで参照変更

役に立つ活用方法

ユーザーアカウント変更後のファイル所有者変更

ユーザーアカウントを削除して新たに作成する場合、既存ファイルの所有者を新しいユーザーに変更する必要があります。その際にchownコマンドを使用すると便利です。

このコマンドは、/home/olduserディレクトリ内のすべてのファイルとディレクトリの所有者をnewuser、グループをnewgroupに変更します。

find /home/olduser -exec chown newuser:newgroup {} \;
ShellScript

ウェブサーバー環境設定

ウェブサーバーを設定する際、ウェブサーバー所有者(www-data)にファイル所有者を変更することが多いです。

このコマンドは、/var/www/htmlディレクトリとその下位のすべてのファイルとディレクトリの所有者をwww-dataに変更します。

chown -R www-data:www-data /var/www/html
ShellScript

注意事項

ルート権限

chownコマンドは所有権を変更するため、ルート(root)権限が必要です。したがって、コマンド実行時にsudoを使用することが一般的です。

sudo chown newuser filename
ShellScript

sudoコマンドを一緒に使用しない場合、以下のように「chown: changing ownership of ‘filename’: Operation not permitted」というメッセージに遭遇します。この場合、現在のユーザーitoにはrootユーザーおよびwww-dataグループを操作する権限がないため、sudoコマンドを一緒に使用して所有権を設定する必要があります。

図5. Linuxコマンドchownエラーメッセージ: 所有権変更権限がない場合
図5. Linuxコマンドchownエラーメッセージ: 所有権変更権限がない場合

所有者とグループの存在確認

変更しようとしている所有者とグループが実際にシステムに存在するか確認する必要があります。しかし、あまり心配する必要はありません。存在しないユーザーの場合、以下のように「chown: invalid user: ‘username’」というメッセージを通じて確認できます。

図6. Linuxコマンドchownエラーメッセージ: 存在しないユーザー名に権限を設定しようとする場合
図6. Linuxコマンドchownエラーメッセージ: 存在しないユーザー名に権限を設定しようとする場合

適切な所有権設定

不適切な所有者やグループに変更すると、ファイルアクセスに問題が発生する可能性があります。特にウェブサービスなどの場合、ウェブサーバーに特定のユーザーやグループを使用するようになっている場合があり、この場合、ファイルやディレクトリの所有権が正しく設定されていないと、ウェブページにアクセスできない場合があります。したがって、状況に応じてファイルやディレクトリの適切な所有権設定は重要です。

重要システムファイル変更注意

重要なシステムファイルの所有者を誤って変更すると、システムが正常に動作しなくなる可能性があります。特に、/etc/passwdや/etc/shadowのようなファイルは所有者変更に注意が必要です。

したがって、重要なシステムファイルは権限を維持する方が良いです。もし修正が必要な場合は、sudoコマンドを利用して編集する方が安全です。sudoコマンドを使用するのが面倒だからといって所有権を変更する行為は、システムのセキュリティを損なう可能性があります。

まとめ

Linuxシステムでファイルとディレクトリの所有者とグループを変更するchownコマンドは、システム管理において非常に重要なツールです。基本的な使用方法と主要オプションをよく理解して活用すれば、より効率的にシステムを管理することができます。ただし、所有者変更はシステム権限に影響を与える重要な作業であるため、常に注意深く使用する必要があります。

この投稿を通じてchownコマンドの使用方法を十分に理解し、実際の環境で有効に活用していただければ幸いです。追加で質問や助けが必要な場合は、いつでも質問してください。ありがとうございます。

リファレンス

関連ポスト

コメントする