【Bash講座 第3回】なぜファイルが開けない?Linuxセキュリティの要「権限」を学ぶ
こんにちは!「リナックス先生」です。
前回は、パスとワイルドカードを使ってファイルを自由に指定する方法を学びましたね。
コウ君、その後サーバー操作で困ったことはない?
先生!実は…設定ファイルを編集しようとしたら、「Permission denied(許可がありません)」って怒られて、何もできないんです!
僕はこのサーバーの契約者なのに、なんで拒否されるんですか!?
それはLinuxが「マルチユーザーOS」だからよ。
契約者だろうと何だろうと、ルール(権限)を持たないユーザーには指一本触れさせない。
それがLinuxの堅牢なセキュリティを守っているの。
今回は、このエラーを解決するための「パーミッション(権限)」と、管理者の伝家の宝刀「sudo」について徹底解説するわ!
第3回となる今回は、謎の数字「755」や「644」の正体、そして chmod や chown といった管理者必須コマンドをマスターします。
これを理解すれば、エラーが出ても焦らず対処できるようになりますよ。
本講座のカリキュラム(全12回)
AlmaLinux 9 (RHEL 9互換) 環境を前提に、基礎から応用までステップバイステップで進めます。
- Bash入門編:シェルとカーネルの関係、CUIの哲学、環境構築
- ファイル操作の極意:絶対パス・相対パスと「ワイルドカード」の魔術
- 【今回】権限(パーミッション)とユーザー:chmod, chown, sudoの仕組みを完全理解
- 入出力リダイレクトとパイプ:Linuxの真骨頂!コマンド同士を連携させる技術
- テキスト処理の基本:cat, head, tail, less…ファイルの中身を覗く道具たち
- 最強のエディタ「Vi/Vim」入門:サーバー内でテキストを編集する必須スキル
- シェルスクリプトの第一歩:ファイルにまとめて自動実行!変数と引数の基礎
- 条件分岐(if文):サーバーの状態を見て「判断」できるスクリプトを作る
- 繰り返し処理(for/while文):面倒な単純作業を1秒で終わらせるループ処理
- テキスト処理の応用:grep, sed, awk…ログ解析の達人になるための三種の神器
- 実践・自動化スクリプト:バックアップと監視を自動化し、Cronで定期実行する
- 総仕上げ:自作スクリプトの集大成と、エンジニアとしての歩き方
1. ユーザーとグループ:Linux社会の階級制度
権限の話をする前に、Linuxにおける「登場人物」を知る必要があります。
Linuxは同時に複数の人がアクセスすることを前提に作られているため、厳格な階級社会が存在します。
(1) スーパーユーザー (root)
神様です。あらゆるファイルの読み書き、削除、システムの破壊まで、全ての権限を持っています。
プロンプトが # になっている時は、あなたが神の状態です。
(2) 一般ユーザー
人間です。自分のホームディレクトリ(/home/ユーザー名)の中だけは自由にできますが、システムの大事なファイルには触れません。
プロンプトは $ です。
(3) グループ
ユーザーをまとめる「部署」のようなものです。
例えば「開発部グループ」に権限を与えれば、そのグループに属する全員がファイルを編集できるようになります。
2. 暗号解読!「ls -l」の読み方
では、問題の「パーミッション」を確認してみましょう。ls -l コマンドを打つと出てくる、左側の謎の文字列に注目してください。
[root@localhost ~]# ls -l total 4 -rw-r--r--. 1 root root 1234 Jan 1 10:00 file.txt drwxr-xr-x. 2 root root 6 Jan 1 10:00 dir
この -rw-r--r-- や drwxr-xr-x がパーミッションを表しています。
これは以下のように分解して読みます。
| 種別(1文字) | 所有者(3文字) | グループ(3文字) | 他人(3文字) |
|---|---|---|---|
- (ファイル)d (ディレクトリ) |
rwx(持ち主の権限) |
r-x(同じGの権限) |
r--(赤の他人の権限) |
アルファベットの意味
r(Read):読む権限。ファイルの中身を見れる。w(Write):書く権限。書き換えや削除ができる。x(eXecute):実行する権限。プログラムとして起動できる。(ディレクトリの場合は「中に入れる」という意味になる)-:権限なし。
なるほど!r-- なら「読むだけOK」、rw- なら「読み書きOK」ってことですね。
3. 権限を変更する:chmod コマンド
権限を変更するには chmod(チェンジ・モード)コマンドを使います。
指定方法には「数値」と「記号」の2種類がありますが、現場では圧倒的に「数値」が使われます。
数値での指定(足し算)
各権限には点数が決まっており、その合計値で指定します。
- r (読む) = 4
- w (書く) = 2
- x (実行) = 1
これを「所有者・グループ・他人」の順に3桁並べます。
よく使う組み合わせは以下の2つよ。これだけは暗記しなさい。
| 数値 | 意味 | 用途 |
|---|---|---|
| 755 (rwx r-x r-x) |
自分はフル権限。 他人は見るのと実行だけ。 |
プログラム、ディレクトリの標準。 (Web公開するフォルダなど) |
| 644 (rw- r– r–) |
自分は読み書きOK。 他人は見るだけ。 |
一般的なファイルの標準。 (HTMLファイル、設定ファイルなど) |
# file.txt を「自分は書き込めるけど、他人は見るだけ」にする [root@localhost ~]# chmod 644 file.txt # script.sh を「誰でも実行できる」ようにする [root@localhost ~]# chmod 755 script.sh
【危険】 chmod 777 は「誰でも読み書き実行し放題」という無法地帯モードよ。
トラブル解決のために一時的にやる人がいるけど、セキュリティホールになるから絶対におすすめしないわ。
4. 持ち主を変更する:chown コマンド
ファイルを作成すると、作成した人が「所有者」になります。
rootで作ったファイルを一般ユーザーに使わせたい時は、所有者を変更する必要があります。
それが chown(チェンジ・オーナー)コマンドです。
# 書式: chown [ユーザー名]:[グループ名] [ファイル名] # file.txt の持ち主を kou さんに変更する [root@localhost ~]# chown kou:kou file.txt # ディレクトリの中身ごと全部変更する(-R オプション) [root@localhost ~]# chown -R kou:kou /var/www/html
Webサーバー構築などで「ファイルをアップロードできない!」という時は、だいたいこの所有者設定が間違っています。
5. 管理者の力を借りる:sudo コマンド
最後に、最も重要なコマンドを紹介します。
普段は安全な「一般ユーザー」で作業し、必要な時だけ「神(root)」の力を借りる。
それが sudo(スーパーユーザー・ドゥ)です。
なるほど! 最初のエラーは、一般ユーザーの僕が、root権限が必要なファイルを触ろうとしたからダメだったんですね。
じゃあ、コマンドの前に sudo を付ければ…
# 普通にやるとエラー [kou@localhost ~]$ dnf update Error: This command has to be run with superuser privileges. # sudo を付けると成功!(自分のパスワードを聞かれます) [kou@localhost ~]$ sudo dnf update Last metadata expiration check: ... Dependencies resolved.
AlmaLinuxなどのRHEL系やUbuntuでは、最初のユーザーは自動的に「sudoを使えるグループ(wheelグループなど)」に入っています。
サーバー管理は基本的に、「rootでログインするのではなく、一般ユーザーでログインしてsudoを使う」のが鉄則です。
次回予告:コマンドの結果をファイルに保存したい!
第3回は、Linuxのセキュリティの根幹である「パーミッション」と「ユーザー管理」について解説しました。chmod 755 や chmod 644 は、今後息をするように使うことになるので、ぜひ指に覚えさせてください。
次回は、Linux操作が劇的に便利になる「リダイレクト(>)」と「パイプ(|)」について解説します。
「コマンドの結果をファイルに保存する」「大量のログファイルからエラーの行だけ抜き出す」といった、プロっぽい操作ができるようになりますよ。
次回までに、自分のホームディレクトリに適当なファイルを作って、chmod 000 にしてみて。
持ち主なのに何もできなくなる(読むことすらできない)不思議な体験ができるわよ。試してみてね!
▼本講座推奨!AlmaLinux 9がすぐ使えるVPS



コメント