Ukaru.資格試験オンライン講座

ファイル・ディレクトリの操作と管理(パーミッション)

パーミッションはr=4・w=2・x=1の数値変換、umask計算(基底値はファイル666・ディレクトリ777)、SUID・SGID・スティッキービットの効果と表示が最頻出であり、ls -lの実機確認で固めることが合格の鍵である。

本章はLinuCレベル1(バージョン10.0)101試験の主題1.02「ファイル・ディレクトリの操作と管理」に対応する。まず1.02.1「基本的なファイル管理の実行」で問われるのは、ls・cp・mv・rm・mkdir・rmdir・touch・fileといった基本コマンドの動作とオプションである。cpやrmで再帰処理を行う-r(-R)、確認を求める-i、強制実行の-f、親ディレクトリごと作成するmkdir -pは出題実績が特に多い。またシェルのパス名展開(グロブ)であるワイルドカードも頻出で、*は0文字以上の任意文字列、?は任意の1文字、[a-z]は括弧内のいずれか1文字に一致する。これらはgrep等で使う正規表現とは別の仕組みであり、両者を混同させる選択肢が本試験でも定番のひっかけとして使われるため、意味の違いを意識して整理しておく必要がある。

ファイル検索のfindは101試験の定番である。書式は「find パス 検索式」であり、-name(名前)、-type(f=通常ファイル、d=ディレクトリ、l=シンボリックリンク)、-size、-user、-perm、-mtime(最終更新日時)を組み合わせて使う。-mtimeは数値の符号が肝であり、-mtime -7は7日以内に更新、+7はそれより古いものを意味し、符号の有無を入れ替えた選択肢が頻出する。検索結果への一括処理は「-exec コマンド {} \;」で行う。アーカイブと圧縮ではtarが中心で、c(作成)・x(展開)・t(内容一覧)の動作指定に、z(gzip)・j(bzip2)・J(xz)の圧縮指定とf(アーカイブファイル名指定)を組み合わせる。圧縮率は一般にgzip<bzip2<xzの順に高い。加えてcpioとddもシラバス記載のコマンドであり、ddはif=/of=による入出力の指定とbs=によるブロックサイズ指定が問われる。

1.02.2「ハードリンクとシンボリックリンク」では、lnコマンドと両リンクの性質の違いが問われる。「ln 参照先 リンク名」でハードリンク、-sオプションを付けるとシンボリックリンクを作成する。ハードリンクは同一のiノードを複数の名前で共有する仕組みであるため、同一ファイルシステム内でしか作成できず、ディレクトリに対しては作成できない。元の名前を削除してもリンクカウントが0になるまで実体のデータは消えない。一方シンボリックリンクは参照先のパス名を格納した別ファイルであり、ファイルシステムをまたぐこともディレクトリを指すことも可能だが、参照先が削除されるとリンク切れになる。ls -lではシンボリックリンクはファイル種別がl、参照先が->で表示され、ハードリンクは第2フィールドのリンクカウントの増加で確認できる。この対比は正誤問題の最頻出テーマの一つである。

1.02.3「ファイルの所有者とパーミッション」は本章の核心である。パーミッションは所有者(u)・グループ(g)・その他(o)の3者に対し、読み取りr・書き込みw・実行xの3種で構成され、数値表記ではr=4、w=2、x=1の合計で表す。例えばrw-r--r--は644、rwxr-xr-xは755である。chmodはシンボリックモード(u+x、go-w、a=rなど)と数値モードの双方が問われ、+は付与、-は剥奪、=は指定した権限への置き換えを意味する。重要なのはディレクトリに対する意味の違いで、rは中のファイル一覧の取得(ls)、wはディレクトリ内でのファイルの作成・削除・改名、xはそのディレクトリへの移動(cd)や配下ファイルへのアクセスを許可する。あるファイルを削除できるかどうかはファイル自身のw権限ではなく、格納しているディレクトリのw権限で決まる点がひっかけの定番である。

所有者の変更はchown、グループの変更はchgrpで行う。chownは「chown 所有者:グループ ファイル」の形式で両方を同時に変更でき(区切りは歴史的に.も許容)、-Rで再帰的に適用する。所有者の変更はroot(スーパーユーザー)のみ可能で、一般ユーザーができるのは自分の所有ファイルのグループを自分の所属グループへ変更することに限られる。umaskは新規作成時に既定パーミッションから落とすビットを定めるマスクで、ファイルの基底値は666、ディレクトリの基底値は777である。umaskが022ならファイルは644・ディレクトリは755、027ならファイルは640・ディレクトリは750となる。試験では「touchで作成したファイルのパーミッションは何か」という形で基底値666を777と取り違えさせる出題が繰り返されており、ファイルには既定で実行権が付かないという原則を確実に押さえることが重要である。

特殊パーミッションはSUID(数値4000)、SGID(2000)、スティッキービット(1000)の3種である。SUIDが設定された実行ファイルは、実行者ではなくファイル所有者の権限で動作する。代表例が/usr/bin/passwdであり、ls -lでは所有者の実行権の位置がsと表示される(実行権が無い場合は大文字S)。SGIDは実行ファイルではグループ権限での実行を意味し、ディレクトリに設定すると、その中に新規作成されるファイルのグループがディレクトリのグループを継承するため、共有ディレクトリの運用問題として問われる。スティッキービットをディレクトリに設定すると、全員が書き込めるディレクトリであっても、ファイルの削除・改名はそのファイルの所有者・ディレクトリの所有者・rootに限定される。典型例が/tmp(drwxrwxrwt)で、その他の実行権の位置にtと表示される。chmod 4755やchmod 1777のように4桁の数値でまとめて設定できる。

出題形式の面では、101試験はCBT方式で約60問、800点満点で合格ラインは500点前後とされる。本章からは、(1)コマンドとオプションの対応(tarの動作文字・findの検索式)、(2)数値表記と記号表記の相互変換、(3)umaskからの既定パーミッション計算、(4)ハードリンクとシンボリックリンクの性質比較、(5)SUID・SGID・スティッキービットの表示と効果、という5類型が繰り返し出題されている。学習の際は表の暗記に留めず、実機やコンテナ環境でtouch・mkdir・chmod・umask・lnを実際に打ち、ls -lの表示がどう変わるかを確認するのが最短の定着法である。特にumask計算とSUID周りは確実に得点できる定番領域であり、基底値666/777とビットを落とすという考え方さえ固まれば、本章は101試験全体の中でも安定した得点源になる。

この章の問題から3問

ハードリンクは、異なるファイルシステム(別パーティション)にあるファイルに対しても作成できる。

正解 ×(誤り)

誤り。ハードリンクは同一のiノード番号を複数のファイル名で共有する仕組みであり、iノードはファイルシステムごとに独立しているため、ファイルシステムをまたぐ作成はできない(lnはEXDEVエラーを返す)。またディレクトリへのハードリンクも作成不可。ファイルシステムをまたげるのはシンボリックリンク(ln -s)であり、シンボリックリンクの性質をハードリンクにすり替えるのが本問のひっかけ。公式シラバス主題1.02.2「ハードリンクとシンボリックリンク」の中心論点。

chmod 644 file.txt を実行すると、所有者は読み書きが可能、グループとその他のユーザーは読み取りのみ可能になる。

正解 ○(正しい)

正しい。数値表記はr=4、w=2、x=1の合計で表す(主題1.02.3)。6=4+2=rw-(読み書き)、4=r--(読み取りのみ)であるため、644はrw-r--r--となり、所有者=読み書き、グループ=読み取り、その他=読み取りで記述どおりである。

umaskが022のとき、touchコマンドで新規作成したファイルのパーミッションは755になる。

正解 ×(誤り)

誤り。新規作成時の基底値はファイルが666、ディレクトリが777である(主題1.02.3)。touchで作るのはファイルなので666から022のビットを落とし644(rw-r--r--)となる。755になるのはmkdirで作成するディレクトリ(777-022)の場合。ファイルとディレクトリの基底値を取り違えさせるのが本問のひっかけで、ファイルには既定で実行権が付与されない点が根拠である。

この章の残り12問を解く

登録不要 ・ 採点と解説はその場 ・ 進捗は端末に保存

LinuC レベル1(101試験)の他の章

本ページの講義ノートと問題は、各試験の出題範囲に基づきAIが作成し、法令・基準に照らして別のAIレンズで敵対的に検証したものです(検証プロセス)。法改正等で誤りが見つかった場合は随時修正します。合格を保証するものではありません。