ファイルシステムとパーミッション
ファイルシステムとは
ファイルシステムは、ディスク上のデータをファイルやディレクトリとして整理して管理する仕組みです。[[Linux]] では / (ルート)を頂点に、すべてがひとつのツリー構造にぶら下がります。
| ディレクトリ | 役割 |
|---|---|
| /etc | 設定ファイル置き場 |
| /var | ログなど変化するデータ(/var/log が代表) |
| /home | ユーザーごとのホームディレクトリ |
| /usr/bin | コマンドの実行ファイル |
| /tmp | 一時ファイル |
「設定は /etc、ログは /var/log」という配置の慣習を覚えるだけで、サーバー内で迷子になりにくくなります。
パーミッションの基本
Linux のすべてのファイルには、パーミッション(誰が何をできるかの許可設定)が付いています。ls -l で確認できます。
-rwxr-xr-- 1 alice developers 1024 Jul 27 10:00 deploy.sh
先頭の rwxr-xr-- は3文字ずつの3組で読みます。
| 組 | 対象 | この例の意味 |
|---|---|---|
| rwx | 所有者(alice) | 読み・書き・実行すべて可 |
| r-x | グループ(developers) | 読みと実行が可、書き込み不可 |
| r-- | その他(全ユーザー) | 読みのみ可 |
r は読み取り(read)、w は書き込み(write)、x は実行(execute)です。数字で表す記法もあり、r=4・w=2・x=1 の合計で rwxr-xr-- は 754 となります。
chmodとchown
パーミッションの変更は chmod、所有者の変更は chown で行います。
chmod 644 config.txt # 所有者は読み書き、他は読みのみ
chmod +x deploy.sh # 実行権限を付ける
sudo chown alice:developers deploy.sh # 所有者とグループを変更
ありがちな事故が「動かないから chmod 777(全員に全権限)」です。一時しのぎになっても、誰でも書き換えられる危険な状態を作るため実務では原則禁止です。必要最小限の権限だけ与える [[最小権限の原則]] に従いましょう。
初学者向けポイント
- [[SSH]] の秘密鍵は厳しいパーミッション(600)でないと接続を拒否される — セキュリティのための仕様
- Web サーバーが読めない・書けないエラーの多くはパーミッションか所有者の問題。
ls -lで確認が第一歩 - root(管理者)はパーミッションに関係なく操作できるため、sudo の乱用は事故のもと
- [[シェルとコマンドライン]] で ls -l の読み方が分かれば、権限トラブルの大半は自力調査できる
関連技術とのつながり
- [[Linux]] — パーミッションは Linux のマルチユーザー設計の中核
- [[シェルとコマンドライン]] — ls -l・chmod・chown が調査と修正の基本セット
- [[最小権限の原則]] — chmod 777 を避け、必要最小限を与える指針
- [[SSH]] — 秘密鍵のパーミッション不備は接続エラーの定番原因
Q: パーミッション rwxr-xr-- の「その他(全ユーザー)」に許可されている操作はどれ?
- [x] 読み取りのみ
- [ ] 読み取りと実行
- [ ] 読み書きと実行のすべて
解説: 3組目の r-- がその他の権限で、読み取りのみ許可されています。r-x はグループ、rwx は所有者の権限です。
Q: chmod 777 が実務で原則禁止とされる理由はどれ?
- [ ] コマンドの実行に時間がかかりすぎるから
- [x] 誰でも書き換えられる危険な状態を作ってしまうから
- [ ] ファイルが自動的に削除されてしまうから
解説: 777 は全ユーザーに全権限を与える設定で、必要最小限の権限だけ与える原則に反します。
Q: Linux でログファイルが置かれる場所の慣習はどれ?
- [ ] /etc
- [x] /var/log
- [ ] /usr/bin
解説: ログは /var/log に置かれるのが慣習です。/etc は設定ファイル、/usr/bin はコマンドの実行ファイルの置き場です。