特集
2

LPI Linux Essentials

Linux初心者テストにチャレンジ！
Linuxエンジニアの認定試験としては「LPIC」が有名ですが、より幅広くLinux初学者を対象とする「LinuxEssentials」という認定試験が2020年から開始されています。
本特集では出題範囲に対する理解を確認できる例題を挙げながら、
Linux Essentials試験の内容を紹介します。
つまずきがちな部分について問う例題を盛り込みましたので、腕に覚えがある人もぜひチャレンジしてみてください。
NSプランニング 長原 宏治

Part1Linux Essentials試験の概要

Linuxの初学者が自分の技量レベルを確認したいと思ったときに、まず考えるのは認定試験の受験でしょう。最初の腕試しに適しているのが、「LPI（Linux Professional Institute）」が実施する「LinuxEssentials」という認定試験です。
Part1では、LPIや同認定試験の概要について紹介します。

LPIとLPIの認定試験の概要「LPI（Linux Professional Institute）」は、OSS（オープンソー

ons）」
シリーズなどの試験を実施しています（表1）。2022年までの認定試験の総受験者数は70万人、合格者は27万人に達しています。

スソフトウエア）に関わるさまざまな認定試験を実施する非営

LPIが実施する認定試験の特徴はベンダーニュートラルであ利団体です。本部はカナダにあります。他のOSSプロジェクトのることです。つまり、特定のディストリビューションや製品など多くと同様に、選挙で選ばれたボードメンバーを中心に運営に依存しない内容になっています。
また、
さまざまなOSSコミュ

されるオープンな組織です。

ニティと連携しながら作られた「国際標準の」認定試験である

LPIのミッションは、「OSSを扱う人々をサポートすることで、ことも特徴です。出題範囲は全世界のOSSユーザーたちが議その利用を促進する」
ことです。認定試験によってOSSに関わ論して決定しますし、問題の難易度（合格ライン）はサイコメトる人々の技能を正しく評価し、個人の市場価値を高めて活躍のリクス（計量心理学/心理測定学）によって一定になるように調場を広げることで、結果的にOSSの普及促進を狙っています。

整されています。
その結果、LPIの認定試験は世界中で通用す1999年の設立当初から、Linuxの操作や管理に関する知識レ

るものとなっています。

ベルを認定する「LPIC（Linux Professional Institute Certiﬁcati
表 1 LPI が実施する認定試験

認定試験名Linux Essentials

概要

基本的なコマンドラインを使用する能力とLinuxオペレーティングシステムのプロセス、プログラ
ム、
コンポーネントを理解していることを認定

Web Development Essentials Webベースのアプリケーションを開発するために必要な基礎知識や技能を有していることを認定
LPIC-1
LPIC-2
LPIC-3
DevOps Tools Engineer
BSD Specialist

22

コマンドラインを使った保守作業、Linuxが動作するコンピュータのインストールと設定、および基本的なネットワークの設定ができることを認定
中小規模の混合ネットワーク環境を管理する能力を認定

企業環境で多用される高度な機能の導入・運用能力を認定。混在環境、仮想化、高可用性、セキュ
リティの4分野に分かれている

ソフトウエアエンジニアリングやアーキテクチャ、
コンテナとマシンのデプロイメント、構成管理とモニタリングなど、DevOps関連ツールの知識を有していることを認定
FreeBSD、NetBSD、OpenBSDシステムを管理するための知識や技能を有していることを認定

Linux Essentialsについて通のため、これを覚えることで汎用的な技能が身に付きます。

クラウド時代に入ると、OSSに関わる人たちがプロフェッショ

とっては覚えることがかなり多く、実習中心の学習が不可欠でナルなコンピュータエンジニアであるとは限らなくなってきました。
そのような人々やLPIC受験の前段階にいる初学者を対象として開発された認定試験が「Linux Essentials」
です。英語版は2012年から、日本語版は2020年から受験できるようになっています。

Linux Essentialsで問うのは初歩的な内容ですが、初学者にす。

Linux EssentialsとLPIC-1の違い
Linux Essentialsと、LPICシリーズのエントリレベルである

LPICシリーズとは異なる視点で作られたLinux Essentials認「LPIC-1」に はど の ような 違 い が あ る の でしょうか。Linux定 試 験 の 出 題 範 囲 は、「ITの 基 礎 知 識」
「OSS文 化 の 理 解」

EssentialsとLPIC-1の出題範囲の違いを図1に示しました。

「Linuxの基礎操作」の三つの大きな柱で構成されています。
以
下では、それぞれの出題範囲について解説します。

■ ITの基礎知識

Linux Essentialsだけがカバーする①の出題範囲では、
コン
ピュータシステムとOSSについてのリテラシが求められます。
これらのリテラシはLPIC-1の受験者にも当然必要ですが、少なくともLPIC-1が登場した2000年頃には「Linuxエンジニアで

ここでは、
コンピュータシステムに対する基礎的な知識（リテ

あれば知っていて当然」でした＊1。
さらにLPIC-1の「システム管

ラシ）を持っているかどうかが問われます。具体的には、
コンピ

理技能を認定する」
目的から少し離れるので、出題範囲に含まュータの構成要素とその働きを正しく理解して適切なハードウれなかったのでしょう。

エアを選択する知識、OSの役割や主要なプログラミング言語

LPIC-1だけがカバーする③の範囲では、Linuxマシンの簡単などのソフトウエアに関する知識、そしてTCP/IPネットワーク

な管理業務に必要となる技能が求められます。1台のLinuxマ

に関する基礎的な知識などが求められます。
また、
日常的に心

シンを周辺装置を含めてセットアップし、単体でのシステム管がけるべきセキュリティ対策とそれに用いるツールに関する理業務を遂行できるところまでが大まかな出題範囲となりま知識も必要です。

す。
②に含まれるコマンドの高度な利用方法やシステムの稼■ OSS文化の理解

コマンドをシェルスクリプトにまとめて業務を効率化するため

ここでは、OSSとはどのようなものか、どのように利用できる働状態をモニタリングするコマンドについての知識、それらのの知識なども必要です。

のか、つまりOSSの文化を理解しているかどうかが問われまLPIC-1の方が求められる技能の範囲が広く、初学者にとってす。具体的には、広く使われているOSSの名前と機能、主要なの難易度はLinux Essentialsよりもかなり高めです＊2。実務にLinuxディストリビューションについての知識、ライセンスなど

おいても重要なリテラシを身に付けられることもあり、最初はの守らなければいけない要件についての知識、OSSを使ってLinux Essentialsの取得を目指して学習することをお勧めしまビジネスをする方法についての知識などが求められます。
これす。

らはOSSの利用時には必須の知識ですが、これまでの技術者認定試験では十分カバーされていませんでした。

■ Linuxの基礎操作＊1 2000年頃はLinuxが「マニアのおもちゃ」から「商用に耐えるOS」に躍進を始めた時期に当たります。
＊2 実のところ、LPICシリーズの中でLPIC-1が覚えるべきことが一番多いとする意
見もあります。

ここでは、コマンドラインでLinuxを操作する初歩技能を有するかどうかが問われます。求められるのは、個人のLinuxパ
ソコンに好きなアプリケーションをインストールして使えるレベルの技能です。具体的には、ファイルの作成やコピーなどの操作、
テキストファイルの処理、
ごく簡単なシェルスクリプトの作成などができることが求められます。
ポイントは、そうした操作が「コマンドラインで」できるかどうかです。最近のLinuxディストリビューションの多くはGUIが

図 1 Linux EssentialsとLPIC-1 の出題範囲の違い

LPIC-1

Linux Essentials
ITの基礎知識OSS文化の理解①

Linuxの基礎操作②

Linuxの操作

Linuxシステム管理③

充実していて、コマンドを知らなくても大部分の操作が可能です。
しかし、GUIはLinuxディストリビューションごとに異なり、それぞれの操作方法を覚える必要があります。一方、コマンドラ
インでの操作は多くのLinuxディストリビューションでほぼ共

23

Part2

Linux Essentials演習問題集

Part2では、Linux Essentialsの出題範囲ごとに演習問題を出題します。
解答はPart3で解説します。
60
分間で半分以上正解できれば、合格ラインに達していると見なせるでしょう。
自分の現在の理解度を確認するのに役立ちますので、受験を考えていない人もぜひチャレンジしてください。

1 Linuxのコミュニティとオープンソースのキャリア■ 1-1

Linuxの革命と人気のオペレーティングシステム

問1-1-1 次のLinuxディストリビューションのうち、
ディストリビュータから商用サポートを購入できるものを二つ選んでください。
① Debian Linux② Red Hat Enterprise Linux③ Ubuntu④ Rocky Linux⑤ Raspberry Pi OS■ 1-2

主なオープンソースのアプリケーション

問1-2-1 次のオープンソースアプリケーションのうち、データベース管理システムを二つ選んでください。
① GNOME② NGINX③ MariaDB④ Perl
⑤ PostgreSQL
問1-2-2 次のプログラミング言語のうち、コンパイル型の言語を二つ選んでください。
①C② Python③ JavaScript④ Java⑤ PHP
問1-2-3 あるサーバーソフトウエアのパッケージとそれに必要なパッケージを、まとめてRed Hat Enterprise Linux環境にインストールするときに使う最も適当なコマンドを一つ選んでください。
① apt-get② dpkg③ rpm④ yum⑤ zypper■ 1-3 オープンソースソフトウエアとライセンス
問1-3-1 ライセンスにGPLを採用するオープンソースソフトウエアを改造しました。
ライセンス違反となる行為を一つ選んでください。
① 改造したソフトウエアを社内のみで利用するが、社外には一切公開しない② 改造したソフトウエアを組み込んだ製品を販売し、そのソースコードを実費で頒布する③ 改造したソフトウエアを組み込んだ製品を販売し、そのソースコードは公開しない④ ソフトウエア改造部分に自社の著作権表示を加えて、そのソースコードを同じライセンスで無償配布する⑤ 改造したソフトウエアを利用した有償Webサービスを提供するが、そのソースコードは公開しない24

問1-3-2 Apacheライセンス（ASL）を採用するオープンソースソフトウエアを改造しました。
ライセンス違反となる行為を一つ選
んでください。
① 改造したソフトウエアを組み込んだ製品を販売し、そのソースコードを実費で頒布する② 改造したソフトウエアを組み込んだ製品を販売し、そのソースコードは公開しない③ 改造したソフトウエアを組み込んだ製品を販売するが、マニュアルなどに元のソフトウエアが使用されていることを記載していない④ 改造したソフトウエアのライセンスをGPLに変更して公開する⑤ 改造したソフトウエアにマルウエアを仕込んで公開する
問1-3-3 OSIが定義した「オープンソースの定義」に合致しないライセンス条項を二つ選んでください。
① 処理内容が分かりにくいようにコードを難読化することを禁止する② 営利目的の利用を禁止する③ ある種のソフトウエアとの組み合わせ利用を禁止する④ 改造したプログラムを同じライセンスで公開することを強制する⑤ 再配布の方法を制限することを禁止する■ 1-4

ICTスキルとLinuxでの作業

問1-4-1 LinuxパソコンのGUI環境での作業中、急にマウス操作ができなくなってしまいました。最初に試すべき対処方法を一つ選んでください。
①［Ctrl］
キー、
［Alt］
キー、
［Del］
キーを同時に押す②［Ctrl］
キー、
［Alt］
キー、
［F3］
キーを同時に押す③ キーボードとマウスを抜き差しする④ 他のマシンでSSHクライアントを起動し、ネットワーク経由でログインする⑤ 電源ボタンを長押しして強制的に電源をオフにし、再起動する

2 Linuxシステムで自分の方法を見つける■ 2-1 コマンドラインの基本
問2-1-1

次のコマンドを実行して表示される文字列を記述してください。
コマンドを実行するユーザーの名前は「demo」です。

$ name=\$USER ↵$ echo "good morning $name" ↵問2-1-2 自作のシェルスクリプトを「~/bin」
ディレクトリに置きました。
そのスクリプトが他のコマンドよりも最初に検索されるようにPATH環境変数の値を変更するコマンドを記述してください。

問2-1-3 historyコマンドの実行結果が次のようになるとき、viコマンドで「bin/greet」
ファイルを再度編集するための操作として適当なものを三つ選んでください。
なお、［Ctrl＋P］
や［Ctrl＋E］という表記は［Ctrl］
キーと［P］
キーの同時押しや［Ctrl］
キーと［E］
キーの同時押しを意味します。
2040 pwd
2041 ls -l bin
2042 vi bin/greet
2043 chmod a+x bin/greet
2044 greet
2045 history①［Ctrl＋P］
を4回押して［Enter］（あるいは［Return］）
キーを押す②［Ctrl＋E］
を4回押して［Enter］（あるいは［Return］）
キーを押す
③「!!」
と入力して
［Enter］（あるいは［Return］）
キーを押す④［Ctrl＋R］
を押して「vi」と入力してから［Enter］（あるいは［Return］）
キーを押す⑤「!vi」と入力してから［Enter］（あるいは［Return］）
キーを押す

次ページにも演習問題が続きます25

■ 2-2 コマンドラインのヘルプ機能の利用
問2-2-1 システムのパスワードファイル「/etc/passwd」のフォーマットについてのマニュアルを表示するコマンドとして適当なものを一つ選んでください。
① man passwd② man /etc/passwd③ man -s 8 passwd④ man 5 passwd⑤ man -k passwd
問2-2-2 名前に「tasuke」
を含む写真ファイルのパスを探すコマンドとして適当なものを一つ選んでください。
① find tasuke② search -p tasuke③ locate -i tasuke④ findfile -i tasuke⑤ locate -f tasuke■ 2-3 ディレクトリの利用とファイルの一覧
問2-3-1 次のディレクトリ構造があり、カレントディレクトリは「~/demo/Lv1A/Lv2B」
です。
ファイル「BBA.txt」の内容を表示する
コマンドとして適当なものをすべて選んでください。作業中のユーザーは「hiro」
で、
ホームディレクトリは「/home/hiro」とします。
/home/hiro/demo/├── Lv1A│├── Lv2A││├── Lv3A│││└── AAA.txt││└── Lv3B││└── AAB.txt│└── Lv2B ←カレントディレクトリ
│├── Lv3A│└── Lv3B└── Lv1B├── Lv2A│├── Lv3A│└── Lv3B└── Lv2B├── Lv3A│└── BBA.txt ←表示するファイル└── Lv3B└── BBB.txt① cat ../Lv1B/Lv2B/Lv3A/BBA.txt② cat ../../Lv1B/Lv2B/Lv3A/BBA.txt③ cat ../../../Lv1B/Lv2B/Lv3A/BBA.txt④ cat /home/hiro/demo/Lv1B/Lv2B/Lv3A/BBA.txt⑤ cat ~/Lv1B/Lv2B/Lv3A/BBA.txt
問2-3-2 カレントディレクトリ以下にある、隠しファイルを含む、すべてのファイルおよびディレクトリの詳細情報を表示するコマンドとして適当なものを一つ選んでください。
① ls -lr② ls -la③ ls -aR④ ls -lRa⑤ ls -alr26

■ 2-4 ファイルの作成、移動と削除
問2-4-1 次のディレクトリ構造があり、カレントディレクトリは「~/demo」です。3階層下のディレクトリにある四つのテキストファイル（「AAA.txt」など）
を、「~/demo/Texts」
ディレクトリにまとめてコピーするコマンド（1行）
をワイルドカードを用いて簡潔に記述
してください。
/home/hiro/demo/ ←カレントディレクトリ
├── Lv1A│├── Lv2A││├── Lv3A│││└── AAA.txt││└── Lv3B││└── AAB.txt│└── Lv2B│├── Lv3A│└── Lv3B└── Lv1B│├── Lv2A││├── Lv3A││└── Lv3B│└── Lv2B│├── Lv3A││└── BBA.txt│└── Lv3B│└── BBB.txt└── Texts ←コピー先のディレクトリ
問2-4-2 前問（問2-4-1）のカレントディレクトリより下のディレクトリ構造（3階層、15ディレクトリ）を作成するコマンド（1行）をブ
レース展開を用いて簡潔に記述してください。

3 コマンドラインの力■ 3-1 コマンドラインでのファイルアーカイブ
問3-1-1 tarコマンドと組み合わせて2022年時点で使用されることが多いファイル圧縮形式を三つ選んでください。
① ZIP② GZIP③ UNIX Compress④ BZIP2⑤ XZ
問3-1-2 「PartyPics.tar.xz」という圧縮アーカイブファイルをカレントディレクトリに展開するコマンドとして適当なものを二つ選
んでください。
① tar -t -v -f PartyPics.tar.xz② unxz -c PartyPics.tar.xz | tar -x -v③ tar -x -v -J -f PartyPics.tar.xz④ tar -x -v -j -f PartyPics.tar.xz⑤ unxz PartyPics.tar.xz; tar -xf PartyPics.tar.xz

次ページにも演習問題が続きます27

■ 3-2 ファイルからのデータの検索と抽出
問3-2-1 テキストファイル「fruits.txt」
に対してコマンドを実行した結果の一部を次に示します。最後のgrepコマンドで出力された行として適当なものをすべて選んでください。
$ cat fruits.txt ↵
lemon
melon
mango
mangosteen
watermelon$ grep '^m.*n$' fruits.txt ↵① lemon② melon③ mango④ mangosteen⑤ watermelon
問3-2-2 次のような地方公共団体コード情報を格納したCSVファイル「data.csv」があります。兵庫県内の市町村の団体コード
を市町村名順（50音順）に出力する処理をするコマンド行を記述してください。
コマンド行は、「grep」「sort」「cut」「tail」の各コマ
ンドをこの順にパイプでつないで構成します。
また、最後のtailコマンドは「tail -n +2」という形で実行するものとします。
団体コード,都道府県名,市区町村名,都道府県名(カナ),市区町村名(カナ)010006,北海道,,ホッカイドウ,
011002,北海道,札幌市,ホッカイドウ,サッポロシ
012025,北海道,函館市,ホッカイドウ,ハコダテシ
012033,北海道,小樽市,ホッカイドウ,オタルシ（略）
473626,沖縄県,八重瀬町,オキナワケン,ヤエセチョウ
473758,沖縄県,多良間村,オキナワケン,タラマソン
473812,沖縄県,竹富町,オキナワケン,タケトミチョウ
473821,沖縄県,与那国町,オキナワケン,ヨナグニチョウ■ 3-3 コマンドをスクリプトにする
問3-3-1 都道府県名を引数に指定して実行すると、その都道府県に存在する市区町村の名前を50音順で表示するシェルスクリ
プトを作成してください。都道府県のデータは、前問（問3-2-2）のCSVファイル
「data.csv」
を参照するものとします。引数についてのエラー処理は考慮しなくて構いません。
問3-3-2 前問（問3-3-1）
で作成したシェルスクリプトを、複数の都道府県名を指定できるように改造してください。各都道府県の情報は引数に指定した順に表示するものとし、最初に「都道府県名:」という書式の区切り行を表示するものとします。引数の数が「0」の場合には、
シェルスクリプトの使用方法を標準エラー出力に表示してください。

4

Linuxオペレーティングシステム■ 4-1 オペレーティングシステムの選択
問4-1-1 Linuxディストリビューションのすべてで共通に利用されているコンポーネントを一つ選んでください。
① Linuxカーネル② GNOME③ KDE④ Ubuntu⑤ CentOS28

■ 4-2 コンピュータハードウエアの理解
問4-2-1 2番目に認識されたハードディスクの3番目のパーティションを示すデバイスファイルとして適当なものを一つ選んでください。
① /dev/disk2/3② /dev/sd2/3③ /dev/sdbc④ /dev/sdb3⑤ /dev/sd2c■ 4-3 データの保管場所
問4-3-1 topコマンドを実行すると次のように表示されました。
このマシンで現在、カーネルやプログラムが使用しているメモリ
ー量は何Gバイトですか。
top - 21:36:57 up 36 days, 22:57,

2 users,load average: 0.02, 0.02, 0.00

Tasks: 253 total,
1 running, 252 sleeping,
0 stopped,
0 zombie%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 31998.3 total, 10226.9 free, 17520.9 used,
4250.5 buff/cache
MiB Swap: 30274.0 total, 30274.0 free,
0.0 used. 14013.3 avail Mem① 約32Gバイト② 約22Gバイト③ 約17Gバイト④ 約14Gバイト⑤ 約62Gバイト
問4-3-2 システムで稼働中のすべてのプロセスの情報を表示するコマンドとして適当なものを二つ選んでください。
① ps -a② ps -e③ ps -l④ ps a⑤ ps ax■ 4-4 ネットワーク上のコンピュータ
問4-4-1 インターネットでは使えないものを含めて、ホストに割り当てて利用できるIPアドレスをすべて選んでください。
① 192.168.1.256② 2001:db8:1234::258:1③ 192.168.100.200④ fe80::baae:edff::e74:cc09⑤ 255.255.255.255
問4-4-2 通信相手のホスト名やIPアドレスを表示できるコマンドを二つ選んでください。
① ifconfig② ipconfig③ netstat④ host⑤ ss

次ページにも演習問題が続きます29

5 セキュリティとファイルパーミッション■ 5-1 セキュリティの基本とユーザータイプの確認
問5-1-1 現在システムにログインしているユーザーの一覧を表示するコマンドを二つ選んでください。
① logins② who③ whois④w⑤ last
問5-1-2 参照するDNSサーバーを一時的に変更するための作業手順として最も適当なものを一つ選択してください。
① suコマンドを実行してroot権限のシェルを起動してから「/etc/resolv.conf」
ファイルを編集する②「sudo vi /etc/resolv.conf」
コマンドを実行してファイルを編集する③「sudo bash」
コマンドを実行してroot権限でシェルを起動してから「/etc/resolv.conf」
ファイルを編集する④「su -c "nano /etc/resolv.conf"」
コマンドを実行してファイルを編集する⑤ ログアウトしてrootとしてログインし直してから「/etc/resolv.conf」
ファイルを編集する■ 5-2 ユーザーとグループの作成
問5-2-1 「/etc/passwd」
ファイルと「/etc/group」
ファイルの内容を表示した結果が次の場合、ユーザー「hanako」が所属するグ
ループをすべて選んでください。
$ cat /etc/passwd ↵（略）
hanako:x:1011:1011:Hanako Nishikawa:/home/hanako:/bin/bash（略）$ cat /etc/group ↵（略）
cdrom:x:24:taro,jiro,hanako
users:x:100:
hanako:x:1011:
tech:x:2001:taro,jiro
sales:x:2002:jiro,hanako（略）① cdrom② users③ hanako④ tech⑤ sales
問5-2-2 ユーザー
「sabuchan」とグループ「sabuchan」
を新規に作成し、
ユーザー「sabuchan」のプライマリグループをグルー
プ「sabuchan」にするためのコマンドとして適当なものを二つ選んでください。選択するコマンドは、多くのLinuxディストリビュー
ションで共通に利用できるものにしてください。
① sudo useradd sabuchan② sudo useradd -g sabuchan sabuchan③ sudo adduser sabuchan④ sudo groupadd sabuchan; sudo useradd -g sabuchan sabuchan⑤ sudo mkuser sabuchan

30

■ 5-3 ファイルのパーミッションと所有権の管理
問5-3-1 ユーザー
「ron」
は、
グループ
「ron」
「football」「ama」に所属しています。次のファイルツリーにおいて、
ユーザー
「ron」
が上書きできるファイルはどれですか。
すべて選択してください。
ファイルツリーの右側に表示しているのは、左側のファイルやディレクトリの詳細情報をlsコマンドで表示した結果の一部です。
/ pub├── football│├── ama││└── scores.txt│└── pro│└── scores.txt└── hockey├── ama│└── scores.txt└── pro└── scores.txt

drwxrwxrwx 4 fadm fadm
drwxr-x--- 4 fadm football
drwxrwsr-x 2 fadm ama-rw-rw-r-- 1 fadm ama
drwxrwsr-x 2 fadm pro-rw-rw-r-- 1 fadm pro
drwxr-x--- 4 fadm hockey
drwxrwsr-x 2 fadm ama-rw-rw-r-- 1 fadm ama
drwxrwsr-x 2 fadm pro-rw-rw-r-- 1 fadm pro① /pub/football/ama/scores.txt② /pub/football/pro/scores.txt③ /pub/hockey/ama/scores.txt④ /pub/hockey/pro/scores.txt⑤ 上書きできるファイルはない
問5-3-2 「/pub/FamilyPictures」
ディレクトリに保管しているファイルを、
グループ「family」のメンバーすべてが読み出せるようにするためのコマンドとして、適当なものを一つ選んでください。作業前の「/pub/FamilyPictures」
ディレクトリとその中のファイルの所有者と所有グループは自分で、「/pub/FamilyPictures」
ディレクトリのパーミッションは
「750」
とします。
① chmod g+r /pub/FamilyPictures② chmod -R g+r /pub/FamilyPictures③ chgrp -R family /pub/FamilyPictures④ chgrp family /pub/FamilyPictures/*⑤ chmod -R o+r /pub/FamilyPictures■ 5-4

特別なディレクトリとファイル

問5-4-1 一時ファイル作成用ディレクトリ
「/tmp」「/var/tmp」のパーミッションに、
次のように見慣れない「t」の文字がありました。
この「t」
についての説明として適当なものを一つ選んでください。
$ ls -ld /tmp /var/tmp ↵drwxrwxrwt 17 root root 4096
drwxrwxrwt 7 root root 4096

7月 29 21:21 /tmp
7月 29 21:21 /var/tmp①「temporary」に由来するもので、誰でも自由に読み書きできることを示す②「set other」に由来するもので、所有者や所有グループ以外でも自由に読み書きできることを示す③「strict」に由来するもので、ディレクトリに置かれるファイルのサイズが特定サイズ（例えば1Gバイト）までに制限されることを示す④「sticky」に由来するもので、ディレクトリに置かれたファイルは、その所有者のみが削除できることを示す⑤「throttle」に由来するもので、通常のファイルよりも読み書きが高速なディレクトリであることを示す
問5-4-2 「/home/tomo/cal.tbl」というシンボリックリンクを作成し、そのリンクを経由して/home/sales/calendar.tbl」というファイルにアクセスできるようにするコマンドとして適当なものを二つ選んでください。
なお、作業中のユーザーのホームディレクトリ
（/home/tomo）
以下にある「/home/tomo/tmp」がカレントディレクトリであるとします。
① ln -s /home/sales/calendar.tbl ~/cal.tbl② ln -s ../../sales/calendar.tbl ~/cal.tbl③ ln -s ../sales/calendar.tbl ~/cal.tbl④ ln -s ~/cal.tbl /home/sales/calenear.tbl⑤ ln ../../sales/calendar.tbl ~/cal.tbl

31

Part 3

演習問題集の解答と解説

Part3では、
Part2で出題した演習問題の解答を順に示しながら解説します。
なお、解答は末尾にまとめて掲示しています。
出題範囲の各セクションのタイトルに付けた「★」マークの数は出題頻度を示します。
数が多い（出題頻度が高い）
ものから学習していくと効率的です。

1 Linuxのコミュニティとオープンソースのキャリア■ 1-1 Linuxの革命と人気のオペレーティン
グシステム
（★★）
このセクションでは、さまざまな種類のLinuxディストリビ
ューションに関する知識が問われます。Linuxシステムは一般に、LinuxカーネルとGNUプロジェクトなどの成果を中心とす

プログラミング言語です。なお、代表的なデータベース管理シ
ステムには、③⑤のほかに「MySQL」「SQLite」などがあります。
それぞれの関係や特徴も理解しておきましょう。
問1-2-2の解答と解説

解答は「①④」です。
①のC言語は歴史あるコンパイル型の言語で、Linuxカーネ

ルや多くのシステムツールの作成に使われています。②のるさまざまなアプリケーションプログラムを組み合わせて作ら

Pythonは現代的で多機能なインタプリタ型の言語で、豊富なれます。組み合わせて作ったシステムを「ディストリビューショ

ライブラリがそろっていることなどからとても人気があります。

ン」、それを作成、配布する人たちを「ディストリビュータ」と呼③のJavaScriptはWebブラウザ上で実行できるインタプリタ

びます。代表的なディストリビューションと、その特徴はしっか型の言語です。最近はWebアプリケーションサーバー側でもり覚えておきましょう。
問1-1-1の解答と解説使われるようになっています。④のJavaは大規模な企業向け
アプリケーションを作成するためによく使われているコンパイ
ル型の言語です。名前は似ていますが、JavaとJavaScriptはま

解答は「②③」です。

ったく異なる言語です。⑤のPHPは対話的なWebページを生Linuxディストリビューションについて覚えておくべき主な特成することを主な目的とするインタプリタ型の言語です。

徴は、商用/フリーの別と商用サポートの有無、パッケージ形
式、パッケージの選択ポリシーなどです。商用サポートが利用でき、安定したバージョンのアプリケーションを長くサポートす問1-2-3の解答と解説
解答は「④」です。

る も の（「Red Hat Enterprise Linux」「Ubuntu LTS」
「SUSE」な

主なパッケージ形式には「Red Hat Enterprise Linux」を中ど）は、サーバーなどの実用システムに向いています。一方、常心とするRPM系と、「Debian」
を中心とするDEB系の2種類がに新しいハードウエアやソフトウエアを試したい場合には、短あります。
それぞれについて、検索、
インストール、情報調査、削期間にバージョンアップを繰り返すディストリビューションが除などの操作ができるようになっておきましょう。
どちらか一方向いているでしょう。多様なLinuxだからこそ、適材適所の選択

を実習で先に身に付け、もう一方はノートに対応表を作って覚ができることが重要です。

えると効率的に学習できます。
どちらの系統にも、一つのパッ■ 1-2 主なオープンソースのアプリケーション（★★）
このセクションでは、さまざまな種類のOSSや、
プログラミン

グ言語の名前と特徴を知っていることが問われます。
また、
それらのアプリケーションをインストールして利用するために、
yumやaptといったパッケージマネジャを使用する技能も必要です。
問1-2-1の解答と解説

ケージファイルだけを操作するコマンド（dpkgやrpmなど）と、依存関係を考慮して複数のパッケージを操作できるコマンド（aptやyum、dnf、zypperなど）があります。

■ 1-3 オープンソースソフトウエアとライセンス（★）

このセクションでは、OSSの文化とライセンス（利用許諾）
に関する理解が問われます。OSSといってもその多くは作者が権利を放棄しているわけではなく、作者の定める条件に従って利用する必要があります。利用条件を定めたものが「ライセン

解答は「③⑤」です。

ス」です。主要なライセンスとその条件をしっかり理解して遵守①のGNOMEは統合デスクトップ環境、②のNGINXはWeb

しないと、
ユーザーコミュニティから反発を受けたり、損害賠償

サーバーソフトウエア、④のPerlは歴史あるインタプリタ型のを求められたりすることがあります。
ライセンスの背景となる

32

著作権や、
オープンソースの哲学に対する理解も必要です。

バシモードの利用方法を理解していることも必要です。

問1-3-1の解答と解説

問1-4-1の解答と解説

解答は「③」です。

①私的利用の場合にソースコードを公開する必要はありま

解答は「③」です。

①はLinuxシステムをシャットダウンして再起動する操作でせん。著作権法上も著作物の私的複製は禁止されていませす。②は仮想コンソールに切り替える操作です。CLIのログイン

ん。②GPLではソースコードの配布に実費程度の手数料を取

プロンプトが表示され、ログインすればコマンド操作が可能にることを禁止していません。
③GPLはソフトウエアの利用者がなります。
ファンクションキーの割り当てはディストリビューショ

そのソースコードにアクセス可能にすることを求めています。

ンによって異なり、［F1］〜［F6］のいずれか一つ（あるいは複④改造部分に自社の著作物であることを明記することは当然

数）を使うのが一般的です。③の操作によってデバイスが再初の権利です。ただしGPLは改造物を同じGPLで配布することを期化されて問題が解決することがあります。解決すると作業を求めています。⑤GPL違反ではありません。サーバーソフトウ

そのまま続行できるので最初に試すべき対処です。④SSH

エア用のGNU AGPL（Aﬀero General Public License）というラサーバーが稼働していてネットワークが生きていれば、この方イセンスでは、
このような利用はライセンス違反になります。

法も有効です。⑤は他の方法で対処できない場合の奥の手で

問1-3-2の解答と解説
解答は「③」です。

①②GPLとは 異 なり、ASLで は 改 変したソフトウエアをク
ローズドソースの商品として販売することを禁止していません。③ただし、改変元ソフトウエアが何であるかを画面、
あるいはマニュアルなどでソフトウエア利用者に伝えることが求めらす。
ファイルシステムが破損する恐れがあるので、できれば避けた方がよいでしょう。

2 Linuxシステムで自分の手法を見つける■ 2-1 コマンドラインの基本（★★★）

このセクションでは、
コマンドラインの基本的な書式や、クれています。④GPLのコピーレフトに相当する条項（改変版もオーティング（引用符の使い方）、
シェル変数の使用方法、
ヒス

同じライセンスを採用することを強制する条項）を含まないラ

トリ機能の使い方などが問われます。主要な環境変数、特にイセンスを「パーミッシブ（寛容な）ライセンス」と呼ぶことがあ

PATH環境変数の意味と変更方法もしっかり理解しておきましります。パーミッシブライセンスには、MITライセンス、修正BSDょう。

ライセンス、Apacheライセンスなどがあります。⑤倫理上は問題ですがライセンス違反ではありません。犯罪に当たるかどうかは各国の法律によります。
問1-3-3の解答と解説

解答は「②③」です。

問2-1-1の解答と解説

解答は「good morning $USER」
です。

この問題のポイントは「name=\$USER」という行にあります。
この行では「\」というメタ文字によって続く「$」が単なる文字として解釈されるため、name変数にはUSER変数の値では①コードを誰もが変更可能にすることがオープンソースのなく「\$USER」という文字列が格納されます。
コマンド行では、目的です。②利用目的や利用者の属性による利用制限はオー

このようなエスケープ処理やクオーティングなどの働きを理解

プンソースの理念に反するので禁止されています。③どのようして適切に使い分けることが重要です。実機でいろいろと試しなソフトウエア（例えば商用ソフトウエア）
とも組み合わせて利てみることが、理解への近道です。

用できることがオープンソースの条件です。
④コピーレフト条項があるGPLも、オープンソースの定義に合致するライセンスです。⑤いかなる配布方法も認めることがオープンソースの条件です。なお、OSIの「オープンソースの定義」
については「https://opensource.jp/osd/osd19/」などを参照してください。

■ 1-4 ICTスキルとLinuxでの作業（★★）

問2-1-2の解答と解説

解答例は「PATH=~/bin:$PATH」です。行頭にexportコマン

ドを置いても構いませんし、右辺をダブルクオートで囲んでも構いません（シングルクオートは不可）。HOME環境変数を用いて「PATH=$HOME/bin:$PATH」
としても構いません。いろいろな方法を実習しておきましょう。

このセクションでは、
デスクトップ環境（GUI環境）
とコマン
ドライン
（CLI環境）の両方で、Linuxを操作するための基本を習得していることが求められます。
また、一般的なセキュリティ対策として、パスワード管理の方法や、Webブラウザのプライ

33

問2-1-3の解答と解説

解答は「①④⑤」です。

問2-2-2の解答と解説
解答は「③」です。

①［Ctrl＋P］（あるいは［↑］キー）を押すと一つ前に入力した①ﬁndコマンドでもファイルのパスを探せますが、書式が異コマンドが表示されます。4回押せば「vi bin/greet」というコマなります。ﬁndコマンドは多機能で使い方も複雑なので、Linux

ンド行が表示されます。②［Ctrl＋E］
を押すと、現在のコマンド

Essentialsの試験範囲には含まれません。②searchという標準行の末尾にカーソルが移動します。③この操作をすると直前の的なコマンドはありません。③locateコマンドは定期的に更新コマンドを再実行します。④［Ctrl＋R］
を押すとコマンド履歴のされるデータベースを参照して、条件（パターン）に一致する名

サーチモードに入ります。
このモードでコマンドの先頭数文字

前を持つファイルのパスを表示します。
「-i」
オプションは、英字を入力すると、一致するコマンドラインが表示されます。⑤この大文字小文字を区別しないことを指示するものです。なお、の操作をすると、直近に実行された「viから始まるコマンド行」

同コマンドはデータベースを参照して動作するので高速ですを再実行します。先頭文字の代わりに履歴番号を指定することが、データベースの自動更新は通常1日に1回だけです。
そのもできます。

ため、新たに作成したファイルは検索されないことがありま■ 2-2 コマンドラインのヘルプ機能の利用（★★）
このセクションでは、
システムに用意されているヘルプ文書を探して参照すること、すなわち分からないことを自分で調べる技量が求められます。多くのコマンドが用意する「--help」
オ
プションやmanコマンド、infoコマンドの使い方のほか、man
ページの主要な章立てを覚えておく必要があります。
また、す。強制的にデータベースを更新するupdatedbというコマン
ドがありますが、実行するにはroot権限が必要です。④ﬁndﬁleという標準的なコマンドはありません。⑤locateコマンドに「-f」というオプションはありません。

■ 2-3 ディレクトリの利用とファイルの一覧（★★）

このセクションでは、
カレントディレクトリ
（作業ディレクトリ）「/usr/share/doc」
ディレクトリを探してアプリケーションのマを変更したり、
ファイルやディレクトリの名前を表示したりする

ニュアルを調べたり、locateコマンドでファイルのあるパスを技能が求められます。
カレントディレクトリや相対パス、絶対パ

見つけたりする方法も覚えておきましょう。実習では、分からなスなどの概念もしっかり理解する必要があります。

いことをすぐに調べる習慣を付けましょう。
問2-2-1の解答と解説
解答は「④」です。

①オプションを指定しない場合、manコマンドは最も小さな章番号のマニュアルを表示します。
この場合は、1章「コマンド」覚える必要があるコマンドはcdとlsだけですが、lsコマンド
はオプションが多く、表示内容や形式がさまざまに変化するので、実習しながら少しずつ使い方を身に付けていきましょう。
問2-3-1の解答と解説

解答は「②④」です。

にあるpasswdコマンドのマニュアルが表示されます。②man

すべてのディレクトリには、
そのディレクトリ自体を示す「.」

コマンドの引数にファイルのパスを指定すると、そのファイルと、親ディレクトリを指す「..」というディレクトリエントリがありの内容を表示します＊1。③章番号は「-s」
オプションで指定しまます。
カレントディレクトリを基準とする「相対パス」指定ではすが、8章は「システム管理コマンド」
です。④「-s」
オプションを「..」がよく使われます。④は「/」を基準とする「絶対パス」を使っ省略して章番号を指定できます。5章は「ファイルフォーマット」

た指定方法です。⑤は「demo/」が含まれないので不正解でですから、目的の/etc/passwdのマニュアルが表示されます。

す。
ところでこれは相対パス指定、絶対パス指定のどちらでしょ

なお、章立てはmanコマンドのマニュアルで説明されていまうか。
「~」をユーザーのホームディレクトリ（ここでは「/home/

す。⑤manコマンドの「-k」
オプションは、キーワードに基づいhiro」）に展開するのはシェルの働きです。
そのため、catコマンてマニュアルページを探すためのものです。
このコマンドでドに渡されるのは展開後の絶対パスになります。

は、「passwd」
をコマンド名に含むマニュアルや、「/etc/passwd」
ファイルなどのマニュアルが、章番号や要約と共に一覧表示されます。章立てを確認したいときや、正確なコマンド名を覚えていないときなどに便利です。aproposコマンドも同じ働きをします。

問2-3-2の解答と解説
解答は「④」です。

lsコマンドの「-l」は詳細情報を表示するオプション、「-r」は表示順序（通常はアルファベット順）
を逆にするオプションです。
また「-a」は隠しファイル（「.」で始まる名前のファイル）
を表示

＊1

34

指定したファイルがmanフォーマットである場合には、整形して表示します。

するオプション、「-R」は指定したディレクトリ以下にあるすべてのファイルやディレクトリを表示するオプションです。
「-l」
「-R」

「-a」
を指定する④が答えになります。

■ 2-4 ファイルの作成、
移動と削除
（★★）

このセクションでは、
ディレクトリやファイルの作成や削除、加えて、それらをコピーしたり移動したりできる技能が求められます。
また、効率的な操作を実現するには、シェルのワイルド

3 コマンドラインの力■ 3-1 コマンドラインでのファイルアーカイブ（★★）

このセクションでは、複数のファイルを一つに取りまとめる

アーカイブの作成や、ファイル圧縮の操作に関する技能が求カード（グロブ文字）展開機能やブレース展開機能についてもめられます。Linuxではtarコマンドによって作成されるアーカ

知っておく必要があります。
さまざまな実習を重ねて、しっかりイブ形式（tarアーカイブ）がよく使われます＊2。tarアーカイブ

身に付けておきましょう。
問2-4-1の解答と解説

解答例は「cp */*/*/*.txt Texts」
です。

「*」というワイルドカード指定は、その場所に存在する、「.」で始まらない名前のすべてのファイルおよびディレクトリに置き自体にはデータの圧縮機能がありませんので、別の圧縮コマンドを使ってtarアーカイブファイルを丸ごと圧縮するのが普通です。
問3-1-1の解答と解説

解答は「②④⑤」です。

換えられます。
また「*.txt」というワイルドカード指定は、
その場①ZIP形式にはアーカイブ機能が含まれているので、tarコマ所に存在する、「.」で始まらず「.txt」
で終わる名前のすべてのフンドと組み合わせて使用することはほとんどありません。②圧

ァイルおよびディレクトリに置き換えられます。
そのため、3階

縮用のgzipコマンド、伸長用のgunzipコマンドで操作します。

層下のディレクトリにあるテキストファイルは「*/*/*/*.txt」と指tarから呼び出す場合のオプションは「-z」です。
ファイルの拡張

定できます。
シェルはこの指定を次のように展開します。

子には
「.gz」
を使うのが一般的です。
③圧縮用のcompressコマ
ンド、伸長用のuncompressコマンドで操作します。
しかし、圧

Lv1A/Lv2A/Lv3A/AAA.txt Lv1A/Lv2A/Lv3B/AAB.txt Lv1B/Lv

縮率が低いため現在ではほぼ使われません。
ファイルの拡張

2B/Lv3A/BBA.txt Lv1B/Lv2B/Lv3B/BBB.txt

子には「.Z」を使うのが一般的です。④圧縮用のbzip2コマン
ド、伸長用のbunzip2コマンドで操作します。tarから呼び出す

ワイルドカードには「*」のほか、任意の1文字を示す「?」、文

場合のオプションは「-j」です。
ファイルの拡張子には「.bz2」
を字の範囲を示す「[ ]」などがあります。
これらを使ったファイル

使うのが一般的です。⑤圧縮用のxzコマンド、伸長用のunxzの抽出を「globbing（グロビング）」と呼びます。grepコマンド

コマンドで操作します。tarから呼び出す場合のオプションはと似ていますが、混同しないように気などで使う「正規表現＊」「-J」
です。
ファイルの拡張子には「.xz」を使うのが一般的です。

を付けてください。なお、globbingはシェルの機能ですから、

なお、
圧縮率は一般に「Unix Compress」「GZIP」「BZIP2」「XZ」

あらゆるコマンドで使用できます。

の順に高くなります。

2-4-2の解答と解説

問3-1-2の解答と解説

解答例は「mkdir -p Lv1{A,B}/Lv2{A,B}/Lv3{A,B} Texts」
です。

解答は「②③」です。

シェルにはブレース展開機能が備わっています。
これは、
カ①tarの「-t」
オプションは内容の表示を指示するものです。

ンマで区切った単語のリストを波かっこ（ブレース）
で囲んだ

XZ圧縮データを伸長するオプションは指定していませんが、ものを、各単語ごとに展開する機能です。同機能によって、例え

最近のtarコマンドは、圧縮の有無や圧縮方式を検出して内部

ば「{A, B, C}D」という記述は「AD BD CD」のように展開されま的に伸長コマンドを自動的に呼び出して処理します＊3。②目的

す。
これを使うと「Lv1A」「Lv1B」
以下にある最も深い階層のデの処理を素直に実現するものがこれです。unxzコマンドにィレクトリ群は「Lv1{A,B}/Lv2{A,B}/Lv3{A,B}」という記述で指定「-c」
オプションを指定して実行すると、伸長結果を標準出力にできます。ただし、「mkdir Lv1{A,B}/Lv2{A,B}/Lv3{A,B}」とする

書き出します＊4。tarコマンドの「-f」
オプションを省略すると標だけでは中間ディレクトリが存在しないのでエラーになりま

準入力からアーカイブを読み取ろうとしますので、パイプでつす。中間ディレクトリを作成する「-p」
オプションを指定する必

なぎます。
「-x」
オプションでアーカイブを展開するときは、「-v」

要があります。

オプションを併用して進行状況を表示するとよいでしょう。③「-J」
オプションを指定すると、tarコマンドは内部的にxzコマン【正規表現】 通常の文字と「メタキャラクタ」（特殊文字）
を組み合わせたパターンを使用して、複数の文字列の集合を指定するための表記法。
「regular expression」の訳語。

＊2 「tar」という名前は「tape archive」に由来します。
もともとは磁気テープにデー
タをバックアップするためのコマンドでした。
＊3 tarコマンドの種類やバージョンによっては自動処理がうまく働かないこともあります。
＊4 同じ処理は、xzcatコマンドでも実現できます。

35

ドを呼び出してデータを伸長します。処理内容としては②と同で第1フィールド（団体コード）と、第3フィールド
（市区町村名）じです。④「-j」はBZIP2形式用のオプションです。圧縮形式が異の出力を指定します。

なるのでエラーになります。⑤unxzコマンドの実行によってここまでで、ほぼ目的は達成していますが、1行目に出力さ「PartyPics.tar.xz」
ファイルが「PartyPics.tar」
ファイルに変化しれる兵庫県のコードが邪魔なので、2行目以降を表示することます。
「PartyPics.tar.xz」が存在しないのでtarコマンドの実行

をtailコマンドの「-n +2」
オプションで指示します。

時にエラーになります。unxzコマンドを実行せず、後半のtarコ
マンドだけを実行すると問題なく展開できます。

このようにパイプで複数のコマンドをつなぎ、ときにはリダ
イレクトなどを駆使しながら、複雑な処理を実現できるのが、■ 3-2 ファイルからのデータの検索と抽出（★★★）
このセクションでは、いわゆる「テキスト処理」の技能が求め

コマンドラインでのテキスト処理の醍醐味です。

■ 3-3 コマンドをスクリプトにする（★★★★）
このセクションでは、
ごく簡単なシェルスクリプトを作成してられます。つまり、テキストファイルから必要な情報を抽出し利用する技能が求められます。具体的には、
シェルスクリプトて、別の形にまとめ直す能力が必要です。
テキスト処理はコマの書式、スクリプトの中で使用する特殊変数、繰り返しのため

ンドラインの力が最も発揮される分野であり、実務でも利用すのforループなどを理解して使いこなせることが必要です。当る場面が多い処理です。出題頻度も高く、CSV形式などの表形

然ながら、
エディタ
（nanoおよびvi）の基本的な操作方法を習式データから必要な部分を抽出する問題や、正規表現を使っ得しておくことも重要です。

て指定したパターンを含む行を取り出す問題などがよく出題されます。
なお、正規表現には基本正規表現と拡張正規表現があります。Linux Essentialsでは基本正規表現のみが出題されます。

問3-3-1の解答と解説

解答例は図1の通りです。

コマンドとして実行できるスクリプトの1行目には、「#!」から始まる行が記述されています。
この行を「シェバン」と呼びま

問3-2-1の解答と解説す。
シェバンでは、「#!」に続けて、そのスクリプトを実行するプ

解答は「②④」です。

ログラムの絶対パスを記述します。
シェルスクリプトの場合はgrepコマンドの引数のうち引用符で囲まれた部分が正規表

シェル（Bash）が実行することが多く、「#!/bin/bash」
といった記

現です。
「^」は行の先頭を意味し、「^m」で「mから始まる行」
を述になります。

示します。
「.」は任意の1文字と一致し、文字「*」は直前の文字

2行目では、読み込むファイルの名前をcodeﬁle変数に格納

ないしパターンを「0回以上繰り返す」
ことを意味します。最後

しています。環境によって変化するパス名などは、冒頭部分での「$」は行末を意味しますから、「n$」は行末が「n」であること

このように変数に格納しておき、実際の処理では変数を使うよを示します。
まとめると「mで始まってnで終わる行」ということ

うにすると、処理内容が分かりやすく、変更漏れを少なくできまになりますから、一致して表示されるのは「melon」「mangos

す。3行目で使用している「$1」は「位置変数」と呼ばれる特殊な

teen」
です。

変数です。
これには、
スクリプト起動時に最初に指定した引数が格納されます。2番目の引数は「$2」に格納されます。

問3-2-2の解答と解説

4行目には、問3-2-2の解答例と同様のコマンド行を記述し解答例は「grep 兵庫県 data.csv | sort -t , -k 5 | cut -d , -f 1,

3 | tail -n +2」
です。

ています。
コード番号が不要なので、catの「-f」
オプションが変更されています。
スクリプトにすれば、毎回長いコマンド行を

このコマンド行では、
まずgrepコマンドで「兵庫県」
を含む

打ち込む必要がなくなります。

行のみを抽出します。sortコマンドはフィールドの概念をサポ作成したシェルスクリプトは、「bash シェルスクリプトファイートしており、指定したフィールドをキーとして行を並び替え可ル名」のようにbashコマンドの引数に指定すると実行できま能です。
まず「-t ,」
オプションでフィールドの区切り文字（,）
を指

す。
また、
シェルスクリプトファイルに実行権限を付ければ、
「./

定します
（無指定の場合は空白文字）。
そして、「-k 5」
オプション

シェルスクリプトファイル名」というコマンドでも実行できまで5番目のフィールド（片仮名の市区町村名）
をキーとして並びす。

替えます。
続くcutは行から特定のフィールドだけを取り出すコマンドです。
まず「-d ,」
オプションでフィールドの区切り文字（,）
を指定します（sortコマンドとはオプションが異なります）。
そして、「-f 1,3」
オプション36

図 1 問 3-3-1 の解答例#!/bin/bash
codefile=data.csv
prefecture=$1
grep $prefecture $codefile | sort -t , -k 5 | cut -d , -f 3 | tail -n +2

問3-3-2の解答と解説

問4-1-1の解答と解説

解答例は図2の通りです。

解答は「①」です。

図2の①では、条件判断をするif文で「$#」という引数の数をLinuxディストリビューションは、「Linuxカーネル」と「その他

格納する変数の値が「0」かどうかを調べています。
「-eq」は数のツール、アプリケーションソフト」で構成されます。つまり共値が等しいかどうかを調べる演算子です。
「0」の場合は、②の通部分はLinuxカーネルになります。
カーネルとは、
メモリー管

echoコマンドでコマンドの使い方を標準エラー出力に出力し理やプロセス管理などのオペレーティングシステムの中核機

ます。
「>&2」
というリダイレクト指定で出力先が標準エラー出能を提供するソフトウエアコンポーネントのことです。
「Linux」

力になります。
「$0」にはシェルスクリプト名が格納されます。続は、狭義ではLinuxカーネル部分を指す用語です。

くexitコマンドについては後述します。

②③はデスクトップ環境、④⑤はLinuxディストリビューショ③のfor文では、「in」の後に指定したリストから要素を一つずつ取り出し、それを「for」の直後に指定した変数に格納してから、「do」〜「done」の 間 のコマンドを実 行します。
「do」〜「done」の間のコマンドはリストの要素の数だけ繰り返し実行されます。
「$*」は、
スクリプトに渡された引数全体のリストを格納する特殊変数です 。

ンです。

■ 4-2 コンピュータハードウエアの理解（★★）

このセクションでは、
コンピュータハードウエアの構成要素（CPUやメモリー、
ストレージ、入出力装置など）について正しく＊5②の次行と④のexitコマンドでは「終了コード」
を返してスク
リプトの実行を終了しています。終了コードとは、実行の成否をシェル（親プロセス）に通知するための数値です。値は「0」〜「255」の範囲の整数値で、「0」が成功、その他の値が何らかのエラーの発生を意味します。

理解していることが求められます。
また、
それらのハードウエア
がLinuxでどのように取り扱われるかの知識も必要です。
問4-2-1の解答と解説
解答は「④」です。

なお、直前に実行したコマンドの終了コードは「#?」という特一般的なハードディスクドライブのデバイス名は「sd」から殊変数に格納されます。if文で「#?」の値を調べ、それによって始まります。認識順を示す「a」「b」「c」
といった文字が追加さ処理を分岐させることも可能です。

4

れ、さらに何番目のパーティション（区画）であるかを示す「1」「2」「3」といった数字が追加されます。
したがって、2番目に認Linuxオペレーティングシステム

識されたハードディスクドライブの3番目のパーティションを示すデバイス名は「sdb3」
で、デバイスファイルは一般的に■ 4-1 オペレーティングシステムの選択（★）

「/dev/sdb3」になります。

とLinuxの違いや、主なLinuxディストリビューションの特徴を■ 4-3 データの保管場所（★★★）

このセクションでは、さまざまなOS（Windows、macOSなど）理解していることが求められます。出題内容は「1-1Linuxの

このセクションでは、システムの稼働状態を大まかに調べる

革命と人気のオペレーティングシステム」と一部重複していま

ために、Linuxのファイルシステム階層標準「Filesystem Hierar

す。

chy Standard（FHS）」の知識と、プロセスやメモリーの状況を調べるコマンドの知識が求められます。細かな知識は必要ありませんが、
プロセス同士の関係（親子関係）や、
スワッピング＊5 「#@」という特集変数も引数全体を格納しています。入門レベルでは両者の違いを意識する必要はありません。

のような仮想メモリー関連の仕組みを理解しておく必要があります。

図 2 問 3-3-2 の解答例
水色の丸数字は解説用のマークで、解答には含まれません。
#!/bin/bash
codefile=data.csv
if [ $# -eq 0 ] ①
thenecho Usage: $0 PREFACTURE... >&2 ②
exit 1fi
for prefecture in $* ③
doecho ${prefecture}:grep $prefecture $codefile | sort -t , -k 5 | cut -d, -f 3 | tail -n +2
doneexit 0 ④

問4-3-1の解答と解説
解答は「③」です。

「MiB Mem」行の「used」項目の数値が、カーネルやプロセスなどが実際に使用しているメモリーの総
量です。
そのため、
このマシンでは約17.5Gバイトを使用しています。
「buﬀer/cache」項目の数値はディスクキャッシュに使用しているメモリーの総量です。
キャッシュデータをディスクに書き出せば、この部分のメモリーは他の

37

用途に利用できます。
そのため、利用できるメモリーの総量は「free」項目が示す未使用領域の約10Gバイトと合わせて14G

問4-4-2の解答と解説

解答は「③⑤」です。

バイトになります。
これを使い果たすと、スワップ領域への待避①ifconﬁgはネットワークインタフェースの状態を設定、表示が始まって、システムのパフォーマンスが大きく低下します。

するコマンドです。
このコマンドで、ローカルマシンのIPアドレ

問4-3-2の解答と解説

しいipコマンドに置き換えられつつあります。②ipconﬁgはスが分かりますが、通信相手の情報は分かりません。現在は新

解答は「②⑤」です。

ifconﬁgに相当するWindowsのコマンドです。Linuxでは使え

psコマンドのオプションは2種類あることに注意が必要でません。③netstatはネットワーク接続のさまざまな状態を表す。ハイフンから始まるオプションはPOSIXという規格に基づ示するコマンドです。経路情報や統計情報を表示することもでくもので、ハイフンが付かないものはBSD系のUNIXに起源をきます。現在は新しいssコマンドに置き換えられつつあります。

持つものです。①「-a」
オプションは端末から実行されているプ④hostは指定したホストについてのDNS登録情報を検索、表ロセスのみを表示します。②「-e」
オプションは、自分のプロセ示するコマンドです。問い合わせ先のDNSサーバーを指定す

スだけではなくすべてのプロセスを表示します。③「-l」
オプシ

ることもできます。⑤ssはソケット＊の状態を表示するコマンド

ョンは、各プロセスの詳細情報を表示します。④「a」
オプション

で、通信相手の情報も表示します。

は、他のオプションと組み合わせたときにはすべてのプロセスを表示しますが、単体で指定した場合には端末から実行されていないプロセスを除外します。⑤「x」
オプションは端末から実行されていないプロセスを表示します。
psコマンドのオプションは数が多い上に表示内容が多彩に変化するので、すべてを覚えるのはとても大変です。
そのため、5 セキュリティとファイルパーミッション■ 5-1 セキュリティの基本とユーザータイプの確認（★★）
このセクションでは、Linuxのユーザーアカウントの基本をすべてのプロセスの詳細情報を表示するオプション群（POSIX

理解していることが求められます。
ユーザーとグループの関係

系なら「-elf」、BSD系なら「aux」）
を指定して実行し、結果をless

や、一般ユーザーと管理者（root）の違いなどを理解した上で、コマンドなどのページャで表示して必要な情報を検索するの

ユーザー情報を表示したり、一時的にroot権限を得たりするが楽です。

ためのコマンドを使いこなせる必要があります。

■ 4-4 ネットワーク上のコンピュータ（★★）

問5-1-1の解答と解説

このセクションでは、TCP/IPネットワークの基本的な仕組み

解答は「②④」です。

の理解と、ネットワークの状態を大まかに調べる技能が求めら①loginsというコマンドはありません。loginというコマンドれます。最初に前者を学習し、基礎ができてからコマンドの使は存在し、コンソールにログインプロンプトを表示し、ユーい方を学習しましょう。前者の学習では、「IPアドレス」「ポート

ザーが入力するユーザー名やパスワードを確認してログイン

番号」「ルーティング」「DNS」などのキーワードが重要なポイン

シェルを起動する働きをします＊6。②whoコマンドは、
ログイ

トになります。

ン中のユーザー名のほか、ログイン時刻とログイン中の端末

問4-4-1の解答と解説（ネットワーク経由の場合はホスト名ないしIPアドレス）を表示します。③whoisはインターネット上のドメインに関する情報

解答は「②③」です。

を検索するコマンドです。
ローカルユーザーとは関係ありませIPアドレスには、32ビット長のIPv4アドレスと128ビットのん。④wはログイン中のユーザーの活動状態を表示するコマ

IPv6アドレスがあります。①IPv4アドレスは8ビットごとに区切ンドです。ユーザー名のほか、ログイン中の端末、
ログイン時って10進数で表記します。つまり、「0」〜「255」の範囲の10進刻、実行中のコマンドとそれが使用しているCPU時間などを表

数をピリオドで区切って並べます。
そのため「256」という数値示します。⑤lastコマンドはユーザーのログイン履歴を表示しはあり得ません。②一般的なIPv6アドレスの例です。③一般的ます。表示を調べればログイン中のユーザーであるかどうかはなIPv4アドレス（プライベートアドレス）の例です。④IPv6アド

分かりますが、一覧表示ではありません。

レスの表記ルールでは、
コロンの連続は 1カ所のみに限られます。⑤このIPアドレスは「制限ブロードキャストアドレス」と呼
ばれる、LAN内のすべてのマシンを宛先とする通信で使われる特殊なアドレスです。ホストに割り当てることはできません。

38【ソケット】 ホスト間やプロセス間の通信などで利用される抽象的なインタフェー
ス。通信時には、
このインタフェースに通信方法や通信相手、通信状態などの情報が設定される。
＊6 loginコマンドはLinux Essentialsの出題範囲外のため覚える必要はありません。

問5-1-2の解答と解説
解答は「②」です。

問5-2-2の解答と解説

解答は「①④」です。

①suコマンドでrootになるためには、rootのパスワードを①UPGをポリシーに採用する最近のLinuxディストリビュー

知っている必要があります。パスワードの共有につながるた

ションでは、useraddコマンドでユーザーを作成すると、
そのユめ、suコマンドの利用はセキュリティ的に好ましくありません。

ーザー用と同名のグループを自動的に作成してプライマリグ②sudoコマンドは、
あらかじめ許可されたユーザーに対してループに設定します。②useraddコマンドの「-g」
オプションは、のみ root権限を与えます。各ユーザーのパスワードで認証を作成するユーザーのプライマリグループを指定するオプショ

しますので、rootのパスワードの共有は不要です。③root権限ンです。指定したグループが存在しないとエラーになります。

でシェルを起動すると、不必要なコマンドもroot権限で実行し③Debian系ディストリビューションの一部では、useraddコマてしまうことにつながるので、セキュリティ的に好ましくありま

ンドの改良版であるadduserコマンドが使えます＊8。対話的なせん。実行したコマンドの情報がログに記録されないのもセ設定ができる便利なコマンドですが、標準的とは言えないた

キュリティ上のリスクになります。④suコマンドでは、指定した

め不正解にしています。④UPGを採用していないディストリビ

プログラムを直接起動できます。ただし、-cオプションで「コマューションでも利用できる基本的な方法です。
まずグループをンドライン全体」
を一つの引数として指定する必要があります

作成し、そのグループを「-g」
オプションで指定してuseraddコ（クオーティングも必要です）。①と同様の問題があります。⑤

マンドを実行します。⑤mkuserという標準的なコマンドはあり

rootでログインすることには③と同様の問題があります。
また、

ません。

セキュリティ対策でrootではログインできないシステムも増えています。

■ 5-2 ユーザーとグループの作成（★★）■ 5-3 ファイルのパーミッションと所有権の管理（★★）

このセクションでは、Linuxのセキュリティ機能の要となる、

このセクションでは、実際にユーザーやグループを作成する

ファイルやディレクトリの所有者、所有グループ、パーミッショ

コマンドを操作する技能が求められます。求められる知識はン（アクセス許可属性）などについて理解し、それを操作できる「5-1 セキュリティの基本とユーザータイプの確認」と同じでことが求められます。パーミッションの意味がファイルとディレ

すが、実践的な利用ができる必要があります。
アプリケーショクトリで異なることも知っておく必要があります。

ンのインストールの際など、新しいユーザーやグループを作成する場面は意外に多いものです。
コマンドとともに、アカウント情報を格納するファイル（「/etc/passwd」「/etc/shadow」「/etc/group」）の構造と内容はしっかりと覚えておきましょう。
問5-2-1の解答と解説

問5-3-1の解答と解説
解答は「①」です。

①ユーザー「ron」はこのファイルを読み書きできます。②ユーザー「ron」はこのファイルを読めますが書き込めません。
ronはファイルの所有者「fadm」
ではなく、所有グループ「pro」

解答は「①③⑤」です。

にも属していませんから、
その他のユーザーに対するパーミッ①cdromグ ル ープ のメン バ ー は「taro」「jiro」「hanako」でションが適用されます。③④ユーザー「ron」はこれらのファイル

す。②usersグループにはメンバーがいないように見えますが、にアクセスできません。
なぜなら「/pub/hockey」
ディレクトリの

本当にいないかどうかは「/etc/passwd」の内容を見ないと分

パーミッションが、その他のユーザーに対して何も許可していかりません。③「/etc/passwd」
ファイルでユーザー hanakoのないからです。
ディレクトリの実行許可属性が何を意味するか

プライマリグループのグループIDは「1011」だと定義されていをしっかり理解しておきましょう。⑤読み書きできるファイルはます。
「/etc/group」
を見るとグループID「1011」のグループ名

存在します。

は「hanako」だと分かります。なお多くのディストリビューショ
ンは、
ユーザー登録時にユーザー名と同名のグループを作り、それをユーザー専用のプライマリグループにするポリシーを
このポリシーを「User Private Group（UPG）」
採用しています 。
＊7

問5-3-2の解答と解説
解答は「③」です。

①「/pub/FamilyPictures」のパーミッションは「750」なので、と呼びます。
④techグループのメンバーは「taro」「jiro」です。
⑤

このコマンドを実行しても何も変わりません。②「/pub/Familysalesグループのメンバーは「jiro」「hanako」です。

Pictures」
ディレクトリとその中のファイルに対してグループの＊7 以前は、一般ユーザーのプライマリグループを「users」などの共通のグループにするポリシーがよく採用されていました。
それに比べるとUPGの方がセキュリティを高められます。

＊8 Red Hat Enterprise Linux系ディストリビューションでは、adduserコマンドは
useraddコマンドへのシンボリックリンクになっています。

39

読み出しが許可されますが、ファイルの所有グループは自分のdar.tbl」を指すシンボリックリンク「~/cal.tbl」が作成されます。

ままなので、「family」
グループのメンバーは読み出せません。

相対リンクのシンボリックリンクは、そのリンクが置かれている③「/pub/FamilyPictures」
ディレクトリとその中のファイルの所

ディレクトリを起点として解釈されますので、無効なシンボリッ

有グループが「family」に変更され、メンバーが読み出せるよう

クリンク（リンク切れ）になります。③相対パス「../sales/calendaになります。なお、
このコマンドを一般ユーザー権限で実行す

r.tbl」を指すシンボリックリンク「~/cal.tbl」が作成されます。正

るには、作業中のユーザーが変更先のグループのメンバーでしく動作するリンクになります。相対パスでシンボリックリンク

なくてはなりません。④「/pub/FamilyPictures」
ディレクトリ内を作る場合は、リンクを置くディレクトリに移動して作業するとのファイル の 所 有グル ープ が「family」に変 更されますが、ミスが少なく効率的です。④引数の順序が逆です。
⑤「-s」
オプ

「/pub/FamilyPictures」
ディレクトリの所有グループは自分のションがないので作成されるのはハードリンクになります（そままで、その他のユーザーに対する実行許可属性がありませのため不正解です）。なお、②と同じように見えますが、ハードん か ら、メ ン バ ー は ファイ ル に アク セ ス で き ま せ ん。⑤

リンク作成時の相対パス指定はカレントディレクトリを起点と「/pub/FamilyPictures」
ディレクトリのパーミッションが「754」

して解釈されます。
そのため、正しく動作するリンクになりまになりますが、その他のユーザーに対する実行許可属性があす。

りませんから、
メンバーはファイルにアクセスできません。

■ 5-4 特別なディレクトリとファイル（★）

このセクションでは、三つの特殊なパーミッションのうち「stickyビット」についての正しい知識と、一時ファイル用のディ

最後に
演習問題の解答をまとめたものを表1に示します。採点の際には、これを参照すると便利です。

レクトリを使いこなす技量が求められます。残り二つの特殊な演習問題には、学習においてつまずきがちな事柄について

パーミッションは、Linux Essentialsの出題範囲には含まれま問うものを多数盛り込みました。
これらの問題をスラスラと解せん。
また、ファイルに別名を付ける「シンボリックリンク」の仕ければ、Linux Essentialsの認定を得られるレベルの知識が十組みを理解して活用する技量も必要です。似た仕組みである

分あると考えられます。受験に挑戦したり、より高度な学習を始「ハードリンク」は、Linux Essentialsの出題範囲には含まれまめたりする「次のステップ」に進んでよいでしょう。

せん。
問5-4-1の解答と解説
解答は「④」です。

一時ファイルを置くディレクトリは、誰でも自由に読み書きできなくてはなりません。そのため、基本パーミッションは「777」になりますが、そうすると誰もがそのディレクトリにあるファイルを削除できます。使用中の一時ファイルを勝手に削除されると、アプリケーションが正常に動作しないなどの不具合が生じる恐れがあります。
これを防ぐために考案されたのが「stickyビット」という特殊なパーミッションです。stickyビットがセットされたディレクトリ
では、ファイルの所有者だけがファイルを削除できるようになります。なお、「sticky」は、ベトベトするとか暑苦しいなどの意
味の単語です。
この名前が付けられた理由には歴史的な背景があるのですが、
ここで紹介した機能とは無関係です。
またLinuxでは、ファイルに対してstickyビットをセットしても何も変わりません。
問5-4-2の解答と解説

解答は「①③」です。
①絶対パス「/home/sales/calendar.tbl」を指すシンボリック

リンク「~/cal.tbl」が作成されます。②相対パス「../../sales/calen

40

この特集記事が、皆さんの学習の一助になれば幸いです。

表 1 演習問題集の解答一覧

問題

解答

問題

解答

問 1-1-1②③

問 3-2-1②④

問 1-2-1③⑤

問 1-2-2①④

問 3-2-2

grep 兵庫県 data.csv | sort -t , -k 5 | cut-d , -f 1,3 | tail -n +2

問 1-2-3④

問 3-3-1

p.36 の図 1 を参照

問 1-3-1③

問 3-3-2

p.37 の図 2 を参照

問 1-3-2③

問 4-1-1①

問 1-3-3②③

問 4-2-1④

問 1-4-1③

問 4-3-1③

問 2-1-1

good morning $USER

問 4-3-2②⑤

問 2-1-2

PATH=~/bin:$PATH

問 4-4-1②③

問 2-1-3①④⑤

問 4-4-2③⑤

問 2-2-1④

問 5-1-1②④

問 2-2-2③

問 5-1-2②

問 2-3-1②④

問 5-2-1①③⑤

問 2-3-2④

問 5-2-2①④

問 2-4-1

cp */*/*/*.txt Texts

問 5-3-1①

問 2-4-2

mkdir -p Lv1{A,B}/Lv2{A,B}/Lv3{A,B} Texts

問 5-3-2③

問 3-1-1②④⑤

問 5-4-1④

問 3-1-2②③

問 5-4-2①③

41