このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:ディレクトリのパーミッション

ディレクトリのパーミッション

 Linuxシステムでは、ファイルと同様にディレクトリにもパーミッション(アクセス権限)が設定されています。ディレクトリのパーミッションは、ディレクトリ内のファイルやサブディレクトリへのアクセス制御を行う上で非常に重要です。適切なパーミッション設定を行うことで、ユーザー間のセキュリティを確保し、データの保護や不正アクセスの防止につながります。

 ここでは、ディレクトリのパーミッションについて詳しく解説します。ファイルの場合とは異なるディレクトリ特有のパーミッションの意味や、実際の操作例を交えながら理解を深めていきます。

ディレクトリのパーミッションの確認

 ディレクトリのパーミッションを確認するには、ls コマンドに -l オプションと -d オプションを組み合わせて使用します。

  • -l:詳細情報を表示
  • -d:ディレクトリ自体の情報を表示(中身ではなくディレクトリそのもの)

例:ディレクトリ work のパーミッションを表示

user01@ubuntu:~$ ls -ld work
drwxrwxr-x 2 user01 user01 4096 10月  4 00:50 work

ディレクトリのパーミッションの意味

 ディレクトリのパーミッション表示は、ファイルと同じく「r」「w」「x」という記号を使用しますが、それぞれの記号が示す意味はファイルの場合と異なります。

パーミッションの記号とその意味

記号意味
r読み取り:ディレクトリ内のファイルやサブディレクトリの一覧を取得できる。
w書き込み:ディレクトリ内にファイルやディレクトリの作成・削除ができる。
x実行:ディレクトリにアクセスして、ディレクトリ内を移動できる(cd コマンドなど)。
パーミッションの記号とその意味

パーミッションの構成

ディレクトリのパーミッションも、ファイルと同様に以下のように区分されます。

例:drwxrwxr-x

ユーザー種別パーミッション
オーナーrwx
グループrwx
その他のユーザーr-x
パーミッションの構成
  • オーナー:読み取り(r)、書き込み(w)、実行(x
  • グループ:読み取り(r)、書き込み(w)、実行(x
  • その他のユーザー:読み取り(r)、実行(x)、書き込みは不可(-

パーミッションごとの動作例

読み取り(r)権限

  • 意味:ディレクトリ内のファイルやサブディレクトリの一覧を取得できる。
  • ない場合ls コマンドでエラーが発生し、ファイル一覧を表示できない。

例:読み取り権限がないディレクトリ

user01@ubuntu:~$ mkdir work1
user01@ubuntu:~$ chmod 331 work1
user01@ubuntu:~$ ls -ld work1
d-wx-wx--x 2 user01 user01 4096 10月 17 23:38 work1
user01@ubuntu:~$ ls work1
ls: ディレクトリ 'work1' を開くことが出来ません: 許可がありません
  • chmod 331 でディレクトリ work1 の読み取り権限を外しています。
  • ls work1 を実行すると、許可がありませんと表示され、ファイル一覧が取得できません。

書き込み(w)権限

  • 意味:ディレクトリ内にファイルやサブディレクトリの作成・削除ができる。
  • 注意点:ファイル自体のパーミッションに関わらず、ディレクトリの書き込み権限があればファイルの削除が可能。

例:書き込み不可のファイルを削除

user01@ubuntu:~$ touch work1/readonly.txt
user01@ubuntu:~$ chmod 444 work1/readonly.txt
user01@ubuntu:~$ ls -l work1/readonly.txt
-r--r--r-- 1 user01 user01 0 10月 17 23:52 work1/readonly.txt
user01@ubuntu:~$ rm work1/readonly.txt
rm: 書き込み保護されたファイル 通常の空ファイル 'work1/readonly.txt' を削除しますか? y
  • ファイル readonly.txt は書き込み不可(444)に設定。
  • しかし、ディレクトリ work1 に書き込み権限があるため、rm コマンドで削除が可能。

実行(x)権限

  • 意味:ディレクトリにアクセスして、中に入ることができる(cd コマンド)。
  • ない場合:ディレクトリに移動できず、中のファイルにもアクセスできない。

例:実行権限がないディレクトリ

user01@ubuntu:~$ mkdir work2
user01@ubuntu:~$ chmod 664 work2
user01@ubuntu:~$ cd work2
bash: cd: work2: 許可がありません
  • chmod 664 でディレクトリ work2 の実行権限を外しています。
  • cd work2 を実行すると、許可がありませんと表示され、ディレクトリに入れません。

ディレクトリのパーミッション設定の例

他のユーザーにも閲覧させたい場合

パーミッションrwxr-xr-x755

設定コンド
chmod 755 ディレクトリ名
効果
  • オーナーはすべての操作が可能。
  • グループとその他のユーザーは、読み取りと実行が可能(ディレクトリ内を閲覧できる)。
  • 他のユーザーはファイルの作成や削除はできない。

他のユーザーに閲覧させたくない場合

パーミッションrwx------700

設定コマンド
chmod 700 ディレクトリ名
効果
  • オーナーのみがディレクトリにアクセス可能。
  • 他のユーザーはディレクトリの存在や中身を一切知ることができない。

不要なディレクトリとファイルの削除

作業が終わったら、不要なディレクトリやファイルは削除しておきましょう。

例:work1work2 の削除

rm -r コマンドでディレクトリを再帰的に削除します。

user01@ubuntu:~$ rm -r work1 work2
user01@ubuntu:~$ ls
snap  ダウンロード  デスクトップ  ビデオ    ミュージック
work  テンプレート  ドキュメント  ピクチャ  公開

まとめ

  • ディレクトリのパーミッションは、ファイルとは異なる意味を持つ。
    読み取り(r:ディレクトリ内のファイル一覧を取得できる。
    書き込み(w:ディレクトリ内のファイルやディレクトリの作成・削除ができる。
    実行(x:ディレクトリにアクセスして中に入ることができる。
  • 重要なポイント
    ファイルの削除は、ファイルのパーミッションではなく、ディレクトリの書き込み権限に依存する
    ディレクトリの適切なパーミッション設定により、セキュリティを確保しつつ、必要なアクセスを提供できる。
  • 推奨されるパーミッション設定
    公開ディレクトリ755rwxr-xr-x
    プライベートディレクトリ700rwx------

 ディレクトリのパーミッションを正しく理解し、適切に設定することで、システムの安全性とデータの保護を実現できます。特にマルチユーザー環境では、パーミッション設定は重要なセキュリティ対策の一つとなります。