パーミッションと所有権を理解する
同じファイルでも、誰が操作するかによって読める・書ける範囲が変わります。所有者、グループ、その他という分類とrwxの意味を結び付け、ファイルとディレクトリで権限の働きが違う理由を学びます。ここでは通常のLinux利用者と標準のアクセス権を扱います。
この単元で学ぶこと
- 所有者・グループ・その他の判定を説明できる
- 数値とシンボリック表記で標準権限を変更できる
- ファイルの内容変更と名前の削除に必要な権限を区別できる
本文解説
所有する人と所属グループ 各ファイルには所有者ユーザー、所有グループ、アクセス権があります。ls -l report.txtでは権限文字列に続く所有者・グループの列を確認します。自分のユーザーや所属グループはidで調べられます。所有グループは、そのファイルを利用するグループを表し、所有者本人と同じ意味ではありません。
三組の権限を読む -rw-r-----の先頭-は通常ファイルを表します。残りを三文字ずつ分けると所有者rw-、グループr--、その他---です。rは読取り、wは書込み、xは実行を示し、-はその許可がないことを示します。三組を全部足して一人の権限にするわけではありません。
どの組を使うか 拡張ACLがなく、特権による迂回もない通常の判定では、実効ユーザーが所有者なら所有者の組、そうでなく所有グループに該当すればグループの組、それ以外はその他の組を使います。所有者の読取りがなくてもその他にrがあるから読める、とはなりません。課題ではこの前提を確認して判断します。
ファイルに対するrwx 通常ファイルのrは内容を読む、wは内容を変更する、xはプログラムとして実行を試みる許可です。テキストファイルにxを付けただけで、有効なプログラムへ変換されるわけではありません。実行形式、インタープリター、親ディレクトリの探索権など別の条件もあります。
ディレクトリに対するrwx ディレクトリのrは名前の一覧を読む、xは名前を指定してその配下を探索する許可です。wはディレクトリ内の名前の追加・削除などに関係し、通常その操作にはxも必要です。ファイルの削除はその内容を書き換える操作ではなく、親ディレクトリから名前を取り除く操作なので、ファイルのwだけでは判断できません。
数値表記を作る r=4、w=2、x=1として一組ごとに足します。rw-は6、r-xは5、---は0です。chmod 640 report.txtは所有者rw-、グループr--、その他---に設定します。chmod 750 workdirなら所有者rwx、グループr-x、その他---です。ここで扱うのは特殊ビットを設定していない通常のファイル・ディレクトリです。
シンボリック表記を作る uは所有者、gはグループ、oはその他、aは全員です。chmod g+w report.txtはグループの書込みだけを追加します。chmod o-rwx report.txtはその他の三権限を取り除きます。chmod u=rw,go=r report.txtは所有者をrw、グループとその他をrへ置き換えます。+は追加、-は削除、=は指定した組の置換です。
所有者・グループの変更との違い chmodは許可する操作を変え、chownは所有者を、chgrpは所有グループを変えるコマンドです。chmod g+wでグループ名が変わるわけではありません。通常の利用者が任意の他人へ所有権を移せるわけでもなく、所有者変更は特権が必要です。グループ変更にも所有者や所属グループなどの制約があります。
実習と結果の確認 通常利用者のLinux実習環境でlesson_dir=$(mktemp -d)を実行し、printf "sample\n" > "$lesson_dir/report"で自分のファイルを作ります。chmod 640 "$lesson_dir/report"の後、stat -c "%a" "$lesson_dir/report"が640、ls -lでrw-r-----相当であることを確認します。続いてchmod g+wを同じファイルへ実行し660、chmod o-rwxで660のまま、chmod u=rw,go=rで644となることを確認します。対象は実習ファイルだけに限定し、結果を記録します。
適用範囲と診断 modeが期待通りでもアクセスが拒否される場合は、親ディレクトリのx、実効ユーザーと所属グループ、ACL、SELinux、読取り専用マウントなどを切り分けます。rootやcapabilityを持つプロセスでは通常利用者と結果が異なり得ます。sticky bitがある共有ディレクトリでは削除にも追加制約があります。この課の標準権限だけで全てを説明できると決め付けないでください。
図解
重要ポイント
- rwxは所有者・グループ・その他の三組で表す。
- r=4、w=2、x=1を組ごとに足す。
- chmodは権限、chown/chgrpは所有者・グループを変える。
- ディレクトリのxは探索、wは名前の追加削除に関係する。
間違えやすい点
- 所有者・グループ・その他の許可を合算しない。
- 読取り専用ファイルだから削除できない、と判断しない。
- chmodで許可した操作がACLやSELinux等にも必ず許されると思わない。
用語解説
- 所有者
- ファイルを所有するユーザー。
- 所有グループ
- ファイルに設定されたグループ。該当利用者にはグループの組を適用する。
- mode
- 読取り・書込み・実行などの許可を表すビットの組。
- 探索権
- ディレクトリ内の名前を使い配下へ到達するためのx権限。
- シンボリック表記
- u/g/o/aとr/w/xなどを組み合わせて権限変更を表す方法。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
- https://www.gnu.org/s/coreutils/manual/html_node/File-permissions.html
- https://www.gnu.org/s/coreutils/manual/html_node/Symbolic-Modes.html
- https://www.gnu.org/s/coreutils/manual/html_node/Numeric-Modes.html
- https://man7.org/linux/man-pages/man7/path_resolution.7.html
- https://man7.org/linux/man-pages/man2/chmod.2.html
確認問題の出題・採点や学習履歴の保存にはログインが必要です。