Skip to content

Permission#

Linuxのファイルシステムには、ファイルやディレクトリのアクセス権限を制御するための「パーミッション」(許可) システムがあります。 このパーミッションは、ユーザーがファイルやディレクトリに対してどのような操作を許可されているかを示しています。

  1. パーミッションの種類
  2. r: 読み取り権限(read)
  3. w: 書き込み権限(write)
  4. x: 実行権限(execute)

  5. 主要な対象カテゴリ

  6. u: ユーザー(file owner)
  7. g: グループ
  8. o: その他(other users)
  9. a: 全員(user, group, others)

  10. パーミッションの表示と解釈

ls -l コマンドを使用すると、ファイルやディレクトリのパーミッションを以下のような形式で確認できます。

-rwxr-xr--
この例では: - 最初の文字はファイルタイプ(- は通常のファイル、d はディレクトリ) - 次の3文字(rwx)はユーザーのパーミッション - 中央の3文字(r-x)はグループのパーミッション - 最後の3文字(r--)はその他のユーザーのパーミッションを示しています。

  1. パーミッションの変更

chmod コマンドを使用してパーミッションを変更することができます。

  • シンボリックモードでの変更

    chmod u+x file.txt
    
    これにより、ユーザーに対してファイルの実行権限が追加されます。

  • 数値モードでの変更

    chmod 755 file.txt
    
    ここで、7 はユーザーに rwx の権限を、5r-x の権限をそれぞれ与えます。

  • パーミッションのデフォルト設定

umask コマンドは、新しく作成されるファイルやディレクトリのデフォルトのパーミッションを設定するためのマスクを表示・設定します。

この概要を元に、Linuxのパーミッションについての基本的な理解を深めることができるでしょう。更なる詳細や特定のケースに関しては、適宜調査や質問をしてみてください。

ls コマンドの表示について#

ls はLinuxおよびUNIX系のオペレーティングシステムで利用されるコマンドの一つで、ディレクトリの内容をリスト表示するために使われます。

以下、ls -l の出力を例に

-rw-r--r-- 1 user group 12345 Jan 10 12:34 example.txt

この出力の各部分の解説:

  1. -rw-r--r--: ファイルのパーミッション。
  2. 最初の文字: ファイルの種類。
    • -: 通常のファイル。
    • d: ディレクトリ。
    • l: シンボリックリンク。
  3. 次の3文字 (rw-): ファイルの所有者のパーミッション。
    • r: 読み取り可。
    • w: 書き込み可。
    • x: 実行可。
  4. 続く3文字 (r--): グループのパーミッション。
  5. 最後の3文字 (r--): その他のユーザーのパーミッション。

  6. 1: ハードリンクの数。ディレクトリの場合、この数字はそのディレクトリ内の項目数+2になります(ディレクトリ自身と親ディレクトリのエントリもカウントされるため)。

  7. user: ファイルの所有者のユーザー名。

  8. group: ファイルの所有者のグループ名。

  9. 12345: ファイルのサイズ(バイト単位)。

  10. Jan 10 12:34: ファイルが最後に修正された日時。

  11. example.txt: ファイル名。

この情報を用いて、ls -l コマンドの出力を解釈することができます。

Note

ls -l で表示される出力の最初の文字は、対象のアイテムの種類を示しています。以下はそれぞれの文字が示す内容になります: 1. l (lrwxrwxrwx): この文字は、対象がシンボリックリンク (symbolic link) であることを示しています。シンボリックリンクは、別のファイルやディレクトリへの参照として機能します。 実際のデータは持っておらず、他の場所を指しています。実際の位置へのパスは、ls -l コマンドの出力の最後に示されます。 例えば、以下のような出力があった場合:

lrwxrwxrwx 1 user group 7 Jan 10 10:30 linkname -> filename
この出力は、linknamefilename という名前のファイルを指すシンボリックリンクであることを示しています。 2. d (drwxrwxrwx): この文字は、対象がディレクトリ (directory) であることを示しています。ディレクトリは、他のファイルやディレクトリを含むことができるフォルダのようなものです。 例えば、以下のような出力があった場合:
drwxrwxrwx 2 user group 4096 Jan 10 10:30 dirname
この出力は、dirname という名前のディレクトリが存在し、そのディレクトリのパーミッションが rwxrwxrwx であることを示しています。 これらの文字は、Linux や Unix のファイルシステムにおけるアイテムの種類を識別するためのもので、それ以外にも - (通常のファイル) や b (ブロックデバイス)、c (キャラクターデバイス) など、さまざまな種類を示す文字があります。

chmod コマンド#

chmod コマンドを用いてファイルやディレクトリのパーミッションを変更する方法について、 数値モードとシンボリックモードの両方を詳しく説明いたします。

  1. 基本

    • パーミッションは3つのカテゴリーに分けられます:ユーザー (u)、グループ (g)、その他 (o)。
    • これらのパーミッションは、読み取り (r)、書き込み (w)、実行 (x) の3つのタイプがあります。
  2. 数値モード

    • 読み取り (r) = 4
    • 書き込み (w) = 2
    • 実行 (x) = 1
    • これらの数字を組み合わせることで、特定のパーミッションを示す3桁の数字を作成することができます。

    例: - 777 : -rwxrwxrwx。全てのユーザーに全ての権限を付与:。 - 755 : -rwxr-xr-x。ユーザーは全ての権限、グループとその他は読み取りと実行権限のみ。 - 711 : -rwxr-xr-x。全てのユーザーに読み取り・書き込み権限を付与し、ユーザーのみに実行権限も付与: - 700 : -rwx------。ユーザーのみに全ての権限を付与し、グループとその他のユーザーにはいかなる権限も付与しない: - 644 : -rw-r--r--。ユーザーは読み取りと書き込み、グループとその他は読み取りのみ。

  3. シンボリックモード

    • ユーザー (u)、グループ (g)、その他 (o)、全て (a) に対して、追加 (+)、削除 (-)、設定 (=) のアクションを用いてパーミッションを変更します。

    指定されたコマンドを用いて行われるパーミッションの変更を、具体的なパーミッション表示と共に以下に示します。

    1. ユーザーに実行権限を追加:

      chmod u+x filename
      
      前提として、もとのファイルのパーミッションが -rw-r--r-- であった場合、変更後の表示は以下のようになります:
      -rwxr--r--
      

    2. グループの書き込み権限を削除:

      chmod g-w filename
      
      前提として、もとのファイルのパーミッションが -rwxrw-rw- であった場合、変更後の表示は以下のようになります:
      -rwxr--rw-
      

    3. その他のユーザーの全ての権限を削除:

      chmod o= filename
      
      前提として、もとのファイルのパーミッションが -rwxrwxrwx であった場合、変更後の表示は以下のようになります:
      -rwxrwx---
      

    4. 全てのユーザーに読み取りと実行権限を設定(書き込み権限は設定しない):

      chmod a=rx filename
      
      このコマンドを実行した後のパーミッション表示は以下のようになります:
      -r-xr-xr-x
      

    各コマンドの前提として示した元のパーミッションは、説明のための仮のものです。実際には、もとのファイルやディレクトリのパーミッションに基づいて結果が変わります。

  4. 再帰的にパーミッションを変更

    • ディレクトリとその中の全てのファイルやサブディレクトリのパーミッションを変更するには、-R オプションを使用します。

    例:

    chmod -R 755 directoryname
    

これらの方法を理解すれば、chmod コマンドを用いてLinuxやUNIX系のシステムでファイルやディレクトリのパーミッションを柔軟に管理することができます。

chown コマンド#

chown はUnixおよびLinuxベースのオペレーティングシステムにおけるコマンドの一つで、ファイルやディレクトリのオーナー(所有者)やグループを変更するために使用されます。このコマンドの名前は "change owner" から来ています。

基本的な使い方:#

chown [オプション] [新しいオーナー][:新しいグループ] ファイルやディレクトリのパス
  • 新しいオーナー: ファイルやディレクトリの新しい所有者のユーザー名。
  • 新しいグループ: ファイルやディレクトリの新しい所属グループ名。

例:#

  1. ファイル example.txt のオーナーを john に変更する:
chown john example.txt
  1. ファイル example.txt のオーナーを john に、グループを staff に変更する:
chown john:staff example.txt

よく使われるオプション:#

  • -R: 再帰的にディレクトリとその内容を変更します。
  • -h: シンボリックリンク自体のオーナーシップを変更します。通常、シンボリックリンクを指定した場合、実際のファイルまたはディレクトリのオーナーシップが変更されます。
  • --from=CURRENT_OWNER:CURRENT_GROUP: 現在のオーナー/グループがこの指定と一致する場合にのみ、オーナーシップを変更します。

注意:#

  • chown コマンドは、rootユーザーやそのコマンドを実行する権限を持つユーザーのみが実行できます。
  • オーナーシップの変更は、システムのセキュリティやファイルアクセスの権限に影響を与えるため、注意して使用する必要があります。

最後に、chown コマンドの詳細やその他のオプションについては、man chown または chown --help コマンドを使用してマニュアルを参照することができます。