LPIC-1想定問題集(全100問)
LPIC-1(101試験・102試験)の出題範囲番号に沿って作成した、本番の試験に近い4択形式の想定問題集です。中級(LPIC-1相当)の章立てで学んだ内容の仕上げ・総仕上げの確認にお使いください。
実際のLPIC試験は選択肢の中から正解を1つ選ぶ4択(または複数選択)形式の問題が中心です。この問題集も同じ形式に合わせているため、章末の確認クイズ(3択)よりも本番の緊張感に近い形で力試しができます。分野ごとに「採点する」ボタンを押すと、その分野の正解数と各問題の解説がまとめて表示されます。
挑戦したい分野の見出しをクリックすると、その分野の問題だけが開きます。
各分野の出題範囲番号は、LPIC-1の公式試験範囲の番号に対応しています。
間違えた問題は、解説を読んだあとに中級の該当章に戻って復習すると定着しやすくなります。
101試験の範囲(システムアーキテクチャ/パッケージ管理/GNU・Unixコマンド/デバイス・ファイルシステム)
101 システムアーキテクチャ(10問)出題範囲 101
Q1. システム起動時にハードウェアの初期化を行い、ブートローダーを呼び出す、従来のBIOSに代わる現代的な仕組みはどれですか。
正解はUEFIです。
UEFI(Unified Extensible Firmware Interface)は、従来のBIOSに代わるファームウェアインターフェースで、より大容量のディスクへの対応やセキュアブートなどの機能を備え、ハードウェアの初期化とブートデバイスの選択を担当します。
GRUBはファームウェアの次の段階で動くブートローダーであり、ファームウェア自体ではありません。
systemdはOS起動後に動く初期化システム(initシステム)、initrdはカーネル起動直後に一時的に使われるルートファイルシステムで、いずれもファームウェアの役割とは異なります。
Q2. 現在ロードされているカーネルモジュールの一覧を表示するコマンドはどれですか。
正解はlsmodです。
lsmodは/proc/modulesの内容をもとに、現在ロードされているカーネルモジュールの一覧とそのサイズ、依存関係にあるモジュール数を表示します。
lspciはPCIバスに接続されたハードウェアデバイスの一覧を表示するコマンドでモジュール一覧とは無関係です。
modinfoは特定のモジュール1つの詳細情報(作者やパラメータなど)を表示するコマンドで、一覧表示はできません。
depmodはモジュール間の依存関係データベースを再構築するコマンドで、ロード状況の確認には使いません。
Q3. カーネルモジュールをロードする際、依存関係にある他のモジュールも自動的にロードしてくれるコマンドはどれですか。
正解はmodprobeです。
modprobeはmodules.depに記録された依存関係情報を参照し、指定したモジュールが依存する他のモジュールも含めて自動的にロード(または-rオプションでアンロード)します。
insmodは指定した単体のモジュールファイルをそのままロードするだけで、依存関係の解決は一切行わないため、依存モジュールが先にロードされていないと失敗します。
rmmodはモジュールを直接アンロードするコマンドで、ロードではなく削除のためのコマンドです。
lsmodはロード済みモジュールの一覧表示専用で、ロード操作そのものは行いません。
Q4. systemdを採用したシステムで、従来のSysVinitのランレベルに相当する概念はどれですか。
正解はターゲット(target)です。
systemdでは、multi-user.targetやgraphical.targetのように、複数のユニットをまとめて起動する「ターゲット」という概念があり、従来のランレベル(例:ランレベル3やランレベル5)に相当する役割を果たします。
サービスは個々のデーモンプロセスを管理する単位の一つに過ぎず、ランレベル全体には対応しません。
ユニットファイルはサービス・ターゲット・マウントなど様々な管理単位を記述する設定ファイルの総称であり、ランレベルそのものを指す言葉ではありません。
ジャーナルはsystemd-journaldが収集するログデータのことで、起動段階の概念とは無関係です。
Q5. systemdでシステムをシャットダウンするコマンドとして適切なものはどれですか。
正解はsystemctl poweroffです。
このコマンドはシステムをシャットダウンし、電源を切る処理まで行います(再起動したい場合はsystemctl rebootを使います)。
systemctl statusは指定したユニット(サービスなど)の現在の状態を確認するためのコマンドで、システムの状態には影響を与えません。
systemctl list-unitsは現在ロードされているユニットの一覧を表示するだけの確認用コマンドです。
systemctl daemon-reloadはユニットファイルを変更した際にsystemd自体に設定を再読み込みさせるコマンドで、シャットダウンとは無関係です。
Q6. udevの役割として最も適切なものはどれですか。
正解はデバイスファイルを動的に管理するためのデバイスマネージャーです。
udevはカーネルがハードウェアの接続・切断を検知した際に送出するイベント(uevent)を受け取り、/dev以下のデバイスファイルを動的に作成・削除・命名する仕組みです。
パッケージ管理はapt/dpkgやyum/rpmなどが担う役割であり、udevとは全く異なる機能です。
ファイルシステムの整合性チェックはfsckの役割であり、ログ管理はsyslogやsystemd-journaldが担当するため、いずれもudevの役割とは異なります。
Q7. PC起動時、電源投入直後に実行されファームウェアの初期化を担うのはどれですか。
正解はBIOS/UEFIです。
電源投入直後にまず実行されるのはマザーボード上のファームウェア(BIOSまたはUEFI)で、ハードウェアの初期化とPOST(自己診断)を行った後、ブートデバイスを選んでブートローダーを呼び出します。
カーネルはブートローダーによってメモリに読み込まれて初めて実行される、ファームウェアより後の段階のソフトウェアです。
ブートローダー(GRUBなど)もファームウェアの次の段階で動作するプログラムであり、電源投入直後に実行されるわけではありません。
initプロセスはカーネルが起動した後に最初に起動されるユーザー空間のプロセスで、さらに後の段階にあたります。
Q8. USBデバイスの接続状況を一覧表示するコマンドはどれですか。
正解はlsusbです。
lsusbはUSBバスとそれに接続されたデバイスの一覧を、ベンダーIDや製品名とともに表示します。
lspciはPCI/PCIeバスに接続されたデバイス(グラフィックカードやネットワークカードなど)を一覧表示するコマンドで、USBデバイスとは対象が異なります。
lsblkはブロックデバイス(ディスクやパーティション)の一覧とその階層構造を表示するコマンドです。
lscpuはCPUのアーキテクチャやコア数などの情報を表示するコマンドで、USB接続状況とは無関係です。
Q9. デュアルブート環境で、起動時に複数のOSから選択できるようにする役割を持つのはどれですか。
正解はGRUBです。
GRUB(GRand Unified Bootloader)はブートローダーとして、起動時にメニューを表示し、インストールされている複数のOSやカーネルバージョンの中から起動対象を選択できるようにします。
udevはデバイスファイルを動的に管理する仕組みで、起動時のOS選択とは無関係です。
systemd-journaldはログの収集を行うデーモンで、cronは定期的にジョブを実行するスケジューラであり、どちらもブートメニューの提供とは異なる役割を持ちます。
Q10. カーネルのバージョン情報を確認するコマンドはどれですか。
正解はuname -rです。
unameはシステム情報を表示するコマンドで、-rオプションを付けると現在実行中のカーネルのリリースバージョンだけを表示します。
kernel -vというコマンドはLinuxに標準では存在しません。
sysctlはカーネルパラメータの確認・変更を行うコマンドであり、-vという単純なバージョン表示オプションは用意されていません。
modinfo -kのような指定方法も標準的なオプションではなく、modinfoはあくまで個々のモジュール情報を表示するコマンドです。
102 パッケージ管理(10問)出題範囲 102
Q11. Debian系ディストリビューションで、依存関係を自動的に解決しながらパッケージをインストールするコマンドはどれですか。
正解はapt installです。
aptはリポジトリの情報をもとに、インストールしたいパッケージが依存する他のパッケージも自動的に解決してまとめてインストールします。
dpkg -iは個々の.debファイルを直接インストールするコマンドですが、依存関係の自動解決は行わないため、不足しているパッケージがあるとエラーになります。
rpm -iとyum installはいずれもRed Hat系ディストリビューション(CentOSやFedoraなど)で使われるコマンドで、Debian系では使用しません。
Q12. dpkgコマンドで、既にインストールされているパッケージの一覧を表示するオプションはどれですか。
正解はdpkg -lです。
小文字のlオプションは、システムにインストール済みのパッケージを状態(ii=インストール済みなど)とともに一覧表示します。
dpkg -iは.debパッケージファイルをインストールするオプションで、一覧表示とは逆の操作です。
dpkg -rはパッケージを削除(remove)するオプション、dpkg -cは.debファイルの中身(含まれるファイル一覧)を表示するオプションで、いずれもインストール済み一覧の確認用ではありません。
Q13. RPM系ディストリビューションで、依存関係を自動解決しながらパッケージ管理を行う比較的新しいコマンドはどれですか。
正解はdnfです。
dnfはyumの後継として開発された、Red Hat系ディストリビューションにおける依存関係解決を伴うパッケージ管理コマンドです。
aptとdpkgはDebian系で使われるパッケージ管理コマンドであり、RPM系ディストリビューションでは使用しません。
tarは単なるアーカイブ(ファイルの集約・展開)コマンドであり、パッケージの依存関係解決とは無関係です。
Q14. rpmコマンドで、既にインストールされているパッケージの一覧を表示するオプションはどれですか。
正解はrpm -qaです。
-qはクエリ(照会)、-aは全て(all)を意味し、組み合わせることでインストール済みの全パッケージを一覧表示します。
rpm -iはパッケージをインストールするオプション、rpm -eはアンインストール(erase)するオプションで、いずれも一覧表示とは逆の操作です。
rpm -Vはインストール済みパッケージのファイルが改変されていないかを検証(verify)するオプションで、一覧表示機能ではありません。
Q15. あるパッケージがどのファイルを含んでいるかを確認するdpkgコマンドのオプションはどれですか。
正解はdpkg -Lです。
大文字のLオプションは、指定したパッケージ名からそのパッケージがシステムにインストールしたファイルの一覧(パス)を表示します。
dpkg -Sはその逆で、ファイルパスを指定してどのパッケージに属するかを検索するオプションです。
dpkg -sはパッケージのステータス情報(バージョンや説明など)を表示するオプションで、ファイル一覧の表示ではありません。
dpkg --configureは未設定のパッケージの設定処理を行うオプションで、ファイル一覧とは無関係です。
Q16. /etc/apt/sources.listの役割として正しいものはどれですか。
正解はパッケージ取得元のリポジトリを定義することです。
/etc/apt/sources.listには、aptがパッケージを取得する際に参照するリポジトリのURLとディストリビューション名、コンポーネント(main・universeなど)が記述されます。
インストール済みパッケージの一覧はdpkgの内部データベース(/var/lib/dpkg/status)で管理されており、sources.listとは別のファイルです。
カーネルの設定は/etc/sysctl.confなど、パスワード情報は/etc/shadowなど、それぞれ全く別の専用ファイルで管理されます。
Q17. 共有ライブラリの依存関係を解決し、ライブラリのキャッシュを更新するコマンドはどれですか。
正解はldconfigです。
ldconfigは/etc/ld.so.confに列挙されたディレクトリをスキャンし、共有ライブラリの検索を高速化するためのキャッシュ(/etc/ld.so.cache)を更新します。
lddは特定の実行ファイルが実行時に必要とする共有ライブラリの一覧とその解決パスを表示するコマンドで、キャッシュの更新は行いません。
apt-cacheはAPTのパッケージ情報のキャッシュを検索するコマンドで、共有ライブラリとは無関係です。
depmodはカーネルモジュールの依存関係データベースを更新するコマンドで、対象がカーネルモジュールである点が共有ライブラリとは異なります。
Q18. 実行ファイルが依存している共有ライブラリの一覧を確認するコマンドはどれですか。
正解はlddです。
lddは指定した実行ファイルやライブラリが実行時に必要とする共有ライブラリの一覧と、それぞれの解決先パスを表示します。
ldconfigはライブラリキャッシュを更新するコマンドであり、依存関係の一覧表示が主目的ではありません。
fileは指定したファイルの種類(ELF実行ファイルかテキストファイルかなど)を判定するコマンドで、依存ライブラリの確認はできません。
stripは実行ファイルからデバッグ情報やシンボルを削除してファイルサイズを縮小するコマンドで、依存関係とは無関係です。
Q19. alienコマンドの主な用途はどれですか。
正解はパッケージ形式を変換することです。
alienはrpm・deb・tgz・slpなど異なるパッケージ形式の間で相互変換を行うツールで、本来のディストリビューション向けではないパッケージを一時的に利用したい場合などに使われます。
カーネルのコンパイルはmakeやmake menuconfigなどで行う作業であり、alienの機能ではありません。
ネットワーク設定はip/nmcliなど、ディスクのフォーマットはmkfsなど、それぞれ専用のコマンドが担う作業で、alienとは無関係です。
Q20. aptでインストール済みパッケージを最新の状態にアップグレードする一般的な手順はどれですか。
正解はapt updateの後にapt upgradeを実行することです。
apt updateでリポジトリのパッケージ一覧(インデックス)をローカルに最新化し、その情報をもとにapt upgradeでインストール済みパッケージを実際に新しいバージョンへ更新します。
apt installのみでは新しいパッケージのインストールはできても、既存パッケージ全体の更新作業としては不十分です。
apt cleanはダウンロード済みパッケージファイルのキャッシュを削除するコマンド、apt removeはパッケージを削除するコマンドで、いずれもアップグレード作業とは異なります。
103 GNU/Unixコマンド(10問)出題範囲 103
Q21. 標準出力と標準エラー出力の両方を同じファイルにリダイレクトする記述として正しいものはどれですか。
正解はcommand > file 2>&1です。
これはまず標準出力(1)をfileにリダイレクトし、その後標準エラー出力(2)を「標準出力と同じ場所」(&1)に向けるという意味になり、両方が同じfileにまとめて書き込まれます。
command 2> file > fileは2つのリダイレクトが競合し、意図通りに両方をまとめることはできません。
command >> 2 fileやcommand 1>2 fileは記述順序や記号の使い方が誤っており、シェルの構文として両方の出力を1つのファイルにまとめる意味にはなりません。
Q22. パイプ(|)の役割として正しいものはどれですか。
正解はあるコマンドの標準出力を別のコマンドの標準入力に接続することです。
パイプを使うことで、複数の小さなコマンドを連結し、1つの処理の流れとして実行できます。
ファイルのコピーはcpコマンドの役割、バックグラウンド実行はコマンド末尾の&の役割、ファイルへの上書き保存はリダイレクト記号>の役割であり、いずれもパイプとは異なる機能です。
Q23. 正規表現を用いてテキスト中のパターンに一致する行を抽出するコマンドはどれですか。
正解はgrepです。
grepは正規表現パターンを指定し、それに一致する行だけをテキストから検索・抽出する代表的なコマンドです。
cutは行の中から指定した列やフィールドだけを切り出すコマンドで、パターンマッチングによる行の抽出は行いません。
sortは行を並べ替えるコマンド、uniqは連続する重複行をまとめるコマンドで、いずれも正規表現によるパターン検索とは異なる役割です。
Q24. ファイルの内容を行単位でソートするコマンドはどれですか。
正解はsortです。
sortはテキストファイルの内容を行単位で、文字コード順や数値順などの基準に従って並べ替えます。
grepはパターンに一致する行を検索するコマンド、sedは行の置換や削除などの編集を行うコマンド、awkはフィールドごとの処理や集計を行うコマンドで、いずれも並べ替え自体を主目的とはしていません。
Q25. 連続する重複行を1行にまとめるコマンドはどれですか(通常sortと組み合わせて使う)。
正解はuniqです。
uniqは隣り合う(連続する)重複行をまとめて1行にする、または重複回数を数えるコマンドで、離れた位置にある重複行をまとめるにはあらかじめsortで並べ替えておく必要があります。
wcは行数・単語数・バイト数を数えるコマンド、trは文字の置換や削除を行うコマンド、cutは列やフィールドを切り出すコマンドで、いずれも重複行の除去とは異なる機能です。
Q26. ファイルの行数・単語数・バイト数を数えるコマンドはどれですか。
正解はwcです。
wc(word count)は-lで行数、-wで単語数、-cでバイト数など、ファイルの量的な情報を数えるコマンドです。
catはファイルの内容をそのまま出力・連結するコマンド、teeは標準入力を画面とファイルの両方に分岐するコマンド、xargsは標準入力の内容を引数として別コマンドに渡すコマンドで、いずれも行数や単語数を数える機能ではありません。
Q27. 標準入力から受け取った内容を、画面に表示しつつファイルにも保存するコマンドはどれですか。
正解はteeです。
teeは標準入力の内容をそのまま標準出力(画面)に流しつつ、指定したファイルにも同時に書き込む、いわば「分岐」の役割を持つコマンドで、パイプの途中経過を確認したいときによく使われます。
catはファイルの内容を表示・連結するコマンドで、ファイルへの同時保存という分岐機能は持ちません。
echoは引数として渡した文字列を表示するコマンド、xargsは標準入力を引数に変換して別コマンドに渡すコマンドで、いずれもteeのような分岐保存の機能はありません。
Q28. 標準入力から受け取った引数を使って別のコマンドを実行するために使うコマンドはどれですか。
正解はxargsです。
xargsは標準入力から受け取った文字列を引数として組み立て、指定した別のコマンドを実行します。
findの検索結果に対して一括処理を行う場合などによく使われます。
teeは標準入力を画面とファイルに分岐するコマンド、trは文字の置換・削除を行うコマンド、nlは行番号を付加するコマンドで、いずれも標準入力を引数化して別コマンドに渡す機能はありません。
Q29. findコマンドで、7日以上前に更新されたファイルを検索するオプションはどれですか。
正解は-mtime +7です。
-mtimeは更新日時(modification time)を基準とする条件で、+7は「7日より前」を意味します(-7なら「7日以内」)。
-mtime -7は符号が逆で「7日以内に更新されたファイル」を意味するため、問題の条件とは逆になります。
-atimeはアクセス日時(最後に読み取られた日時)を基準とする条件で、更新日時とは異なる基準です。
-size +7はファイルサイズを条件にするオプションで、日時とは無関係です。
Q30. コマンドの実行結果を変数に代入するための記法として正しいものはどれですか。
正解はvar=$(command)です。
これはコマンド置換と呼ばれ、括弧内のコマンドを実行した結果(標準出力の内容)が変数に代入されます。
バッククォートで囲む var=`command` という古い記法も同じ働きをします。
var=!commandやvar=#(command)、var=%command%という記法はBashの構文として存在せず、コマンド置換として機能しません。
104 デバイス・Linuxファイルシステム・FHS(10問)出題範囲 104
Q31. 新しいファイルシステムをディレクトリツリーに組み込む操作はどれですか。
正解はmountです。
mountは指定したデバイス上のファイルシステムを、指定したディレクトリ(マウントポイント)に接続し、そのディレクトリ経由でアクセスできるようにします。
umountはその逆で、マウント済みのファイルシステムを取り外す操作です。
fsckはファイルシステムの整合性をチェック・修復するコマンド、mkfsは新しいファイルシステムを作成(フォーマット)するコマンドで、いずれも既存ファイルシステムの組み込み作業とは異なります。
Q32. ファイルシステムの整合性をチェック・修復するコマンドはどれですか。
正解はfsckです。
fsck(file system check)はファイルシステム内のメタデータの矛盾や破損を検出し、多くの場合自動的に修復を試みます。
通常はアンマウントした状態、または読み取り専用でマウントした状態で実行します。
mkfsは新規にファイルシステムを作成するコマンドで、既存データのチェック・修復機能はありません。
mountはファイルシステムを利用可能にする接続操作、dfはディスクの空き容量を表示するコマンドで、どちらも整合性チェックとは異なる機能です。
Q33. 新しいファイルシステムを作成(フォーマット)するコマンドはどれですか。
正解はmkfsです。
mkfsは指定したパーティションやデバイスに、ext4やxfsなど指定した種類の新しいファイルシステムを作成(初期化)します。
fsckは既存のファイルシステムの整合性をチェック・修復するコマンドで、新規作成は行いません。
mountは作成済みのファイルシステムを利用可能にする接続操作です。
fdiskはパーティションテーブル自体を作成・編集するコマンドで、ファイルシステムそのものの作成はmkfsの役割です。
Q34. ディスクの空き容量をファイルシステム単位で確認するコマンドはどれですか。
正解はdfです。
df(disk free)は現在マウントされている各ファイルシステムについて、使用量・空き容量・使用率を一覧で表示します。
duはディレクトリやファイル単位での使用量を集計するコマンドで、ファイルシステム全体の空き容量の一覧表示には向きません。
freeは物理メモリやスワップの使用状況を表示するコマンドで、ディスクとは対象が異なります。
fdiskはパーティションの作成・編集を行うコマンドで、空き容量の確認を主目的とはしていません。
Q35. ディレクトリやファイル単位でのディスク使用量を確認するコマンドはどれですか。
正解はduです。
du(disk usage)は指定したディレクトリやファイルがディスク上でどれだけの容量を占めているかを集計して表示し、どのディレクトリが容量を圧迫しているかを調べる際によく使われます。
dfはファイルシステム全体の空き容量を表示するコマンドで、個々のディレクトリ単位の内訳までは分かりません。
mountはファイルシステムを接続する操作、statは指定したファイル1件の詳細なメタデータ(更新日時やinode番号など)を表示するコマンドで、いずれもディレクトリ単位の使用量集計とは異なります。
Q36. FHS(Filesystem Hierarchy Standard)において、システムの設定ファイルを格納する標準的なディレクトリはどれですか。
正解は/etcです。
/etcにはネットワーク設定やユーザー情報、各種デーモンの設定ファイルなど、システム全体に関わる設定ファイルが格納されます。
/varはログファイルやメールのスプールなど、実行中に内容が変化するデータを格納するディレクトリです。
/tmpは再起動などで消去されてもよい一時ファイルを置くディレクトリ、/optは個別にパッケージ化された追加アプリケーション一式を置くディレクトリで、いずれも設定ファイルの標準的な置き場所ではありません。
Q37. FHSにおいて、ログファイルなど頻繁に変化するデータを格納する標準的なディレクトリはどれですか。
正解は/varです。
/varにはログファイル、メールのスプール、印刷待ちのジョブ、パッケージ管理のキャッシュなど、システムの実行中に内容が変化していくデータが格納されます。
/usrはユーザー向けのプログラムやライブラリなど、基本的に読み取り専用で静的なデータを格納するディレクトリです。
/bootは起動に必要なカーネルやブートローダーの設定ファイルを格納するディレクトリ、/binは基本的なコマンドの実行ファイルを格納するディレクトリで、いずれも頻繁に変化するデータ用ではありません。
Q38. システム起動に必要なカーネルやブートローダーの設定ファイルが置かれる標準的なディレクトリはどれですか。
正解は/bootです。
/bootにはカーネルイメージ(vmlinuz)、initramfs、GRUBの設定ファイルなど、システム起動に直接必要なファイルがまとめて格納されます。
/rootはroot(管理者)ユーザーのホームディレクトリであり、起動用のファイルを置く場所ではありません。
/sbinはシステム管理用のコマンド(主にrootが使う実行ファイル)を格納するディレクトリ、/libは共有ライブラリやカーネルモジュールを格納するディレクトリで、いずれも起動設定ファイルの標準的な置き場所ではありません。
Q39. あるディレクトリに起動時に自動でマウントするファイルシステムの一覧を定義するファイルはどれですか。
正解は/etc/fstabです。
/etc/fstabには、起動時に自動的にマウントするファイルシステムについて、デバイス(またはUUID)、マウントポイント、ファイルシステムの種類、マウントオプションなどが1行ずつ記述されます。
/etc/mtabは現在実際にマウントされているファイルシステムの状態を記録するファイルで、起動時の設定を定義するものではありません。
/etc/hostsはホスト名とIPアドレスの対応を記述するファイル、/etc/resolv.confはDNSサーバーの参照先を設定するファイルで、どちらもマウント設定とは無関係です。
Q40. ハードリンクに関する説明として正しいものはどれですか。
正解は、同じinodeを指す別名であり、元のファイル名を削除してもリンク経由でデータにアクセスできることです。
ハードリンクは同一のinode(実体)を複数のファイル名から参照する仕組みで、inodeへの参照(リンクカウント)が1以上残っている限りデータは保持されます。
「別のinodeを持ちリンク先のパスを記録しているだけ」という説明はシンボリックリンクの特徴であり、ハードリンクとは逆です。
ハードリンクは一般にディレクトリに対しては作成できず(循環構造を防ぐため)、通常のファイルのみが対象です。
また、ハードリンクは同一ファイルシステム内でのみ作成可能で、異なるファイルシステムをまたぐことはできません(それができるのはシンボリックリンクです)。
102試験の範囲(シェル/ユーザーインターフェース/管理タスク/システムサービス/ネットワーク/セキュリティ)
105 シェルとシェルスクリプト(10問)出題範囲 105
Q41. Bashにおいて、ログインシェル起動時に最初に読み込まれる設定ファイルとして一般的なものはどれですか。
正解は/etc/profileです。
/etc/profileはログインシェル(ログイン時に起動されるシェル)が最初に読み込む、システム全体に適用される設定ファイルです。
~/.bashrcは主に非ログインの対話型シェル(新しい端末を開いたときなど)で読み込まれる、ユーザー個別の設定ファイルで、ログイン時の最初の読み込み対象としては一般的ではありません。
/etc/hostsはホスト名解決用の設定ファイル、~/.vimrcはVimエディタの設定ファイルで、どちらもシェルの起動設定とは無関係です。
Q42. シェルスクリプトの1行目に書く、使用するインタプリタを指定する記法を何と呼びますか。
正解はシバン(shebang)です。
「#!/bin/bash」のように#!で始まる1行目の記述をシバンと呼び、このスクリプトをどのインタプリタ(シェルやPythonなど)で実行するかをOSに伝えます。
コメントは#で始まる説明文のことですが、シバン行は特別な意味を持つ1行目に限った用語です。
ヒアドキュメントは複数行の文字列を標準入力として渡す記法(<<EOFなど)、エイリアスはコマンドに別名を付ける機能で、いずれもインタプリタの指定とは異なります。
Q43. シェルスクリプト内で、変数userにtaroを代入する記法として正しいものはどれですか。
正解はuser=taroです。
Bashでは変数への代入時、等号の前後にスペースを入れてはいけません。
user = taroのようにスペースを入れると、Bashは「user」という名前のコマンドを「=」と「taro」という引数付きで実行しようとしてエラーになります。
$user=taroは変数を参照する$記号を代入先に誤って付けてしまっており、構文として正しくありません。
set user taroはBashの変数代入の記法ではなく、意図した代入にはなりません。
Q44. シェルスクリプトで条件分岐を行うための基本構文はどれですか。
正解はif ... fiです。
ifは条件式を評価し、真偽に応じて処理を分岐させる最も基本的な条件分岐構文で、fiで終端します。
for...doneとwhile...doneはどちらも繰り返し処理(ループ)を行うための構文であり、条件分岐そのものではありません。
case...esacも複数の値に応じて分岐する構文の一種ですが、選択肢の中で「基本構文」として最も一般的に使われるのはifであり、「のみ」という限定も正しくありません。
Q45. 単に変数に値を代入しただけ(exportしていない)の場合のスコープについて正しいものはどれですか。
正解は、そのシェル内だけで有効で、子プロセスには引き継がれないことです。
単にvar=valueのように代入しただけの変数はシェル変数と呼ばれ、現在のシェルの中だけで参照でき、サブシェルや子プロセスには自動的には渡りません。
exportコマンドを使って環境変数にすることで初めて子プロセスにも引き継がれるようになります。
システム全体のユーザーに共有される、という性質は持たず、またシェル変数はメモリ上にのみ存在するため、シェルを終了したり再起動したりすれば消えてしまい、保持されません。
Q46. シェルスクリプトの引数のうち、1番目の引数を参照する変数はどれですか。
正解は$1です。
シェルスクリプトに渡された引数は$1、$2、$3…のように番号付きの変数で参照でき、$1が1番目の引数に対応します。
$0はスクリプト自身のファイル名(呼び出された際のパス)を参照する特殊変数で、引数ではありません。
$#は渡された引数の個数を表す変数、$*は全ての引数を1つの文字列として連結したものを表す変数で、どちらも「1番目の引数」そのものを指す変数ではありません。
Q47. forループで1から5までの数字を順に出力するシェルスクリプトの書き方として適切なものはどれですか。
正解はfor i in 1 2 3 4 5; do echo $i; doneです。
Bashのforループは「for 変数 in リスト; do 処理; done」という構文で記述し、リストの各要素を順に変数に代入しながら処理を繰り返します。
for i = 1 to 5 do echo $iという記法はBASICやPascalに似た構文で、Bashのシェルスクリプトでは正しく動作しません。
foreach i (1..5) echo $iはCシェル(csh)系の構文に近く、Bashの標準的な記法ではありません。
loop 1 5 echo $iに相当する組み込みコマンドはBashには存在しません。
Q48. コマンドの終了ステータス(exit code)を参照する特殊変数はどれですか。
正解は$?です。
$?には直前に実行したコマンドの終了ステータス(0は正常終了、0以外は何らかのエラーを意味する)が格納され、条件分岐などでコマンドの成否を判定する際によく参照されます。
$!は直前にバックグラウンドで起動したプロセスのプロセスIDを保持する変数です。
$@は全ての引数を個別の単語として展開する変数、$$は現在実行中のシェル自身のプロセスIDを保持する変数で、いずれも終了ステータスとは異なる情報を保持します。
Q49. 別のシェルスクリプトファイルの内容を現在のシェルに読み込んで実行する(別プロセスを起動しない)コマンドはどれですか。
正解はsourceです。
source(短縮形として.も使われる)は指定したファイルの内容を、新しいプロセスを起動せずに現在のシェルの中でそのまま実行するため、スクリプト内で設定した変数や関数が呼び出し元のシェルにもそのまま反映されます。
execは現在のプロセスを指定したコマンドで置き換えるコマンドで、新しいシェルを起動するわけではありませんが、現在のシェルの実行を完全に置き換えてしまう点がsourceとは異なります。
forkはプロセスを複製するシステムコールであり、シェルから直接呼び出すコマンドではありません。
bashコマンドで別のスクリプトを実行すると、新しい子プロセス(サブシェル)が起動され、変数などは呼び出し元には引き継がれません。
Q50. シェルスクリプトで、コメント行を記述する際に使用する記号はどれですか。
正解は#です。
Bashのシェルスクリプトでは、行頭または行の途中に書かれた#以降の内容はコメントとして扱われ、実行時に無視されます(ただし1行目のシバン#!は特別に解釈される点に注意が必要です)。
//はC言語やJavaScriptなどで使われるコメント記号で、Bashでは通常のコマンドの一部と解釈されてしまいます。
--は多くのコマンドで「オプションの終わり」を示す記号として使われ、コメントの意味はありません。
;;はcase文の各分岐の終わりを示す記号で、コメントとは無関係です。
106 ユーザーインターフェースとデスクトップ(10問)出題範囲 106
Q51. Linuxにおけるデスクトップ環境のGUI表示を支える仕組みとして、伝統的に広く使われてきたディスプレイサーバーはどれですか。
正解はX Window Systemです。
X Window System(X11)は、アプリケーションが描画要求を出し、ディスプレイサーバーがそれを画面に表示するというクライアント・サーバー型のアーキテクチャを持つ、Linuxデスクトップで伝統的に使われてきた仕組みです。
systemdは初期化システム、GRUBはブートローダー、cronはジョブスケジューラであり、いずれもGUI表示の仕組みとは異なる役割を持ちます。
Q52. X Window Systemの後継として設計され、近年多くのディストリビューションで採用が進んでいるディスプレイサーバープロトコルはどれですか。
正解はWaylandです。
Waylandは、X Window Systemの複雑さやセキュリティ上の課題を解消する目的で設計された、よりシンプルなディスプレイサーバープロトコルで、GNOMEやKDEなど主要なデスクトップ環境で既定の選択肢になりつつあります。
GRUBはブートローダー、udevはデバイスマネージャー、SysVinitは伝統的な初期化システムであり、いずれもディスプレイサーバーのプロトコルではありません。
Q53. GUIログイン画面を表示し、ユーザー認証を行うソフトウェアを総称して何と呼びますか。
正解はディスプレイマネージャーです。
GDMやLightDM、SDDMといったディスプレイマネージャーは、起動時にGUIのログイン画面を表示し、ユーザー名とパスワードによる認証を行った上で、選択されたデスクトップ環境やウィンドウマネージャーのセッションを開始します。
ウィンドウマネージャーはログイン後の個々のウィンドウの配置や装飾を管理するソフトウェア、ファイルマネージャーはファイル操作用のGUIアプリケーション、パッケージマネージャーはソフトウェアのインストール・管理を行う仕組みで、いずれもログイン認証を担うものではありません。
Q54. 視覚・聴覚・運動能力などに障害のある利用者を支援する機能を総称して何と呼びますか。
正解はアクセシビリティ機能です。
画面拡大鏡やスクリーンリーダー、オンスクリーンキーボード、スティッキーキーなど、多様な利用者がシステムを無理なく使えるようにする支援機能を総称してアクセシビリティ機能と呼びます。
バーチャリゼーション(仮想化)は1台の物理マシン上で複数の仮想的な環境を動かす技術、キャッシュ機能はデータへのアクセスを高速化する仕組み、スワップ機能はメモリ不足時にディスクを補助記憶として使う仕組みで、いずれも障害のある利用者を支援する機能とは異なります。
Q55. GNOMEやKDEのような、デスクトップのウィンドウ配置・装飾・操作性を提供するソフトウェアを何と呼びますか。
正解はデスクトップ環境です。
GNOMEやKDE Plasmaはデスクトップ環境と呼ばれ、ウィンドウマネージャー、パネル、ファイルマネージャー、各種標準アプリケーションなどを統合し、一貫した見た目と操作性を提供します。
ディスプレイサーバーはX WindowSystemやWaylandのような、画面描画の基盤となる低レイヤーの仕組みです。
ブートローダーは起動時にOSを読み込むためのプログラム、シェルはコマンドを解釈・実行するプログラムで、いずれもデスクトップ環境とは異なるレイヤーのソフトウェアです。
Q56. X Window Systemにおいて、個々のウィンドウの配置やフォーカス、装飾(タイトルバーなど)を管理するソフトウェアを何と呼びますか。
正解はウィンドウマネージャーです。
ウィンドウマネージャーは、X Window System上で動作し、各ウィンドウの配置・サイズ変更・フォーカス切り替え・タイトルバーなどの装飾を管理する役割を持ちます。
ディスプレイマネージャーはログイン画面の表示と認証を担当するソフトウェアで、ログイン後のウィンドウ管理とは段階が異なります。
パッケージマネージャーはソフトウェアのインストール・管理ツール、セッションマネージャーはログインセッションの状態(開いているアプリなど)を管理する仕組みで、いずれもウィンドウの配置そのものを管理するものではありません。
Q57. SSHのX11転送機能の説明として正しいものはどれですか。
正解は、リモートで起動したGUIアプリケーションの画面を手元の端末に転送して表示できることです。
SSHのX11転送(ssh -Xなど)を有効にすると、リモートマシン上で起動したX Window System用のアプリケーションの描画データが、暗号化されたSSH接続を通じて手元の端末上のXサーバーに転送され、あたかもローカルで動いているかのように表示できます。
ファイルの暗号化転送はSCPやSFTPの役割、DNSの名前解決は別の仕組み、パッケージの依存関係解決はパッケージ管理システムの役割であり、いずれもX11転送の機能ではありません。
Q58. ログイン時に使用するデスクトップ環境やウィンドウマネージャーの組み合わせを選択する画面を一般に何と呼びますか。
正解はセッション選択です。
多くのディスプレイマネージャーでは、ユーザー名の入力欄の近くに歯車アイコンなどで「セッション」を選ぶメニューがあり、GNOME・KDEなど、ログイン後に使用するデスクトップ環境を選択できます。
ランレベル選択は旧来のSysVinitにおけるシステム全体の動作モードの切り替えに関する概念で、デスクトップ環境の選択とは異なります。
カーネル選択はGRUBなどのブートメニューで行う操作、パッケージ選択はインストール時やパッケージ管理ツールで行う操作で、どちらもログイン画面でのセッション選択とは段階が異なります。
Q59. 視力の弱い利用者向けに、画面の一部を拡大して表示する支援技術を何と呼びますか。
正解は画面拡大鏡(スクリーンマグニファイア)です。
マウスカーソルの周辺などを拡大表示することで、視力の弱い利用者が画面の内容を確認しやすくする支援技術です。
スクリーンリーダーは画面上のテキストなどの内容を音声で読み上げる機能で、視覚に大きく依存せず操作できるようにするものです。
オンスクリーンキーボードはマウスやタッチ操作で文字入力ができるようにする支援機能、スティッキーキーは複数キーの同時押しが困難な利用者向けの機能で、どちらも画面の拡大表示とは異なる支援技術です。
Q60. 複数のキーを同時に押す操作が難しい利用者向けに、修飾キー(Shiftなど)を押しっぱなしにした状態にする支援機能を何と呼びますか。
正解はスティッキーキー(固定キー)です。
この機能を有効にすると、Shift・Ctrl・Altなどの修飾キーを1回押すだけで押しっぱなしの状態になり、その後に別のキーを押すことで同時押しと同じ効果が得られるため、複数キーの同時押しが困難な利用者を支援します。
バウンスキーは、同じキーを連続して誤って複数回押してしまう入力ミスを軽減する機能です。
トグルキーはCaps LockやNum Lockなどの状態切り替え時に音で知らせる機能、マウスキーはテンキーなどでマウスカーソルを操作できるようにする機能で、いずれも修飾キーの固定とは異なる支援機能です。
107 管理タスク(10問)出題範囲 107
Q61. 新しいユーザーアカウントを作成するコマンドはどれですか。
正解はuseraddです。
useraddは新しいユーザーアカウントを作成し、/etc/passwdや/etc/shadowにエントリを追加し、必要に応じてホームディレクトリも作成します。
userdelは既存のユーザーアカウントを削除するコマンド、usermodは既存ユーザーの設定(所属グループやシェルなど)を変更するコマンドで、どちらも新規作成ではなく既存アカウントへの操作です。
passwdはユーザーのパスワードを設定・変更するコマンドで、アカウント自体の作成は行いません。
Q62. ユーザーのパスワード情報(暗号化されたパスワードなど)が保存されているファイルはどれですか。
正解は/etc/shadowです。
/etc/shadowには暗号化されたパスワードのハッシュ値やパスワードの有効期限などの機密情報が保存されており、root以外のユーザーからは読み取れないよう厳格なパーミッションで保護されています。
/etc/passwdにはユーザー名・UID・GID・ホームディレクトリ・ログインシェルなどの基本情報が記録されますが、現在のLinuxでは実際のパスワードハッシュは含まれていません。
/etc/groupはグループの情報、/etc/gshadowはグループのパスワード情報を扱うファイルで、ユーザー個人のパスワード情報とは対象が異なります。
Q63. 定期的にコマンドを自動実行するためのスケジューラはどれですか。
正解はcronです。
cronはcrontabに記述されたスケジュール(分・時・日・月・曜日)に従って、コマンドやスクリプトを定期的に自動実行するデーモンです。
atは逆に「1回限り」の処理を指定時刻に実行する仕組みで、繰り返し実行には向きません。
nohupはログアウト後もプロセスを継続させるためのコマンド、niceはプロセスの実行優先度を調整するコマンドで、いずれもスケジューリング機能そのものではありません。
Q64. 1回限りの処理を指定した時刻に実行するコマンドはどれですか。
正解はatです。
atコマンドは、指定した時刻に1回だけ実行されるジョブをキューに登録する仕組みで、繰り返しの定期実行には向きません。
cronは逆に繰り返しのスケジュール実行に特化した仕組みです。
crontabはcronのジョブ定義を編集するためのコマンド(ファイル)であり、1回限りの実行を目的としたものではありません。
anacronは、システムが常時稼働していない環境(ノートPCなど)向けに、実行できなかった定期ジョブを後から実行する仕組みで、1回限りの予約実行とは異なります。
Q65. ユーザーごとのcronジョブを編集するコマンドはどれですか。
正解はcrontab -eです。
crontab -eは現在のユーザーのcrontab(スケジュール定義ファイル)をエディタで開いて編集するためのコマンドです。
cron単体をオプション付きで直接呼び出して編集することは一般的ではありません。
at -eやcronjob -eという記法は標準的なコマンドとしては存在せず、cronジョブの編集には使用されません。
Q66. システムのロケール(言語・地域設定)を確認するコマンドはどれですか。
正解はlocaleです。
localeコマンドは、現在のシステムやシェルに設定されている言語・文字コード・日付表記などのロケール関連の環境変数を表示します。
dateは現在の日付・時刻を表示・設定するコマンドで、ロケール設定自体の確認はできません。
timedatectlはsystemd環境での日付・時刻・タイムゾーンの管理コマンドで、言語設定とは対象が異なります。
hostnameはシステムのホスト名を表示・設定するコマンドで、ロケールとは無関係です。
Q67. システムのタイムゾーンを確認・設定するためのsystemd系コマンドはどれですか。
正解はtimedatectlです。
timedatectlはsystemd環境において、現在時刻・タイムゾーン・NTP同期の有効無効などをまとめて確認・設定できるコマンドです。
localeは言語や文字コードなどのロケール設定を扱うコマンドで、タイムゾーンとは対象が異なります。
date -sは日時を手動で設定する古典的な方法ですが、タイムゾーン自体の管理機能としては限定的です。
ntpdateはNTPサーバーに一度だけ問い合わせて時刻を同期する伝統的なコマンドで、タイムゾーンの設定機能は持ちません。
Q68. 特定のユーザーが所属する補助グループを変更するコマンドはどれですか。
正解はusermod -Gです。
usermod -Gは指定したユーザーが所属する補助グループの一覧を指定した内容に置き換えます(既存の補助グループを維持したまま追加したい場合は-aGを併用します)。
groupaddは新しいグループそのものを作成するコマンド、groupdelはグループを削除するコマンドで、どちらもユーザーの所属グループの変更とは異なる操作です。
newgrp -aという記法は一般的なコマンド構文ではなく、ユーザーの補助グループ変更には使用されません。
Q69. 過去に実行したコマンドの履歴を表示するコマンドはどれですか。
正解はhistoryです。
historyは、そのシェルセッションにおいてこれまでに実行してきたコマンドの履歴を、番号付きで一覧表示します。
lastは過去のログイン・ログアウトの履歴を表示するコマンドで、実行したコマンドの履歴ではありません。
whoは現在ログインしているユーザーの一覧、wは現在ログイン中のユーザーとその実行中プロセスなどを表示するコマンドで、どちらもコマンド実行履歴とは異なる情報です。
Q70. システムログをテキストで出力するファイルのうち、伝統的にシステム全般のメッセージが記録される代表的なファイルはどれですか。
正解は/var/log/syslog(またはmessages)です。
ディストリビューションによって名称は異なりますが、このファイルにはカーネルや各種デーモンが出力したシステム全般のログメッセージが時系列で記録されます。
/etc/syslog.confはsyslogデーモンの動作(どのログをどこに記録するか)を定義する設定ファイルであり、ログの記録先そのものではありません。
/var/spool/cronはcronジョブの定義が保存される場所、/proc/versionは実行中のカーネルのバージョン情報を参照できる仮想ファイルで、どちらもシステム全般のログを記録する場所ではありません。
108 必須のシステムサービス(10問)出題範囲 108
Q71. システムの時刻をネットワーク上のタイムサーバーと同期するためのプロトコルはどれですか。
正解はNTPです。
NTP(Network Time Protocol)は、ネットワーク上の信頼できるタイムサーバーと通信し、システムの時刻を高精度に同期するためのプロトコルで、ntpdやchronydといったデーモンで利用されます。
DNSはホスト名とIPアドレスの変換、DHCPはIPアドレスなどネットワーク設定の自動割り当て、SMTPはメールの転送に使われるプロトコルで、いずれも時刻同期とは異なる目的のプロトコルです。
Q72. システム内の様々なプロセスが出力するログメッセージを一元的に収集・記録する仕組みを一般に何と呼びますか。
正解はsyslogです。
syslogは、カーネルや各種デーモンが出力するログメッセージを統一的な形式で受け取り、ファイルへの記録やリモートサーバーへの転送などを行う仕組み(およびそのプロトコル)です。
cronは定期的なジョブ実行のためのスケジューラ、DNSは名前解決、DHCPはネットワーク設定の自動割り当てを行う仕組みで、いずれもログの収集を主目的とはしていません。
Q73. メールサーバー間でメールを転送する際に使われる標準プロトコルはどれですか。
正解はSMTPです。
SMTP(Simple Mail Transfer Protocol)は、送信元のメールサーバーから宛先のメールサーバーへメールを転送する際に使われる、メール配送の基盤となるプロトコルです。
POP3とIMAPは、サーバー上に届いたメールをメールクライアントが受信・閲覧するためのプロトコルであり、サーバー間の転送には使われません。
NTPは時刻同期のためのプロトコルで、メールとは無関係です。
Q74. journalctlコマンドの主な役割はどれですか。
正解は、systemd-journaldが収集したログを閲覧することです。
journalctlは、systemd-journaldがバイナリ形式で蓄積したログデータを検索・表示するためのコマンドで、起動セッションごとの絞り込みやサービス単位でのフィルタリングなどが可能です。
パッケージのインストールはapt/dnfなど、ネットワーク設定はipやnmcliなど、ディスクのフォーマットはmkfsなど、それぞれ全く別の専用コマンドが担う作業です。
Q75. プリンターの印刷ジョブを管理するLinuxの代表的な印刷システムはどれですか。
正解はCUPSです。
CUPS(Common UNIX Printing System)は、印刷ジョブの管理やプリンタドライバの扱いを統一的に行う、Linuxで広く使われている印刷システムです。
SambaはWindowsとのファイル・プリンタ共有を実現するソフトウェア、PostfixはメールのMTA(転送エージェント)、BINDはDNSサーバーソフトウェアで、いずれも印刷ジョブの管理そのものを行う仕組みではありません。
Q76. メールサーバーソフトウェア(MTA)の代表例として正しいものはどれですか。
正解はPostfixです。
PostfixはMTA(Mail Transfer Agent)と呼ばれる、メールをサーバー間で転送するソフトウェアの代表例で、Sendmailの後継的な位置づけとして広く使われています。
BINDはDNSサーバーソフトウェア、ApacheはWebサーバーソフトウェア、Sambaはファイル・プリンタ共有サーバーソフトウェアで、いずれもメール転送を主目的としたソフトウェアではありません。
Q77. NTPによる時刻同期を1回だけ即座に行う目的で伝統的に使われてきたコマンドはどれですか。
正解はntpdateです。
ntpdateは、指定したNTPサーバーに一度だけ問い合わせを行い、その結果をもとにシステム時刻を即座に合わせる伝統的なコマンドです(近年はchronydなどのデーモンに統合される傾向にあります)。
timedatectlはsystemd環境での時刻・タイムゾーンの管理全般を扱うコマンドで、ntpdateのような単発同期専用のツールとは性質が異なります。
cronは定期実行のスケジューラ、atは1回限りのジョブを予約するコマンドで、どちらも時刻同期そのものを行う機能ではありません。
Q78. システムログデーモンの設定ファイルとして、伝統的なsyslogで使われるものはどれですか。
正解は/etc/syslog.confです。
このファイルには、どの種類・優先度のログメッセージをどのファイルや宛先に記録するかという振り分けルールが記述されます(rsyslogの場合は/etc/rsyslog.confが使われることもあります)。
/etc/passwdはユーザーアカウントの基本情報、/etc/fstabは起動時のマウント設定、/etc/hostsはホスト名とIPアドレスの対応を記述するファイルで、いずれもログの振り分け設定とは無関係です。
Q79. メールをローカルユーザーの間でのみ配送する、シンプルなメール配送エージェント(MDA)の例はどれですか。
正解はprocmailです。
procmailは、MTAから受け取ったメールを、設定したルールに従ってローカルのメールボックスへ配送・振り分けするMDA(Mail Delivery Agent)の代表例です。
BINDはDNSサーバー、CUPSは印刷システム、NTPは時刻同期プロトコルで、いずれもメール配送とは異なる役割のソフトウェア・プロトコルです。
Q80. cron以外でシステムサービスとして定期実行のジョブを管理する、systemdの仕組みを何と呼びますか。
正解はsystemdタイマー(.timerユニット)です。
.timerユニットは、対応する.serviceユニットを指定したスケジュールやタイミングで起動する仕組みで、cronに代わる定期実行の手段としてsystemdの枠組みの中で管理できます。
systemdソケットはソケットアクティベーション(接続要求があったときにサービスを起動する仕組み)に使われるユニット、systemdターゲットは複数ユニットをまとめる起動段階の概念で、どちらも定期実行の仕組みではありません。
「systemdスロット」という名称のユニット種別はsystemdには存在しません。
109 ネットワークの基礎(10問)出題範囲 109
Q81. IPv4アドレスのビット数として正しいものはどれですか。
正解は32ビットです。
IPv4アドレスは32ビット(4バイト、通常は192.168.1.1のように8ビットずつ4つに区切った十進数表記)で構成されます。
64ビットという長さはIPアドレスの規格としては存在しません。
128ビットはIPv6アドレスの長さであり、IPv4とは別の規格です。
16ビットはポート番号の長さ(0〜65535)に相当し、IPアドレスの長さとは異なります。
Q82. ホスト名からIPアドレスを解決する仕組みはどれですか。
正解はDNSです。
DNS(Domain Name System)は、人間にとって覚えやすいホスト名(ドメイン名)と、実際の通信に使われるIPアドレスとを相互に変換する、インターネットの基盤となる仕組みです。
DHCPはIPアドレスなどのネットワーク設定情報をクライアントに自動的に割り当てる仕組みで、名前解決とは異なる役割です。
NTPは時刻同期のプロトコル、SMTPはメール転送のプロトコルで、どちらも名前解決とは無関係です。
Q83. ネットワーク上のクライアントにIPアドレスなどの設定情報を自動的に割り当てる仕組みはどれですか。
正解はDHCPです。
DHCP(Dynamic Host Configuration Protocol)は、ネットワークに接続したクライアントに対して、IPアドレス・サブネットマスク・デフォルトゲートウェイ・DNSサーバーなどの設定情報を自動的に割り当てる仕組みです。
DNSは名前解決の仕組み、SSHは暗号化されたリモートログインのためのプロトコル、FTPはファイル転送のためのプロトコルで、いずれもIPアドレスの自動割り当てを主目的とはしていません。
Q84. 現在のネットワークインターフェースのIPアドレス設定を確認する、比較的新しいLinuxコマンドはどれですか。
正解はip addrです。
ipコマンドのaddrサブコマンドは、現在のLinuxで標準的に使われる、ネットワークインターフェースのIPアドレスやステータスを確認・設定するためのコマンドです。
ifconfigは同様の情報を扱える古いコマンドですが、多くのディストリビューションで非推奨とされ、既定ではインストールされないことも増えています。
netstatはネットワーク接続やルーティングテーブルなどの統計情報を表示する(こちらも非推奨傾向の)コマンドで、IPアドレス設定の確認が主目的ではありません。
pingは対象ホストへの到達性を確認するコマンドで、自身のIPアドレス設定の確認には使いません。
Q85. 対象ホストへの到達性をICMPパケットで確認するコマンドはどれですか。
正解はpingです。
pingはICMP Echo Requestパケットを対象ホストに送信し、Echo Replyが返ってくるかどうかで到達性と応答時間(RTT)を確認する、最も基本的なネットワーク診断コマンドです。
tracerouteは到達性の確認というより、途中経路の各ルーター(ホップ)を調べることを主目的としたコマンドです。
netstatとssはどちらも自ホストのソケットや接続の状態を確認するコマンドで、相手ホストへの到達性確認を目的としたものではありません。
Q86. 対象ホストまでの経路上の各ルーター(ホップ)を調べるコマンドはどれですか。
正解はtracerouteです。
tracerouteは、TTL(生存時間)を1から順に増やしながらパケットを送信することで、対象ホストに到達するまでに経由する各ルーター(ホップ)とその応答時間を順番に表示します。
pingは到達性と応答時間を確認するコマンドですが、経路上の各ホップまでは表示しません。
digはDNSへの問い合わせを行うコマンド、whoisはドメインの登録情報を照会するコマンドで、どちらも経路調査とは異なる目的のコマンドです。
Q87. DNSサーバーに対して直接問い合わせを行い、名前解決の詳細な結果を確認するコマンドはどれですか。
正解はdigです。
digは指定したDNSサーバーに直接クエリを送信し、AレコードやMXレコードなど、名前解決の詳細な結果(TTLや権威サーバーの情報を含む)を表示するための専用コマンドです。
pingは到達性の確認、tracerouteは経路の確認を目的としたコマンドで、どちらもDNSの問い合わせ結果を詳細に表示する機能は持ちません。
arpはローカルネットワーク内のIPアドレスとMACアドレスの対応表(ARPキャッシュ)を扱うコマンドで、DNSとは異なる仕組みを扱います。
Q88. TCP/UDPのポートの待ち受け状態や接続状況を確認する、比較的新しいLinuxコマンドはどれですか。
正解はssです。
ssはソケット統計情報を表示するコマンドで、現在のLinuxで推奨されている、netstatの後継的な位置づけのツールです。
netstatも同様にポートの待ち受け状態などを確認できますが、多くのディストリビューションで非推奨とされつつあります。
ifconfigはネットワークインターフェースのIPアドレス設定を扱う(これも非推奨傾向の)コマンドで、ポートの状態確認が主目的ではありません。
routeはルーティングテーブルを扱う古いコマンドで、ポートの待ち受け状態とは対象が異なります。
Q89. HTTPで使われる標準的なウェルノウンポート番号はどれですか。
正解は80です。
HTTP(暗号化なしのWeb通信)は標準的に80番ポートを使用します(暗号化されたHTTPSは443番を使用します)。
22番はSSH(リモートログイン)、25番はSMTP(メール転送)、53番はDNS(名前解決)で使われる標準ポートで、それぞれHTTPとは異なるサービス用のポートです。
Q90. SSH(Secure Shell)で使われる標準的なウェルノウンポート番号はどれですか。
正解は22です。
SSHは暗号化された安全なリモートログインやファイル転送(SCP/SFTP)に使われるプロトコルで、標準的に22番ポートを使用します。
80番はHTTP、443番はHTTPS、21番はFTPの制御コネクションで使われる標準ポートであり、それぞれSSHとは異なるサービス用のポートです。
110 セキュリティ(10問)出題範囲 110
Q91. ファイルの所有者・グループ・その他に対する読み取り・書き込み・実行権限を設定するコマンドはどれですか。
正解はchmodです。
chmodはファイルやディレクトリに対して、所有者(u)・グループ(g)・その他(o)それぞれの読み取り・書き込み・実行権限を、記号表記(u+x等)や数値表記(755等)で設定します。
chownはファイルの所有ユーザー(および所有グループ)そのものを変更するコマンド、chgrpは所有グループのみを変更するコマンドで、どちらも権限の種類(読み書き実行)の設定ではなく「誰が所有者か」を変更する操作です。
umaskは新規作成されるファイルのデフォルト権限から差し引くマスク値を設定するコマンドで、既存ファイルの権限を直接変更するものではありません。
Q92. ファイルの所有者(ユーザー)を変更するコマンドはどれですか。
正解はchownです。
chownはファイルやディレクトリの所有ユーザーを変更するコマンドで、chown ユーザー:グループ ファイル名のように所有グループも同時に変更できます。
chmodはアクセス権限(読み書き実行)を設定するコマンドで、所有者の変更はできません。
chgrpは所有グループのみを変更するコマンドで、所有ユーザーの変更はできません。
passwdはユーザーのパスワードを設定・変更するコマンドで、ファイルの所有者とは無関係です。
Q93. 一般ユーザーが一時的に管理者権限でコマンドを実行するために使う、推奨される仕組みはどれですか。
正解はsudoです。
sudoは、許可された一般ユーザーが自分のパスワードで認証した上で一時的に管理者(root)権限でコマンドを実行できる仕組みで、実行したコマンドのログが残るため、su直接利用よりも監査性・安全性の面で推奨されることが多いです。
su -はrootのパスワードを知っている必要があり、root権限のまま長時間作業してしまいがちな点でsudoより管理上のリスクが高いとされます。
chmod 777はファイルの権限を誰でも読み書き実行できる状態にしてしまう操作で、管理者権限での実行とは無関係かつセキュリティ上も避けるべき設定です。
passwd rootはrootのパスワードを変更するコマンドで、一時的な権限昇格の仕組みではありません。
Q94. SSHの公開鍵認証で、サーバー側に登録しておく必要があるファイルはどれですか。
正解は~/.ssh/authorized_keysです。
このファイルに、SSHログインを許可したいユーザーの公開鍵を登録しておくことで、対応する秘密鍵を持つクライアントからのパスワードなしログインが可能になります。
~/.ssh/known_hostsは、クライアント側で「過去に接続したサーバーのホスト鍵」を記録しておくファイルで、サーバー側に登録するものではありません。
/etc/passwdや/etc/shadowはユーザーアカウントやパスワード情報を扱うファイルで、SSH公開鍵認証の仕組みとは直接関係しません。
Q95. 新しく作成されるファイルのデフォルトのパーミッションから、どの権限を除外するかを決める設定はどれですか。
正解はumaskです。
umaskは、新規作成されるファイルやディレクトリに本来与えられるはずの最大パーミッション(ファイルなら666、ディレクトリなら777が基準)から、指定した値のビットを差し引く(マスクする)ことで、デフォルトの権限を決定します。
chmodは既存ファイルの権限を直接指定して変更するコマンドで、新規作成時のデフォルト値そのものを制御する仕組みではありません。
スティッキービットやSUIDは、通常の読み書き実行権限とは別の特殊な権限で、umaskとは目的が異なります。
Q96. 実行可能ファイルに設定することで、実行時に所有者権限で動作するようにする特殊な権限はどれですか。
正解はSUIDです。
SUID(Set User ID)を実行ファイルに設定すると、そのファイルを誰が実行しても、プロセスはファイルの所有者(多くの場合root)の権限で動作します。
passwdコマンドなど、一般ユーザーがシステムファイルを限定的に変更する必要がある場面で使われます。
スティッキービットは共有ディレクトリでファイルの削除権限を制限する特殊な権限で、実行時の権限昇格とは異なります。
umaskは新規作成ファイルのデフォルト権限を決める設定、ACL(アクセス制御リスト)は従来の所有者・グループ・その他という枠組みを超えて、より細かく権限を設定する仕組みで、どちらも実行時の権限昇格そのものを行う機能ではありません。
Q97. 複数ユーザーが書き込み可能な共有ディレクトリで、自分のファイルだけを削除できるように制限する特殊な権限はどれですか。
正解はスティッキービットです。
/tmpのように誰もが書き込めるディレクトリにスティッキービットを設定すると、そのディレクトリ内のファイルは、ファイルの所有者(またはディレクトリの所有者、root)だけが削除・リネームできるようになり、他人のファイルを誤って削除する事故を防げます。
SUIDは実行ファイルを所有者権限で動作させる権限で、ディレクトリ内のファイル削除制限とは異なります。
SGIDはディレクトリに設定すると新規作成されるファイルの所有グループを親ディレクトリに揃える権限で、削除制限とは目的が異なります。
umaskは新規作成時のデフォルト権限を決める設定で、既存ファイルの削除制御とは無関係です。
Q98. ネットワークを流れるパケットを監視・解析するツールの代表例はどれですか。
正解はtcpdumpです。
tcpdumpは、指定したネットワークインターフェースを流れるパケットをキャプチャし、その内容(送信元・宛先・プロトコルなど)を解析・表示するコマンドラインツールで、ネットワークのトラブルシューティングやセキュリティ調査に使われます。
chmodは権限設定、cronはジョブスケジューラ、useraddはユーザー作成のコマンドで、いずれもパケットの監視・解析とは全く異なる役割です。
Q99. SSH接続時に使用する鍵ペアのうち、サーバーに配布して公開してよいのはどちらですか。
正解は公開鍵です。
公開鍵暗号方式では、公開鍵は他者やサーバーに配布・公開しても安全性に問題がない鍵で、SSHでは接続先サーバーの~/.ssh/authorized_keysに登録して使います。
秘密鍵は本人だけが厳重に保管すべき鍵で、これが流出すると公開鍵認証のなりすましにつながるため、絶対に外部に渡してはいけません。
共通鍵暗号方式における共通鍵は、暗号化と復号に同じ鍵を使う別方式の鍵であり、SSHの公開鍵認証の文脈とは異なります。
セッション鍵は通信確立後に一時的に使われる暗号鍵で、サーバーへの事前登録を行うものではありません。
Q100. GPGなどで使われる、暗号化と復号に異なる鍵を使う暗号方式を何と呼びますか。
正解は公開鍵暗号方式です。
公開鍵暗号方式(非対称鍵暗号方式)は、暗号化に使う鍵(公開鍵)と復号に使う鍵(秘密鍵)が異なる仕組みで、GPGやSSHの鍵認証などで広く使われています。
共通鍵暗号方式(対称鍵暗号方式とも呼ばれる、選択肢の2番目と4番目は同じ方式を指す別名)は、暗号化と復号に同一の鍵を使う方式で、公開鍵暗号方式とは逆の性質を持ちます。
ハッシュ関数は、データから固定長の値(ハッシュ値)を生成する一方向の処理で、暗号化・復号のための鍵ペアという概念自体を持ちません。