Linux パーミッションの基本

Linux パーミッションの基本

PermissionsConcept

1. パーミッション(所有権)

Linuxではファイル(フォルダ)毎に対して3つの所有権があります。

  • owner: とは、ファイル(フォルダ)を作成した本人しか持っていない所有権で、他のユーザーに影響は与えられません。
  • group: とは、ファイル(フォルダ)に付与されているグループユーザーの所有権です。
  • others: 上記のグループ以外のユーザーが持っている所有権です。

ただし、例外もあります。それは root というスーパーユーザーです。
rootというスーパーユーザーだけは、上記3種類の所有権は関係なく、
システムにある全てのファイル(フォルダ)を管理することができます。

2. パーミッション(実行権)

ファイル毎に3つのパーミッションタイプがあります。

  • read: ユーザーがファイルの内容を表示することができます。
  • write: ユーザーがファイルの内容を書き込むことができます。
  • *execute *: ユーザーがファイルを実行することができます。
パーミッションタイプネーム 記法 8進形式 説明
Read r 4 ファイル内容読む
Write w 2 ファイル内容書く
Execute x 1 ファイル内容実施

3. システムパーミッショングループの確認

ファイル(フォルダ)のパーミッショングループを確認したい時は、下記のコマンドを実行します。

ls -l path/to/file 
ls -la path/to/file (隠しファイルを表示するため)

上記コマンドの実行結果:
ls-la-output

  • 最初の文字はファイルのタイプを示す為の特別なフラグです。ファイルの場合は - 、フォルダの場合は d 、特殊ファイルの場合は c 、シンボリックリンクの場合は l です。
  • 連続する3つの文字、上記の例なら「rwx」、はファイルに対して owner
    パーミッションがあります。
  • 連続する3つの文字、上記の例なら「rwx」、はファイルに対して group
    パーミッションがあります。
  • 連続する3つの文字、上記の例なら「r--」、はファイルに対して others
    パーミッションがあります。
  • 数字はファイルとのハードリンク数を表します。
  • 最後に表示されている文字は、 ownergroup の名前です。この場合、ownerネーム は「apache」、group ネームも「apache」です。

4. パーミッション変更

Linuxでは、自分が持っているファイルを他のユーザーにシェアできません。デフォルトのパーミッション設定がそれを許していないからです。
その場合はパーミッションを変更することで解決します。パーミッションを変更することはあまり難しい事ではありません。

a. 記法

グループパーミッション

グループパーミッション 記法 説明
Owner u 所持者(一人)
Group g 所持者(グループ)
Other o 他のユーザーと他のグループ
All a 全てのユーザーと全てのグループ(ugoみたい)

オペレーター

オペレーター 記法 説明
Add + 権限追加
Remove - 権限削除
Assign = 権限を示す

b. chmod を利用する

chmod (change mode) は ファイルやディレクトリのパーミッションなどを変更するために使われるコマンドです。
chmod でパーミッションを変更するためには、2つの方法があります。それは「symbolic」と「octal number」です。

chmod [options] [mode] file

option の値は:

  • -R : サブフォルダにも設定を反映させる
  • -f : エラーエッセージを出力しない
  • -v : 処理した内容を出力する

以下、変更方法を説明します。。

chmod a+r comments.txt

説明: 全てのユーザーと全てのグループに読み取り権限を追加します。

chmod u=rw,g=r,o= plan.sh

説明: 所持者(一人)には読み取り・書き込み権限を、所持者(グループ)には読み取り権限を追加して、他のユーザーと他のグループには何も追加しません。

chmod -R 775 logs

説明: 所持者(一人)と所持者(グループ)に全ての権限を追加し、他のユーザーは読み取りと・実行権限しか持っていません。

c. chownchgrp を利用する

chown (change ownership): ファイルの所有権を変更します。シンタックスは:

chown [options] [newowner:newgroup] file

Options の値は chmod を含めて、他の選択肢もあります。例えば、 -h, --from, --reference ですが、今回は割愛します。
今回は新しく所有権を付与する方法で説明します。ファイルの所有権の変更方法は5つあります。:

フォーム 説明
user 新しい所有者(ユーザー)のネームです。「:」と新グループネームは記載しません。つまり、所有者(グループ)は変更されていません。
user:group 新しい所有者(ユーザー)と新しい所有者(グループ)を記載します。「:」で区別します。スペースは不要です。
:group 新しい所有者(グループ)を「:」の後ろに記載します。
user: 所有者(グループ)が記載されていません、新所有者(グループ)は現在ログインしているユーザーのグループに変更されます。
: 新しい所有者(ユーザー&グループ)は何も記載されていません。つまり、何も変更されません

注意:所有者本人が root である場合、もしくは sudo コマンドを利用する場合以外は、権限を変更することは不可能です。
所有者(グループ)である場合は、自分が持っているファイルに対しての権限を変更することは可能です。
その為、 chown のコマンドを実施する時、super admin (つまり、rootユーザー)でログインしておきましょう。。

chgrp 所有者(グループ)の権利を変更します。シンタックスは:

chgrp [options] group file

先程のコマンドシンタックスに比べるとこのコマンドは簡単だと思いますので、説明は割愛します。

今回はLinuxパーミッションの基本を説明しました。
少しでも皆様の参考になると幸いです。