このページで解説している内容は、以下の 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-x
(755
)
設定コマンド
chmod 755 ディレクトリ名
効果
- オーナーはすべての操作が可能。
- グループとその他のユーザーは、読み取りと実行が可能(ディレクトリ内を閲覧できる)。
- 他のユーザーはファイルの作成や削除はできない。
他のユーザーに閲覧させたくない場合
パーミッション:rwx------
(700
)
設定コマンド
chmod 700 ディレクトリ名
効果
- オーナーのみがディレクトリにアクセス可能。
- 他のユーザーはディレクトリの存在や中身を一切知ることができない。
不要なディレクトリとファイルの削除
作業が終わったら、不要なディレクトリやファイルは削除しておきましょう。
例:work1
と work2
の削除
rm -r
コマンドでディレクトリを再帰的に削除します。
user01@ubuntu:~$ rm -r work1 work2
user01@ubuntu:~$ ls
snap ダウンロード デスクトップ ビデオ ミュージック
work テンプレート ドキュメント ピクチャ 公開
まとめ
- ディレクトリのパーミッションは、ファイルとは異なる意味を持つ。
読み取り(r
):ディレクトリ内のファイル一覧を取得できる。
書き込み(w
):ディレクトリ内のファイルやディレクトリの作成・削除ができる。
実行(x
):ディレクトリにアクセスして中に入ることができる。 - 重要なポイント
ファイルの削除は、ファイルのパーミッションではなく、ディレクトリの書き込み権限に依存する。
ディレクトリの適切なパーミッション設定により、セキュリティを確保しつつ、必要なアクセスを提供できる。 - 推奨されるパーミッション設定
公開ディレクトリ:755
(rwxr-xr-x
)
プライベートディレクトリ:700
(rwx------
)
ディレクトリのパーミッションを正しく理解し、適切に設定することで、システムの安全性とデータの保護を実現できます。特にマルチユーザー環境では、パーミッション設定は重要なセキュリティ対策の一つとなります。