\r\n\r\n
好みのスタイルのLinuxを見つけたものの、ターミナルコマンドやLinuxのファイルパーミッションについて何も知らないので、混乱しているのですね。
あるいは、Linuxサーバーでホストされているウェブサイトをお持ちで、コマンドラインの魔法でしか解決できないようなファイルパーミッションの問題が発生しているのかもしれません。
いずれにせよ、学ぶべき最も基本的なLinuxコマンドの1つは、chmodと呼ばれる小さいが強力なコマンドである。しかし、このコマンドが何をするのかを説明する前に、まずLinuxがどのようにファイルセキュリティを扱うのかを少し理解する必要があります。
Linux OSは実質的にUnix系システムであり(Understanding Linux and Unix)、Unix系システムはファイルのパーミッションを次のように扱っています。
各ファイルには所有者がいて、ファイルの「ユーザークラス」を決定する。また、各ファイルにはグループがあり、ファイルの「グループクラス」を決定する。所有者でなく、同じグループに属していないシステムユーザーは、別のユーザーとして識別されます。
クラスUnixシステム上のすべてのファイルには、これら3つのクラスに割り当てられたパーミッションがあり、これらのパーミッションによって、これらのクラスが与えられたファイルに対して実行できる操作が決定されます。
Unix系システムで利用できる操作は、read(ファイルを開いて内容を見る機能)、write(ファイルを開いて内容を変更する機能)、execute(ファイルを実行プログラムとして実行する機能)の3つです。
つまり、ドキュメントのパーミッションは、その有無を決定する。
Linuxのファイルパーミッションは、2つのフォーマットで表示することができます。
最初の形式はシンボリック表記と呼ばれ、10文字の文字列で、1文字がファイルの種類、次に9文字がファイルの読み取り(r)、書き込み(w)、実行(x)権限(所有者、グループ、その他の順)である。これが許されない場合は、ダッシュ(-)が使われる。
例えば、こんな感じです。
-rwxr-xr--これは、所有者には読み取り、書き込み、実行の権限があり、グループには読み取りと実行の権限があり、他の人には読み取り権限しかない、通常のファイルであることを意味します。
2つ目の形式は、数値表現と呼ばれ、3つの数値の文字列で、それぞれユーザー、グループ、その他の権限を表す。各数値は0から7まであり、各クラスのパーミッションを合計することで値が得られます。
つまり、各数値の意味は、最終的に
つまり、上の例(
-rwxr-xr--)は754と数値で表される。
要するに、Linuxのファイルパーミッションである。
Unix系システムでは、chmodは「change mode」の略で、ファイルの権限設定を手動で変更するためのシステムレベルのコマンドです。
Unix系システムのシステムレベルコマンドであるchownと混同しないように、chownは「所有者の変更」を意味し、ファイルの所有権を他のユーザーに割り当てることができます。" といった具合に、ファイルを別のグループに割り当てることができます。これを知っておくことは重要ですが、chmodほど一般的ではありません。
ファイルのパーミッションを644に設定し、オーナーだけがファイルにアクセスし変更でき、他の人はアクセスするだけで変更できず、オーナーであっても誰もファイルを実行できないようにします。柔軟性と安全性のバランスがとれており、一般に公開されるファイルには理想的な設定です。
ファイルパーミッションを755に設定すると、全員に実行権限があることを除けば、基本的に644と同じになります。ディレクトリへの変更には実行権限が必要なため、主に一般にアクセス可能なディレクトリに使用されます。
ファイルのパーミッションを555に設定し、システムのスーパーユーザー以外がファイルを変更できないようにします(Linuxのスーパーユーザーについて詳しくはこちらをご覧ください)。これは644ほど一般的に使用されていないが、読み取り専用に設定することで偶発的な変更や改ざんを防ぐことができるため、知っておくことが重要である。
ファイルのパーミッションを777に設定し、誰でもそのファイルに対してあらゆるアクションを実行できるようにします。これは、特にウェブサーバーでは、大きなセキュリティリスクです事実上、誰でもそのファイルにアクセスし、必要に応じて修正し、システム上で実行することができます。不正なユーザーが入手した場合の被害の可能性は想像に難くないでしょう。
chmodコマンドの書式は簡単です。
chmod [permissi***] [file]パーミッションは数値表記で表すことができ、全クラスに特定のパーミッションを割り当てる場合に最適な形式です。
chmod 644 example.txtパーミッションはシンボルで表現することもでき、特定のクラスのパーミッションだけを変更したい場合に便利です。
chmod u=rwx example.txtchmod g=rw example.txtchmod o=rw example.txt複数のクラスの権限を変更することができます。例えば、この例ではオーナーは読み取り/書き込み/実行に設定されていますが、グループと他のクラスは読み取り/実行に設定されています。
chmod u=rwx,g=rw,o=rw example.txt複数のクラスに同じ権限を割り当てる場合、それらを組み合わせることができます。
chmod u=rwx,go=rw example.txtしかし、特定の操作に対して特定のクラスの権限を追加または削除したい場合に、シンボリック表現を使用することの素晴らしさが明らかになります。
例えば、これはファイルの所有者に実行権限を追加するものである。
chmod u+x example.txtこれにより、他のユーザーに対する書き込み権限と実行権限が削除されます。
chmod o-wx example.txt最後に、特定のディレクトリ内のすべてのファイルとフォルダに特定のパーミッションを適用する (つまり再帰的 chmod) には、-R オプションを使用して、そのディレクトリを対象とします。
chmod -R 755 example_directorychmodコマンドは一見すると少しクレイジーに見えるかもしれませんが、実はとてもシンプルで完全に論理的なものです。上記が理解できれば、基本的にchmodはマスターしたも同然です
chmod、chown、chgrpなどのコマンドは、Linuxの氷山の一角に過ぎません。Linuxを初めてお使いになる方には、「Linux初心者のためのヒント」や「絶対に実行してはいけないLinuxコマンド」をご覧になることをお勧めします。
しかし、最も重要なことは、私たちの包括的なUbuntuとLinuxの初心者ガイドを見るのが賢明でしょう。