Linuxファイル権限を完全マスター!chmod 777の意味と安全な設定方法
Linuxを使い始めたばかりの方なら、早い段階で「chmod」コマンドに出会ったことがあるでしょう。「ファイルを特定のフォルダに移動するにはchmod 777を実行して」とアドバイスされて、実際に試したらうまくいった——そんな経験はありませんか?では、chmodコマンドは一体何をするもので、あの数字にはどんな意味があるのでしょうか。
この記事では、Linuxのファイル権限について知っておくべきことをすべて解説します。chmodコマンドや、アクセスレベルに対応する数字を正しく理解するために、この知識は欠かせません。Ubuntu、Fedora、あるいはよりニッチなディストリビューションをお使いの場合でも、chmodコマンドで777を設定してよい場面と、別の設定を使うべき場面を見分けられるようになりましょう。
Linuxにおけるファイル権限の基本
Linuxでは、オペレーティングシステムがファイル権限・所有権・属性に基づいて、誰が特定のファイルにアクセスできるかを判断します。システムでは、所有者や管理者が各種ファイルやディレクトリへのアクセス制限を設定できます。信頼できるユーザーやプログラムだけにアクセスを許可することで、システム全体のセキュリティを高めることが可能です。
ユーザークラスを理解する
すべてのファイルとディレクトリには、必ず特定のユーザーとグループが割り当てられています。つまり、アクセスレベルを設定できる相手は3つのカテゴリーに分類されます。
- 所有者(Owner)
- グループ(Group)
- その他(Others)
Ubuntuでは、任意のディレクトリを右クリックして「プロパティ」を選択し、「アクセス権」タブを開くと、これらの分類を視覚的に確認できます。
所有者は最も強い権限を持つ存在です。通常、すべてのファイルとディレクトリへのフルアクセス権を持ち、他のユーザーのファイル権限を変更することもできます。
グループは、所有者から一定レベルのアクセス権を与えられた複数のユーザーで構成されます。たとえば、あるグループのメンバーにはファイルの編集を禁止しつつ、閲覧のみを許可するといった細かい設定が可能です。
その他は、上記2つのカテゴリーに該当しないゲストユーザーを指します。デフォルトではアクセスは制限されており、ゲストに何を許可するかは所有者が決定します。
ファイル権限の3つのレベル
所有者は、自分のファイルやディレクトリに対して次の3つのアクセスレベルを割り当てられます。
- 読み取り(Read):ファイルやディレクトリへの限定的なアクセス権です。ファイルの閲覧やディレクトリ内容の表示のみ可能で、ファイルの編集や、ディレクトリへのファイル追加・削除はできません。
- 書き込み(Write):ファイルの読み取りと編集が可能になります。ディレクトリにこの権限を与えると、ファイルの追加や削除もできるようになります。
- 実行(Execute):ファイルの実行時に必要となる権限です。実行権限がないと、スクリプトやプログラムを起動できません。
これらのユーザークラスと権限レベルを組み合わせることで、特定のユーザーがファイルやディレクトリに持てるアクセス範囲を柔軟に制御できます。
権限の記号と数字の読み方
ファイル権限は、数値形式またはシンボル形式で表現されます。権限の変更にはどちらの形式も使えますが、最も手軽なのは数字による方法です。ただし、記号の意味も理解しておくと便利です。まずは、権限を表す記号から見ていきましょう。
ファイル権限の記号
ターミナルで次のコマンドを入力すると、特定のディレクトリ内のすべてのコンテンツに対する権限を一覧表示できます。
ls -l
cdコマンドを使えば、任意のディレクトリへ移動できます。Linux初心者の方は、基本コマンドをまとめた入門記事も併せて参考にしてください。
この例では、ディレクトリの中に2つのサブディレクトリと1つのファイルが含まれています。権限は先頭1文字+9個の記号で表され、理解しやすいように3文字ずつのグループに分割できます。Booksディレクトリの最初の権限セットを見てみましょう。
drwxrwxr-x
読みやすく分割すると次のようになります。
d rwx rwx r-x
最初の記号dはディレクトリ(directory)を意味します。ファイルの場合は、Outline.docxの3番目の権限セットのように、ダッシュ(-)が表示されます。
その後に続くのが3組の記号です。1組目は所有者の権限、2組目はグループの権限、3組目はその他のユーザーの権限を表します。
それぞれの3文字セットは、左から順に「読み取り・書き込み・実行」を意味します。つまりこの例では、所有者はTestディレクトリ内のすべてのファイルとディレクトリに対して、読み取り・書き込み・実行のすべての権限を持っていることになります。以下に視覚的なイメージを示します。
r、w、xの代わりにダッシュ(-)が表示されている場合は、その権限が付与されていないことを意味します。
ファイル権限の数字
数値形式での権限指定はとてもシンプルです。権限コードは基本的に3桁の数字で構成されます。
- 1桁目:ファイルの所有者
- 2桁目:ファイルのグループ
- 3桁目:その他の全ユーザー
各桁の数字は0〜7の範囲で、次のような意味を持ちます。
- 4 = 読み取り
- 2 = 書き込み
- 1 = 実行
- 0 = 権限なし
各クラスの権限の数字は、これらの値を合計して求めます。つまり、各クラスの数字は4・2・1・0の組み合わせの合計になります。権限の組み合わせ一覧は以下の通りです。
- 0(0 + 0 + 0)= 権限なし
- 1(0 + 0 + 1)= 実行のみ
- 2(0 + 2 + 0)= 書き込みのみ
- 3(0 + 2 + 1)= 書き込みと実行
- 4(4 + 0 + 0)= 読み取りのみ
- 5(4 + 0 + 1)= 読み取りと実行
- 6(4 + 2 + 0)= 読み取りと書き込み
- 7(4 + 2 + 1)= すべての権限
たとえば「644」という権限は、ファイルの所有者には読み取りと書き込みの権限があり、グループとその他のユーザーには読み取り権限のみが与えられていることを意味します。数値形式での権限設定に必要なのは、簡単な足し算だけです。
777権限とは?その危険性
お気づきかもしれませんが、「777」の権限は3つのユーザークラスすべてに、読み取り・書き込み・実行の権限を与えます。つまり、システムにアクセスできる人なら誰でも、ファイルの閲覧・変更・実行が自由に行える状態になるのです。すべてのユーザーを完全に信頼でき、セキュリティ侵害を心配する必要がない場合にのみ使用しましょう。
777権限は手軽なためよく使われがちですが、使用は最小限にとどめるべきです。むしろ、セキュリティリスクが大きすぎるため、使用しないことを強くおすすめします。不正なユーザーによってシステムに侵入されたり、Webサイトを改ざんされてマルウェアを配布する踏み台にされたりする恐れがあります。
代わりに「755」の権限を設定しましょう。こうすることで、所有者であるあなたはフルアクセス権を維持しつつ、その他のユーザーは読み取りと実行のみ可能になり、あなたの許可なくファイルを変更できなくなります。
chmodコマンドでファイル権限を変更する方法
ファイル権限は、chmodコマンドで変更できます。オプションを付けない最も基本的な使い方は次の通りです。
chmod 777 ファイル名
「ファイル名」の部分を、対象のファイル名とそのパスに置き換えて実行してください。
なお、ファイル権限を変更できるのは、root権限を持つユーザー、ファイルの所有者、sudo権限を持つユーザーだけである点に注意しましょう。
-
HP Smartアプリで「プリンターの状態が不明」と表示される場合の対処法:ステップバイステップガイド
HP Smartアプリに「プリンターの状態が不明(Printer status unknown)」というエラーが表示される場合、アプリがプリンターと正常に通信できていないことを意味します。このエラーは、プリンターの接続状態、ファームウェア、ドライバーの問題などが原因で発生することが多く、その他にもさまざまな要因が考えられます。 この記事では、Windows版HP Smartアプリで「プリンターの状態が不明」エラーを解決するための7つの方法を詳しく解説します。 作業を始める前に、お使いのプリンターがHP Smartアプリに対応しているかご確認ください。2009年以前に製造されたほとんどのワイヤレ
-
【PC・Xbox・PS4・PS5対応】CoD Warzoneのボイスチャットが使えない問題を解決する8つの対処法
無料でプレイできる人気バトルロイヤルゲーム「Call of Duty: Warzone」には、フレンド同士で会話できるボイスチャット機能が標準搭載されています。しかし、多くのプレイヤーから「Warzoneのボイスチャットが突然使えなくなった」という報告が寄せられています。もしあなたも同じ問題に直面しているなら、心配はいりません。この記事では、実際に効果が確認された8つの解決策を紹介します。 これらの解決策はPS4、PS5、Xbox One、PCのすべてのプラットフォームに対応しています。順番に試して、ボイスチャットの問題を解消しましょう。 解決策1:マイクと接続状況を確認する ボイスチャットが