現場でLinuxの権限トラブルに強くなるためには?

HOMEリナックスマスター.JP 公式ブログLinux学習ガイド > 現場でLinuxの権限トラブルに強くなるためには?
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
リナックスマスター.JPの宮崎智広です。
いつもありがとうございます。

Linuxにおいてファイルのアクセス権限は、とても大切な基本スキルです。

あなたも下記のようなコマンドを見たことがあるのではないでしょうか。

$ chmod 755 file.txt
$ chown user:group file.txt


現場で仕事をしていると

「パーミッションは合ってるはず...だけど、なぜか処理が失敗する」
「chmodしてるのに、動作が変わらない」
「ファイル共有の設定が思った通りに動いてくれない」


といったトラブルに出くわすことがあります。
今回は、「コマンドの使い方」と「権限の本質的な考え方」などをご紹介します。
【この記事でわかること】
・パーミッション3桁表示(rwx/数字)の正しい読み方と設定方法
・ディレクトリの実行権限(x)が抜けているとcdできない理由
・Webアプリの実行ユーザー(apache/www-data)と権限設定の関係
・chmod 777にしても動作が変わらない場合のSELinux・ACL・マウントオプションの確認方法
・chmodとchownの使い分けと実務でよくある権限トラブルの解決パターン
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら
■パーミッションの3桁表示について

下記のような表示を見たことはありませんか?

-rw-r--r-- 1 user group 1234 Jan 1 00:00 file.txt


上記の「-rw-r--r--」の部分が、Linuxのアクセス権限を表しています。

・最初の文字(-):ファイル種別(-は通常ファイル、dはディレクトリ)
・1桁目(rw-):オーナー(user)の権限
・2桁目(r--):グループの権限
・3桁目(r--):その他(other)の権限


これを数字で表すと、rw- = 6、r-- = 4、r-- = 4 → 644 になります。
つまり、chmod 644 file.txtとすれば同じ設定になります。

■ 実務でつまずく権限設定あるある
1.ディレクトリの実行権限(x)が抜けている
ディレクトリの権限には、ファイルとは違った意味があります。

・r:中のファイル名を「読む」ことができる
・w:中のファイルを作成・削除できる
・x:そのディレクトリに「入る」ことができる(=アクセス権)

つまり、lsで一覧は見られるのに、cdできないというような状況もありえます。

対策としては、ディレクトリに必ず実行権限(x)を付けるよう意識します。
例:chmod 755 /path/to/dir

2.所有者とグループの「誰が実行するか」が考慮されていない
例えば、あるWebアプリが/var/www/htmlにファイルを書き込もうとしても、
その実行ユーザー(たとえばwww-dataやapache)が書き込み権限を持っていなければエラーになります。

そうならないためには、ps auxやsystemctl statusで
実際に動作するプロセスのユーザー(=実行主体)を確認します。

3.パーミッションを変えても「動作が変わらない」
「chmod 777したのにエラーが直らない!」
「所有者も合ってるのに...」

この場合、ACL(Access Control List)やSELinux/AppArmorが関係しているケースがあります。

たとえば、Ubuntuではsetfaclによって個別にアクセス権を追加できるため、
通常のchmodだけでは上書きされないことがあります。

また、RedHat系OSでSELinuxが有効になっている場合、ポリシー違反でブロックされることもあります。

ACLの有無はgetfaclで確認します。
SELinuxのステータスはsestatus、または/var/log/audit/audit.logをチェックします。
それでも不明なときは、/var/log/messagesやjournalctlの確認が必要になります。

■現場で権限トラブルに強くなるために
現場で権限トラブルに強くなるためには、以下の3つの視点を持つことが大切です。

1.「誰が」操作するかを明確にする
→ プロセスの実行ユーザー、SSHログインユーザーなどを意識する
→ 誰の権限でアクセスが発生するのかを明確にする

2.「どこに」アクセスしているかを正確に把握する
→ シンボリックリンクやマウントポイントの先に注意
→ 親ディレクトリにx権限があるかもチェック

3.「どの制御」が優先されているかを知る
→ chmod、chown、ACL、SELinuxなど、どの設定が実際のアクセスを制御しているかを理解する

Linuxにおけるファイル権限は、chmodとchownが基本になりますが、
現場では、次のような判断が日常的に求められます。

・「Webサービスが500エラーを返しているが、原因はパーミッションか?」
・「あるユーザーだけファイルにアクセスできないのはなぜか?」
・「セキュリティ的に最小権限で運用するには、どう設計すればよいか?」


こうした問題に冷静に対応できるようコマンドの意味を「暗記」するのではなく、
どう使うか「判断」できる力を育てましょう。
そうすることで、現場での権限トラブルに強くなれます。

P.S
現場で使えるLinux権限管理スキルを身につけるなら、
現場に沿った構築技術と環境を作るのが近道です。
手を動かしながら「現場の技術」が2日で身につきます。
いますぐご確認ください。
↓↓↓
現場で使えるLinux権限管理スキルを身につけるならこちら

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


Linux無料マニュアル(図解60P) 名前とメールで30秒登録