Linuxサーバーを扱う上で避けて通れないのが「権限管理」です。chmodとchownの2つを正しく理解すれば、ほとんどの権限トラブルを自分で解決できます。本記事では、Linuxの権限の基本と、chmod/chownの使い方を3分で理解できるよう整理します。
権限の基本(rwx)
Linuxファイルには3種類の対象(所有者・グループ・その他)に対して、3つの権限(読・書・実行)が設定できます。ls -lで表示される-rwxr-xr--がそれです。
$ ls -l
-rwxr-xr-- 1 alice dev 1024 May 11 10:00 app.sh
# ┬─┬─┬─┬─
# │ │ │ └ その他:r--(読のみ)
# │ │ └── グループ:r-x(読・実行)
# │ └──── 所有者:rwx(読・書・実行)
# └────── ファイル種別(-=ファイル、d=ディレクトリ、l=リンク)
chmodで権限を変える
数値モード
r=4, w=2, x=1 を足した3桁の数値で表現します。よく使う組み合わせ:
755:所有者=rwx、グループ=rx、その他=rx(実行ファイル・ディレクトリ)644:所有者=rw、グループ=r、その他=r(通常ファイル)700:所有者のみrwx(機密ファイル)600:所有者のみrw(鍵ファイル等)
chmod 755 app.sh
chmod 644 config.yml
chmod 600 ~/.ssh/id_rsa
記号モード
chmod u+x script.sh # 所有者に実行権限を追加
chmod g-w file # グループから書き込み権限を削除
chmod o=r file # その他は読みのみに
chmod a+r file # 全員に読み権限
再帰指定
# ディレクトリ配下に再帰的に適用(注意して使う)
chmod -R 755 /var/www/html
chownで所有者を変える
chown alice file # 所有者をaliceに
chown alice:dev file # 所有者alice・グループdev
chown :dev file # グループのみ変更
chown -R www-data:www-data /var/www # 再帰指定
特殊権限
- setuid(4xxx):実行時に所有者の権限で動作
- setgid(2xxx):実行時にグループの権限で動作
- sticky bit(1xxx):ディレクトリ内の削除を所有者のみに制限(/tmpなど)
よくあるトラブル
- Webサーバから書き込みできない → ディレクトリの所有者を www-data に
- SSH鍵が認識されない →
chmod 600 ~/.ssh/id_rsa必須 - cronがファイルを読めない → 実行ユーザーの権限を確認
まとめ
権限管理は「誰が・何のファイルに・何ができるか」を明示する仕組みです。chmodで権限、chownで所有者を変えるという基本さえ押さえれば、サーバー運用の権限トラブルは自分で解決できるようになります。