find -permオプションの使い方を完全解説!初心者でもできるパーミッション検索
生徒
「Linuxで、特定のアクセス権(パーミッション)を持ったファイルだけを探すことってできますか?」
先生
「できるよ!そのときはfindコマンドの-permオプションを使うと便利だよ。」
生徒
「パーミッションって何ですか?なんだか難しそうです…」
先生
「大丈夫、順番にゆっくり説明していくから、安心してね!」
1. パーミッションとは?
Linuxにおけるパーミッション(Permission)とは、ファイルやディレクトリに対して「誰が」「どのような操作をできるか」を定めた利用権限のことです。パソコンの中にある大切な書類を、勝手に見られたり書き換えられたりしないための「鍵」のような役割を果たします。
この権限は、以下の3種類のユーザー層に対して個別に設定されます。
- 所有者(Owner): そのファイルを作成した本人。
- グループ(Group): 同じプロジェクトチームなど、特定の仲間の集まり。
- その他(Others): 所有者でもグループでもない、第三者のユーザー全員。
さらに、それぞれのユーザーが「読み取り(r)」「書き込み(w)」「実行(x)」の3つのアクションを許可されているかを確認します。例えば、料理のレシピ本に例えると以下のようになります。
- 読み取り(r): 本の内容を読むことができる(ファイルの中身を見る)。
- 書き込み(w): 本にメモを書き込んだりページを破いたりできる(ファイルの上書きや削除)。
- 実行(x): レシピ通りに料理を作る(プログラムやスクリプトを動かす)。
実際のコマンド画面で、ファイルにどのような権限がついているかを確認してみましょう。プログラミングが初めての方でも、ls -lというコマンドを打つだけで簡単にチェックできます。
ls -l
-rwxr-xr-- 1 user1 staff 1024 Feb 4 09:00 sample.txt
左端に表示された-rwxr-xr--という文字列がパーミッションの正体です。この見方をマスターすれば、Linuxのセキュリティ管理の第一歩は完璧です。次の章では、これらを検索するための具体的な方法を解説します。
2. find -permオプションとは?
Linuxを操作していると、「特定の権限(パーミッション)がついたファイルだけをまとめて探し出したい」という場面がよくあります。そんな時に役立つのが、findコマンドの-permオプションです。permは「Permission(許可)」の略称で、ファイルのアクセス権限を検索条件として指定できます。
例えば、セキュリティ対策として「誰でも書き換え可能な危ないファイルがないか確認したい」場合や、「実行権限のあるスクリプトファイルだけを一覧表示したい」といったケースで非常に重宝します。初心者の方は、まず「ファイルにつけられた鍵(権限)の種類をヒントに、中身を探し出す虫眼鏡のような機能」だとイメージしてみましょう。
まずは、簡単な実行例を見てみましょう。カレントディレクトリ(現在のフォルダ)から、特定のパーミッションを持つファイルを探す際の基本形は以下の通りです。
find . -perm 644
./document.txt
./memo.md
このコマンドは、「所有者は読み書きができるが、他の人は読むことしかできないファイル(644)」をピンポイントで見つけ出しています。このように、数値を使って条件を指定するのが-permオプションの最も基本的な使い方です。
3. パーミッションの表記方法
find -permを使いこなすために、まずはパーミッションの計算方法をマスターしましょう。Linuxでは、「読み取り」「書き込み」「実行」の3つの権限を、以下の数値の組み合わせ(足し算)で表現します。これを「8進数表記」と呼びます。
| 権限の種類 | 記号 | 数値 |
|---|---|---|
| 読み取り(Read) | r | 4 |
| 書き込み(Write) | w | 2 |
| 実行(Execute) | x | 1 |
| 権限なし | - | 0 |
この数値を「所有者」「グループ」「その他」の3つのグループに対して合計したものが、よく目にする3桁の数字(例:755や644)になります。
- 所有者(7): 4(r) + 2(w) + 1(x) = 7 (全部できる)
- グループ(5): 4(r) + 0(-) + 1(x) = 5 (読みと実行ができる)
- その他(5): 4(r) + 0(-) + 1(x) = 5 (読みと実行ができる)
例えば、プログラミング未経験の方がよく使う「読み書きはできるけど、実行はさせない」という設定(644)を ls -l コマンドで確認すると、次のように表示されます。
ls -l my_memo.txt
-rw-r--r-- 1 user1 user1 1024 Feb 4 09:00 my_memo.txt
左側の rw-r--r-- を数値に変換してみましょう。最初の3文字 rw- は 4+2+0=6、次の r-- は 4+0+0=4、最後の r-- も 4+0+0=4 となり、合わせて 644 となります。このように、記号を数字に置き換える感覚を掴むのが、SEOに強いディレクトリ構成やサーバー管理の第一歩です。
4. find -permオプションの使い方(基本)
find -permオプションの最も基本的な使い方は、特定の数値(8進数)を指定して、その権限と「完全に一致する」ファイルやディレクトリを探し出す方法です。
例えば、セキュリティ上の理由で「誰でも読み書きや実行ができてしまう設定(777)」のファイルを見つけ出したいときは、以下のように入力します。これは、鍵が完全にかかっていない「開けっ放しのドア」を探すようなイメージです。
find /path/to/dir -perm 0777
/path/to/dir/public.sh
/path/to/dir/tmp_folder
数値の先頭についている0は、これが「8進数」によるパーミッション指定であることをシステムに伝えるための記号です。一般的に3桁(777など)で指定しても動作しますが、4桁(0777)で書くのがより正確な作法とされています。
初心者向けのポイント
この基本形式では、指定した数値と1ビットでも狂いがあると検索結果に表示されません。例えば「777」で探した場合、少しだけ権限が絞られた「755」のファイルなどは表示されないのが特徴です。まずはこの「完全一致検索」をマスターして、特定の権限を持つファイルをピンポイントで特定できるようになりましょう。
プログラミング未経験の方は、まず自分のホームディレクトリなどで、よく使われる「644」や「755」といった数値を使って、実際にどのようなファイルがヒットするか試してみるのが上達の近道です。
5. 一部のパーミッションだけを検索するには?(ハイフン指定)
これまでは「755」や「644」など、指定した数値と完全に一致するファイルを探す方法を解説しました。しかし、実務では「少なくとも実行権限がついているファイルだけを探したい」「所有者に書き込み権限があるものだけをリストアップしたい」といった、一部の条件さえ満たせばOKというケースが多々あります。
そのような柔軟な検索を行いたい場合は、数値の先頭にハイフン(-)を付けます。これを使うことで、「指定したビットがすべて含まれている」ファイルを検索できるようになります。
例:自分(所有者)が実行できるファイル(100)をすべて探す
「700(読み書き実行)」でも「500(読み実行)」でも、とにかく自分が実行できる(x=1)ファイルを探したい場合の例です。
find . -perm -100
./script.sh
./setup.bin
./tools/auto_run.py
この場合、パーミッションが「755」や「700」のファイルも、「100」という条件(所有者の実行権限)を満たしているため、検索結果に表示されます。
さらに、複数の権限を組み合わせて「最低限これだけは持っている」という条件指定も可能です。初心者の方は、まず「特定の権限を持っているファイルだけをざっくり集めるためのフィルタ」だと考えると分かりやすいでしょう。
例:自分(所有者)とグループの両方に、読み取り(4)と書き込み(2)の権限(合計6)があるファイルを探す
find /path/to/dir -perm -660
/path/to/dir/shared_note.txt
/path/to/dir/config_file.conf
このように、-(ハイフン)を使いこなすことで、セキュリティチェックや特定のツール探しが格段に効率化されます。まずは「-001(誰かが実行できる)」や「-200(自分が書き込める)」といった簡単な指定から試してみるのがおすすめです。
6. パーミッションが完全一致するファイルだけを探す(=)
=を付けると、「完全に一致するパーミッションだけ」を対象にします。
例:パーミッションが600のファイルだけを探す
find /home/user -perm =600
/home/user/secret.txt
これは「所有者だけが読み書きでき、他の人は何もできない」ファイルです。
7. 特殊パーミッションの検索(setuid・setgid・sticky)
setuid(4000)、setgid(2000)、stickyビット(1000)も検索できます。
- setuid:実行時に所有者の権限で動作
- setgid:実行時にグループの権限で動作
- sticky:他人のファイル削除防止(/tmpなど)
例:setuidが付いたファイルを検索
find / -perm -4000
/usr/bin/passwd
8. 他のオプションと組み合わせた例
-permは他の条件と組み合わせることで、さらに便利に使えます。
例:サイズが1MB以上かつ実行可能なファイルを検索
find /usr/local/bin -size +1M -perm -111
/usr/local/bin/large_script
例:7日以内に更新された、読み書き可能なファイル
find /var/tmp -mtime -7 -perm -600
/var/tmp/edit.txt
9. パーミッションの確認方法
ファイルやディレクトリの現在のパーミッションを調べるには、ls -lコマンドを使います。
ls -l script.sh
-rwxr-xr-- 1 user1 devgroup 2048 Sep 16 09:00 script.sh
このように、最初の-rwxr-xr--の部分がパーミッションです。
数値に直すと754になります。
まとめ
本記事ではLinuxのファイル検索コマンドであるfindコマンドの中でも、特に重要なオプションであるfind permオプションについて詳しく解説してきました。Linux初心者にとっては少し難しく感じるパーミッションという概念ですが、この仕組みを理解することで、セキュリティ管理やファイル操作の精度が大きく向上します。
Linuxにおけるパーミッションとは、ファイルやディレクトリに対して誰がどのような操作をできるかを決める仕組みです。所有者グループその他の三つの区分に対して、読み取り書き込み実行の権限が設定されており、この組み合わせを数値で表現したものが755や644といった表記です。これらの意味を理解することはLinuxコマンド操作の基礎であり、サーバー管理やプログラミングにおいて非常に重要です。
find permオプションの基本的な考え方
find permオプションは指定したパーミッションを持つファイルを検索するための強力な機能です。完全一致検索では指定した数値と同じパーミッションを持つファイルのみが対象となり、より厳密な検索が可能です。一方でハイフンを使った検索では特定の権限を含むファイルを柔軟に探すことができます。
find . -perm 644
./file1.txt
./memo.txt
このようにパーミッションを条件にして検索することで、セキュリティの確認や不要ファイルの整理が効率的に行えるようになります。Linux初心者の方でもこの基本形を覚えることで、実務に近い操作ができるようになります。
ハイフン指定による柔軟な検索
ハイフンを使った検索は実務で非常によく使われます。例えば実行権限を持つファイルだけを探したい場合や書き込み可能なファイルを見つけたい場合に便利です。特定のビットが含まれていれば検索対象となるため、より現実的な条件でファイル検索ができます。
find . -perm -111
./run.sh
./script.py
このように実行可能なファイルだけを抽出することができるため、スクリプトやプログラムファイルの管理に役立ちます。Linuxのファイル検索ではこの柔軟性が非常に重要になります。
完全一致検索とイコール指定
イコールを使うことで完全一致の検索も可能です。これはセキュリティチェックの際に特に有効で、特定の権限設定のファイルだけを正確に抽出できます。例えば600のような機密ファイルを探す場合に利用されます。
find . -perm =600
./secret.txt
この機能を使うことで、重要なファイルの管理やアクセス制御の確認を効率よく行うことができます。Linuxサーバー運用では非常に重要なテクニックです。
特殊パーミッションの理解
Linuxには通常の読み書き実行権限に加えて特殊パーミッションが存在します。setuidやsetgidやstickyビットといった仕組みはセキュリティに大きく関わるため、基本的な理解が必要です。find permを使えばこれらの特殊権限を持つファイルも簡単に見つけることができます。
find / -perm -4000
/usr/bin/passwd
このように管理者権限で検索することで、システムに影響を与える重要なファイルを確認することができます。Linuxのセキュリティ対策として非常に重要な操作です。
他のオプションとの組み合わせ
findコマンドはpermオプション単体だけでなくサイズや更新日時などの条件と組み合わせることでさらに強力になります。大規模なシステムやサーバーではこうした複合条件検索が必須になります。
find /var/log -size +10M -perm -600
/var/log/secure.log
このように複数条件を組み合わせることで、目的のファイルを効率的に見つけることができます。Linux初心者の方はまず単一条件から始めて、徐々に複雑な検索に挑戦していくと理解が深まります。
lsコマンドでの確認も重要
findで検索した結果のパーミッションが正しいかどうかを確認するためにはls lコマンドを併用することが重要です。検索と確認をセットで行うことで、Linuxのファイル管理能力が大きく向上します。
ls -l script.sh
-rwxr-xr-- 1 user user 2048 Jan 1 10:00 script.sh
パーミッションの意味を理解しながら確認することで、Linuxの理解がより深まります。初心者の方はこの流れを繰り返し練習することが大切です。
find permオプションはLinuxのファイル検索の中でも非常に実践的であり、セキュリティ管理ファイル管理サーバー運用など幅広い場面で活用されます。Linux初心者の方でも基本をしっかり押さえることで、プロのエンジニアに近い操作ができるようになります。まずは基本的な数値指定から始めて、徐々に応用的な使い方に挑戦してみてください。繰り返し使うことで自然と理解が深まり、Linux操作がより楽しくなるはずです。
生徒
find permオプションはパーミッションで検索できることが分かりました
先生
そうですねLinuxのファイル管理ではとても重要な機能です
生徒
数値の意味が最初は難しかったですが少し理解できました
先生
読み取り書き込み実行の三つを覚えれば自然に分かるようになります
生徒
ハイフンを使うと柔軟に検索できるのが便利ですね
先生
実務ではハイフン指定がよく使われますのでぜひ覚えてください
生徒
lsコマンドで確認するのも大事なんですね
先生
検索と確認をセットで行うことがLinux操作の基本です
生徒
これから色々な条件で試してみます
先生
実際に触って覚えることが一番の近道です頑張りましょう