chmodコマンドとは?Linuxの権限(パーミッション)変更を分かりやすく解説
Linuxの必須コマンド「chmod」について、777や644といった数字の意味から、実務でよく使う権限設定の定石まで徹底解説します。
chmodコマンドとは?
chmod(チェンジモード)は、LinuxやUnix系のOSにおいて、ファイルやディレクトリの「アクセス権限(パーミッション)」を変更するためのコマンドです。
Linuxではセキュリティを保つため、すべてのファイルに対して「誰が」「何を出きるか(読み取り・書き込み・実行)」が細かく設定されています。
パーミッションの基本概念
権限は以下の3つの対象に対して設定されます。
- 所有者 (Owner: u): ファイルを作成したユーザー
- グループ (Group: g): 所有者が属するグループのメンバー
- その他 (Others: o): 上記以外のすべてのユーザー
また、付与できる権限は以下の3種類です。
- r (Read: 4): 読み取り権限。ファイルの中身を見る権限。
- w (Write: 2): 書き込み権限。ファイルを編集・削除する権限。
- x (eXecute: 1): 実行権限。プログラムやスクリプトとして動かす権限。
どのような場面で使われるか
Webサーバーの構築時や、新しく作成したシェルスクリプトを実行可能にする場面で必ず使用します。
数字表記(8進数)での権限指定
実務では r w x を足し合わせた数字を3つ並べて権限を指定するのが一般的です。
- chmod 777 [ファイル名]: 誰でも読み・書き・実行が可能。セキュリティ上非常に危険なので、テスト環境以外では絶対に使用しないでください。
- chmod 755 [ファイル名]: 所有者は全て可能(7)。グループとその他は読み取りと実行のみ(5)。Web公開用のディレクトリや実行スクリプトでよく使われます。
- chmod 644 [ファイル名]: 所有者は読み書き(6)。その他は読み取りのみ(4)。一般的なHTMLファイルや設定ファイルに使用される安全な設定です。
- chmod 600 [ファイル名]: 所有者のみ読み書き可能。SSHの秘密鍵(
id_rsaなど)はこの権限でないと接続エラーになります。
実務上の注意点
ディレクトリに対して権限を付与する際、「x(実行権限)」がないと、そのディレクトリの中に入ること(cdコマンド)すらできなくなる点に注意が必要です。
よくあるエラーやトラブルシュート
- Permission denied: スクリプトを実行しようとした際に頻発するエラーです。
chmod +x script.shを実行して「実行権限」を付与することで解決します。 - Webサイトが403 Forbiddenになる: Webサーバー(ApacheやNginx)の実行ユーザーが、公開ディレクトリ配下のファイルを読み取る権限(通常は
o+rまたは全体で 644 / 755)を持っていないために起こります。
まとめ
chmodによるパーミッション管理は、Linuxインフラを扱う上で避けては通れない基礎技術です。サーバー構築時のトラブルの半分以上が「権限設定のミス」に起因すると言っても過言ではありません。必ず理解しておきましょう。
関連する用語 (linux)
全12件を見るerror: failed to push some refs to の原因
`git push` した時に「リモート側に自分が持っていない変更がある」として拒否された場合の原因と、`git pull` や `git push -f` の判断基準を解説します。
Cannot connect to the Docker daemon の原因と解決策
Dockerコマンド実行時に「Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?」と表示されるエラーの直し方を解説します。
sshコマンドとは?公開鍵認証の仕組みと安全なサーバー接続の実務
Linuxの遠隔操作に必須の「ssh」コマンドについて、公開鍵・秘密鍵を使った安全な接続方法(公開鍵認証)や実務でのポート指定などを解説します。
git stash コマンドの使い方(作業の一時避難)
コミットせずに今の作業を一時保存できる `git stash` コマンドの使い方(保存・復元・一覧・削除)を実務ベースで解説します。
git rebase と git merge の違い・使い分け
コミット履歴を綺麗に保つための `git rebase` の仕組みと、`merge` との決定的な違い、実務での使い分けについて図解します。
curlコマンドとは?Web APIのテストやHTTP・JSON通信の実践例
URLを叩いて様々なリクエストを送信できる「curl」コマンドについて、REST APIのテスト(GET/POST)やヘッダー確認などの実務での使い方を解説。