前回のLinuxディレクトリの構成記事を元に、適切なファイルの所有権とパーミッション設定についてをまとめていく
前回の記事はこちら
【学びの記録】Linuxのディレクトリ構成 -ファイルの所有権とパーミッションを深く理解するための前提知識 - kei615ykhm’s programming learning blog
前提となる基本知識
所有権とは
ユーザー(オーナー):
そのファイルを作成したユーザー
グループ:
各ファイルやディレクトリには所有者とともにグループが設定される
グループのメンバーも特定のアクセス権を持つ
パーミッションとは
パーミッションはアクセス権と同義
Linuxではファイルに対するアクセス権は、読み取り(read)、書き込み(weite)、実行(execute)の3種類が設定される
これらのアクセス権は、ユーザー、グループ、その他のユーザーの3つのカテゴリごとに設定される
パーミッションの表記方法「-rwxr-xr--」
最初の文字:「-」は通常のファイル、「d」はディレクトリ、「l」はシンボリックリンク
次の3文字:所有者の権限(r=読み取り、w=書き込み、x実行)
次の3文字:グループの権限
最後の3文字:その他のユーザーの権限
パーミッションの設定方法「chmod 755 filename」
設定には「chmod」コマンドを使用する
775はパーミッションの設定値で、7は所有者、5はグループ、5はその他のユーザーの権限を表している
それぞれの数字の意味は以下の通りになる
・7=(rwx)読み取り、書き込み、実行すべての権限を持つ
・5=(r-x)読み取り、実行の権限を持つ(書き込み権限はない)
所有権の変更「chown newuser:newgroup filename」
所有権の変更は「chown」コマンドを使用する
この「newuser」は、新しい所有者のユーザー名、「newgroup」は新しいグループ名
なぜ設定するのか
セキュリティ面/安定性
だれでもアクセス可能な権限を持たせてしまうと、悪意ある第三者が不正アクセスをしてシステムを破壊されてしまいかねないため、正しく設定して保守する必要がある
誤って操作してしまった場合もプログラムに不具合を発生させてしまうため注意するべき
特に注意して設定すべきディレクトリ
「root」
理由:rootユーザーのホームディレクトリであり、システム管理者専用のファイルが格納されている。rootユーザー以外がアクセスできるようになると、システム全体に対する制御を失いかねない
推奨パーミッション:700(rootのみが書き込み実行可能)
「etc」
理由:システム全体の設定ファイルが含まれている。誤って設定ファイルを変更、削除するとシステムの動作に重大な影響を与える可能性がある。
推奨パーミッション:755(rootが書き込み可能、他は読み取り可能)
個別ファイルには厳格に設定することが重要(例:passwdは644)
「var/log」
理由:システム及びアプリケーションのログファイルが格納されている。これらファイルが改ざんされると、システムの監視やトラブルシューティングが困難になる
推奨パーミッション:755(ディレクトリ)、ログファイルは644or600(rootのみ書き込み可能)
「home」
理由:ユーザーのホームディレクトリが含まれる。個々のユーザーのプライバシーとセキュリティを守るために適切な設定が必要
推奨パーミッション:ユーザーディレクトリは700(ユーザーのみアクセス可能)
「boot」
理由:システムの起動に必要なファイルが含まれている。これらファイルが変更されると、システムが正しく起動しなくなる可能性がある。
推奨パーミッション:755(rootが書き込み可能、他は読み取り可能)
「usrおよび/usr/local」
理由:システム全体で使用されるソフトウェアやライブラリが格納されている。これらのディレクトリのファイルが不適切に変更されると、システム全体に影響を与える可能性がある。
推奨パーミッション:755(個別ファイルには適切な設定をする)
パーミッション変更は慎重に
誤った設定はシステムの安全性やセキュリティを損なう可能性が高いため、正しい知識で設定すること
余談 -エンジニア組織論でLinuxを知る
所有権とパーミッションを上手く理解できなかったとき、あるたとえ話が非常に分かりやすかったので共有する。
---------------------------------------------
当時、私が勤めていた企業で、所属する部署内の課題をChatGPTを活用してエンジニアリング的な視点で解決したことがあった。
この成果により、部署内でAIの有用性が認められ、企業全体に導入することを上層部に提案するという議題が上がった。
しかし、最終的には上層部の許可が得られず、導入を断念した事件があった。
この出来事について、企業に新しいシステム(ソフトウェア)を導入することをLinuxに例えると非常に分かりやすいと教えられた。
まず、自分の所属する部署を「ユーザーグループ」とする。
(所有者は部署長、グループは自分を含めたチームの社員のこと)
上層部の許可をもらうということは、Linux内で「自分よりも権限の高いユーザーグループ(root)にsudoなどの権限をもらって新しいパッケージをインストールする」行動に似ている。
つまり、企業に新しいシステムを導入することは「古い大規模な環境に多数のユーザーとパッケージがインストールされている状態に新しいパッケージ(ChatGPT)を導入すると、環境の衝突が起きる可能性がある」ということ。
上層部が導入許可を出さなかったのは、「新しいパッケージの導入がシステム全体(企業全体)に影響を与える可能性がある」と判断されたためだった。
---------------------------------------------
このようにエンジニアのもつ概念モデルを実際の話に例えることをエンジニア組織論というらしく、非常にわかりやすい論理的な話だと感じた。