はじめに
こんばんは、mirukyです。
本記事はLPIC-1(101試験 + 102試験)の 全トピック・全サブトピック を公式試験要項(Objectives V5.0)に基づいて網羅した試験対策記事です。
各トピックの解説に加えて、試験で問われるコマンドを一覧でまとめています。
試験直前の最終確認にも使えるよう、できる限り簡潔かつ正確にまとめました。
LPIC-1 試験概要
項目
内容
取得条件
101試験 と 102試験 の両方に合格
試験バージョン
101-500 / 102-500(V5.0)
問題数
各試験 60問
試験時間
各試験 90分
合格ライン
500点 / 800点満点(約65%)
出題形式
選択式・複数選択式・穴埋め式
有効期間
5年
受験言語
日本語・英語 他
受験料
各試験 16,500円(税込)(出典:Pearson VUE公式マーケットプレイス)
101試験(101-500)
Topic 101:システムアーキテクチャ
101.1 ハードウェア設定の決定と構成(Weight: 2)
Linuxがハードウェアをどのように認識・管理するかを問われます。
重要ポイント
/proc/ :カーネルが提供する仮想ファイルシステム。CPU情報やメモリ情報を確認可能
/sys/ :sysfs。デバイス情報をツリー構造で提供
/dev/ :デバイスファイルが格納されるディレクトリ
udev :デバイスの動的管理を行うデーモン(/etc/udev/rules.d/)
D-Bus :プロセス間通信の仕組み
コマンド集
# PCI デバイスの一覧
lspci
lspci -v # 詳細表示
# USB デバイスの一覧
lsusb
# カーネルモジュールの一覧
lsmod
# カーネルモジュールのロード/アンロード
modprobe <モジュール名>
modprobe -r <モジュール名> # アンロード
# CPU情報の確認
cat /proc/cpuinfo
# メモリ情報の確認
cat /proc/meminfo
# IRQ(割り込み)の確認
cat /proc/interrupts
# I/Oポートの確認
cat /proc/ioports
# DMAチャネルの確認
cat /proc/dma
101.2 システムのブート(Weight: 3)
BIOSからログインプロンプトまでのブートプロセスを理解する必要があります。
ブートシーケンス
BIOS/UEFI → ブートローダ(GRUB) → カーネル → initramfs → init/systemd → ログイン
重要ポイント
BIOS :MBRからブートローダを読み込む(レガシー)
UEFI :ESPパーティションからブートローダを読み込む
initramfs/initrd :カーネルがルートファイルシステムをマウントする前に必要なドライバ等を提供する一時的なファイルシステム
カーネルメッセージ :dmesg や journalctl -k で確認
コマンド集
# カーネルのブートメッセージを確認
dmesg
dmesg | less
dmesg | grep -i error
# systemdのジャーナルでカーネルメッセージを確認
journalctl -k
# ブートログの確認
journalctl -b # 現在のブート
journalctl -b -1 # 前回のブート
101.3 ランレベル/ブートターゲットの変更とシャットダウン/リブート(Weight: 3)
SysVinit ランレベル
ランレベル
説明
0
シャットダウン(halt)
1 / S
シングルユーザーモード(レスキュー)
2
マルチユーザー(Debian系ではフル機能)
3
マルチユーザー + ネットワーク(CUI)
4
未使用(カスタム用)
5
マルチユーザー + ネットワーク + GUI
6
リブート
systemd ブートターゲット
ターゲット
対応ランレベル
poweroff.target
0
rescue.target
1
multi-user.target
3
graphical.target
5
reboot.target
6
コマンド集
# 現在のランレベル確認
runlevel
who -r
# ランレベルの変更(SysVinit)
telinit 3
init 3
# デフォルトターゲットの確認・変更(systemd)
systemctl get-default
systemctl set-default multi-user.target
systemctl set-default graphical.target
# ターゲットの即時切り替え
systemctl isolate rescue.target
systemctl isolate multi-user.target
# シャットダウン・リブート
shutdown -h now # 即時シャットダウン
shutdown -r now # 即時リブート
shutdown -h +10 # 10分後にシャットダウン
shutdown -c # スケジュール済みシャットダウンのキャンセル
poweroff # シャットダウン
reboot # リブート
halt # システム停止
# ログイン中のユーザーにメッセージを送る
wall "サーバーを10分後にシャットダウンします"
Topic 102:Linuxのインストールとパッケージ管理
102.1 ハードディスクレイアウトの設計(Weight: 2)
重要ポイント
MBR(Master Boot Record) :最大4つの基本パーティション、最大2TB
GPT(GUID Partition Table) :パーティション数の制限が事実上なし、2TB超対応
スワップ領域 :一般的にRAMの1〜2倍
LVM(Logical Volume Manager) :柔軟なディスク管理
パーティション分割のベストプラクティス
マウントポイント
用途
/
ルートファイルシステム
/boot
ブートローダ・カーネル(200〜500MB)
/home
ユーザーのホームディレクトリ
/var
ログ・スプール等の可変データ
/tmp
一時ファイル
swap
スワップ領域
/boot/efi
UEFI用ESPパーティション
102.2 ブートマネージャのインストール(Weight: 2)
GRUB2 の重要ファイル
ファイル/ディレクトリ
説明
/boot/grub/grub.cfg
GRUB2の設定ファイル(自動生成、直接編集しない)
/etc/default/grub
GRUB2のカスタム設定(こちらを編集)
/etc/grub.d/
メニューエントリのスクリプト
コマンド集
# GRUB2 の設定を再生成
grub-mkconfig -o /boot/grub/grub.cfg
# または
update-grub # Debian系
# GRUB2 のインストール
grub-install /dev/sda
102.3 共有ライブラリの管理(Weight: 1)
コマンド集
# プログラムが使用する共有ライブラリを表示
ldd /bin/ls
# 共有ライブラリのキャッシュを更新
ldconfig
# 共有ライブラリのキャッシュ内容を表示
ldconfig -p
# 環境変数でライブラリパスを追加
export LD_LIBRARY_PATH = /opt/mylib:$LD_LIBRARY_PATH
重要ファイル
/etc/ld.so.conf :ライブラリの検索パスを定義
/etc/ld.so.conf.d/ :追加の設定ファイルディレクトリ
/etc/ld.so.cache :ldconfig が生成するキャッシュ
102.4 Debianパッケージ管理(Weight: 3)
コマンド集
# --- dpkg ---
dpkg -i <パッケージ.deb> # インストール
dpkg -r <パッケージ名> # 削除(設定ファイルは残る)
dpkg -P <パッケージ名> # 完全削除(設定ファイルも削除)
dpkg -l # インストール済みパッケージ一覧
dpkg -L <パッケージ名> # パッケージに含まれるファイル一覧
dpkg -S <ファイルパス> # ファイルがどのパッケージに属するか
dpkg -s <パッケージ名> # パッケージの状態表示
dpkg --configure -a # 未設定パッケージの設定
dpkg-reconfigure <パッケージ名> # 再設定
# --- apt / apt-get ---
apt update # パッケージリストの更新
apt upgrade # インストール済みパッケージの更新
apt full-upgrade # 依存関係を解決しつつ更新
apt install <パッケージ名> # インストール
apt remove <パッケージ名> # 削除
apt purge <パッケージ名> # 完全削除
apt search <キーワード> # パッケージ検索
apt show <パッケージ名> # パッケージ情報表示
apt list --installed # インストール済み一覧
apt autoremove # 不要パッケージの自動削除
# --- apt-cache ---
apt-cache search <キーワード> # パッケージ検索
apt-cache show <パッケージ名> # パッケージ詳細
apt-cache depends <パッケージ名> # 依存関係
重要ファイル
/etc/apt/sources.list :リポジトリの定義
/etc/apt/sources.list.d/ :追加リポジトリ
102.5 RPMおよびYUMパッケージ管理(Weight: 3)
コマンド集
# --- rpm ---
rpm -ivh <パッケージ.rpm> # インストール(v:詳細, h:進捗表示)
rpm -Uvh <パッケージ.rpm> # アップグレード(未インストールならインストール)
rpm -e <パッケージ名> # 削除
rpm -qa # インストール済みパッケージ一覧
rpm -qi <パッケージ名> # パッケージ情報
rpm -ql <パッケージ名> # パッケージに含まれるファイル一覧
rpm -qf <ファイルパス> # ファイルがどのパッケージに属するか
rpm -qR <パッケージ名> # 依存関係の表示
rpm -V <パッケージ名> # パッケージの検証
rpm --import <GPGキー> # GPGキーのインポート
# --- yum ---
yum install <パッケージ名> # インストール
yum update # 全パッケージの更新
yum update <パッケージ名> # 特定パッケージの更新
yum remove <パッケージ名> # 削除
yum search <キーワード> # 検索
yum info <パッケージ名> # パッケージ情報
yum list installed # インストール済み一覧
yum provides <ファイルパス> # ファイルを提供するパッケージを検索
yum repolist # 有効なリポジトリ一覧
yum clean all # キャッシュの削除
# --- dnf(yumの後継)---
dnf install <パッケージ名>
dnf update
dnf remove <パッケージ名>
dnf search <キーワード>
# --- zypper(SUSE系)---
zypper install <パッケージ名>
zypper update
zypper remove <パッケージ名>
zypper search <キーワード>
重要ファイル
/etc/yum.repos.d/ :YUMリポジトリの設定ディレクトリ
/etc/yum.conf :YUMの設定ファイル
102.6 Linuxの仮想化ゲストとしての利用(Weight: 1)
重要ポイント
仮想マシン(VM) :完全な仮想化。KVM, Xen, VirtualBox等
コンテナ :OS レベルの仮想化。Docker, LXC等
クラウドインスタンス :クラウドプロバイダ上の仮想マシン
cloud-init :クラウドインスタンスの初期設定を自動化する仕組み
D-Bus machine-id :仮想マシンの一意識別子(/etc/machine-id)
Topic 103:GNUとUnixのコマンド
Topic 103は101試験の中で 最も出題比率が高い トピック(Weight合計: 26)です。ここを確実に押さえることが合格への近道です。
103.1 コマンドラインでの操作(Weight: 4)
コマンド集
# 基本的なシェル操作
echo "Hello World"
echo $PATH # 環境変数の表示
type ls # コマンドの種類を確認(内部/外部/エイリアス)
which ls # コマンドのパスを表示
whereis ls # コマンド・マニュアル・ソースの場所
# 環境変数
env # 環境変数の一覧
export MY_VAR = "value" # 環境変数の設定
unset MY_VAR # 環境変数の削除
set # シェル変数を含む全変数の一覧
# クォーティング
echo "変数は $HOME です" # ダブルクォート:変数は展開される
echo '変数は$HOMEです' # シングルクォート:変数は展開されない
echo "今日は $( date ) です" # コマンド置換
# コマンド履歴
history # コマンド履歴の表示
! 番号 # 履歴番号で実行
!! # 直前のコマンドを再実行
! 文字列 # 指定文字列で始まる最新コマンドを実行
# マニュアル
man ls # マニュアルの表示
man -k keyword # キーワードでマニュアル検索(aproposと同等)
info ls # infoページの表示
# uname
uname -a # カーネル情報の全表示
uname -r # カーネルバージョン
103.2 テキストストリームのフィルタ処理(Weight: 2)
コマンド集
# ファイル内容の表示
cat file.txt # ファイル内容を表示
cat -n file.txt # 行番号付きで表示
tac file.txt # 逆順で表示(catの逆)
# ページング
less file.txt # ページング表示(上下スクロール可)
more file.txt # ページング表示(下方向のみ)
# 先頭・末尾の表示
head file.txt # 先頭10行を表示
head -n 20 file.txt # 先頭20行を表示
tail file.txt # 末尾10行を表示
tail -n 20 file.txt # 末尾20行を表示
tail -f /var/log/syslog # リアルタイムで末尾を追跡
# テキスト処理
sort file.txt # ソート
sort -r file.txt # 逆順ソート
sort -n file.txt # 数値としてソート
sort -k 2 file.txt # 2番目のフィールドでソート
sort -t : -k3 -n /etc/passwd # 区切り文字を指定してソート
uniq file.txt # 連続する重複行を削除
sort file.txt | uniq -c # 重複回数を表示
cut -d : -f1 /etc/passwd # 区切り文字:でフィールド1を抽出
cut -c1-10 file.txt # 1〜10文字目を抽出
paste file1 file2 # 2つのファイルを横に結合
wc file.txt # 行数・単語数・バイト数を表示
wc -l file.txt # 行数のみ
wc -w file.txt # 単語数のみ
tr 'a-z' 'A-Z' < file.txt # 小文字を大文字に変換
tr -d '\r' < file.txt # 改行コードCRを削除
sed 's/old/new/' file.txt # 最初のoldをnewに置換
sed 's/old/new/g' file.txt # 全てのoldをnewに置換
sed -i 's/old/new/g' file.txt # ファイルを直接編集
sed '3d' file.txt # 3行目を削除
sed -n '5,10p' file.txt # 5〜10行目を表示
awk '{print $1}' file.txt # 1番目のフィールドを表示
awk -F : '{print $1, $3}' /etc/passwd # :区切りで1,3フィールド
awk '$3 > 1000 {print $1}' file.txt # 条件付き表示
# その他
nl file.txt # 行番号付与
od file.txt # 8進ダンプ
hexdump file.txt # 16進ダンプ
split -l 100 file.txt # 100行ごとにファイル分割
fmt file.txt # テキストの整形
expand file.txt # タブをスペースに変換
unexpand file.txt # スペースをタブに変換
103.3 基本的なファイル管理(Weight: 4)
コマンド集
# ファイル・ディレクトリ操作
ls # 一覧表示
ls -la # 詳細+隠しファイル
ls -lh # 人間が読みやすいサイズ表示
ls -R # 再帰的に表示
cp file1 file2 # コピー
cp -r dir1 dir2 # ディレクトリを再帰的にコピー
cp -p file1 file2 # パーミッション・タイムスタンプを保持
mv file1 file2 # 移動/リネーム
rm file1 # 削除
rm -r dir1 # ディレクトリを再帰的に削除
rm -f file1 # 強制削除
rm -rf dir1 # 強制再帰削除(注意!)
mkdir dir1 # ディレクトリ作成
mkdir -p dir1/dir2/dir3 # 親ディレクトリも含めて作成
rmdir dir1 # 空のディレクトリを削除
touch file1 # 空ファイル作成 / タイムスタンプ更新
# ファイルの種類を判別
file filename
# アーカイブ・圧縮
tar cvf archive.tar dir / # tarアーカイブ作成
tar xvf archive.tar # 展開
tar cvzf archive.tar.gz dir / # gzip圧縮
tar xvzf archive.tar.gz # gzip展開
tar cvjf archive.tar.bz2 dir / # bzip2圧縮
tar xvjf archive.tar.bz2 # bzip2展開
tar cvJf archive.tar.xz dir / # xz圧縮
tar xvJf archive.tar.xz # xz展開
tar tvf archive.tar # 内容の確認(展開せず)
gzip file # gzip圧縮(元ファイルは消える)
gunzip file.gz # gzip展開
bzip2 file # bzip2圧縮
bunzip2 file.bz2 # bzip2展開
xz file # xz圧縮
unxz file.xz # xz展開
# cpio
find . -name "*.txt" | cpio -ov > archive.cpio # アーカイブ作成
cpio -idv < archive.cpio # 展開
# dd(ディスクイメージの作成等)
dd if = /dev/sda of = /tmp/mbr.img bs = 512 count = 1 # MBRバックアップ
103.4 ストリーム、パイプ、リダイレクト(Weight: 4)
標準入出力
ストリーム
ファイルディスクリプタ
説明
標準入力(stdin)
0
キーボード等からの入力
標準出力(stdout)
1
通常の出力
標準エラー出力(stderr)
2
エラーメッセージの出力
コマンド集
# リダイレクト
command > file # 標準出力をファイルに(上書き)
command >> file # 標準出力をファイルに(追記)
command 2> file # 標準エラーをファイルに
command 2>> file # 標準エラーをファイルに(追記)
command > file 2>&1 # 標準出力と標準エラーを同じファイルに
command &> file # 同上(bash)
command < file # ファイルを標準入力として渡す
# パイプ
command1 | command2 # command1の出力をcommand2の入力に
ls -la | grep ".txt" # 例
# tee(標準出力に表示しつつファイルにも書き出す)
command | tee file # 上書き
command | tee -a file # 追記
# xargs(標準入力をコマンドの引数に変換)
find . -name "*.log" | xargs rm
cat list.txt | xargs -I {} cp {} /backup/
# ヒアドキュメント
cat << EOF
Hello
World
EOF
103.5 プロセスの生成・監視・終了(Weight: 4)
コマンド集
# プロセスの表示
ps # 現在のシェルのプロセス
ps aux # 全プロセス(BSD形式)
ps -ef # 全プロセス(System V形式)
ps aux | grep httpd # 特定プロセスの検索
# リアルタイム監視
top # プロセスのリアルタイム監視
# top内の操作: q=終了, k=kill, M=メモリ順, P=CPU順, r=renice
# プロセスの終了
kill <PID> # プロセスにSIGTERMを送信(デフォルト)
kill -9 <PID> # SIGKILL(強制終了)
kill -15 <PID> # SIGTERM(正常終了要求)
kill -1 <PID> # SIGHUP(設定再読み込み)
killall <プロセス名> # 名前で全プロセスを終了
pkill <パターン> # パターンに一致するプロセスを終了
# 主要なシグナル
# 1 SIGHUP ハングアップ(設定再読み込み)
# 2 SIGINT 割り込み(Ctrl+C)
# 9 SIGKILL 強制終了(キャッチ不可)
# 15 SIGTERM 正常終了(デフォルト)
# 18 SIGCONT 一時停止からの再開
# 19 SIGSTOP 一時停止(キャッチ不可)
# 20 SIGTSTP 一時停止(Ctrl+Z)
# バックグラウンド・フォアグラウンド
command & # バックグラウンドで実行
jobs # バックグラウンドジョブ一覧
fg %1 # ジョブ1をフォアグラウンドに
bg %1 # ジョブ1をバックグラウンドで再開
# Ctrl+Z # フォアグラウンドのジョブを一時停止
nohup command & # ログアウト後もプロセスを維持
# プロセスの監視
free -h # メモリ使用状況
uptime # 稼働時間とロードアベレージ
pgrep <パターン> # パターンに一致するPIDを表示
# /proc/[PID] でプロセス情報を確認
ls /proc/1/ # PID 1のプロセス情報
cat /proc/1/cmdline # コマンドライン引数
103.6 プロセスの実行優先度の変更(Weight: 2)
重要ポイント
nice値 の範囲:-20(最高優先度)〜 19(最低優先度)
デフォルトのnice値は 0
一般ユーザーは nice値を上げる(優先度を下げる)ことのみ可能
rootのみ nice値を下げる(優先度を上げる)ことが可能
コマンド集
# nice値を指定してプロセスを起動
nice -n 10 command # nice値10で起動
nice -n -5 command # nice値-5で起動(rootのみ)
# 実行中のプロセスのnice値を変更
renice 10 -p <PID> # PID指定で変更
renice -5 -u username # ユーザーの全プロセスを変更
# topでnice値を確認・変更
top # NI列がnice値。r キーでreniceも可能
103.7 正規表現を使ったテキストファイルの検索(Weight: 3)
基本正規表現(BRE)
記号
意味
例
.
任意の1文字
a.c → abc, adc
*
直前の文字の0回以上の繰り返し
ab*c → ac, abc, abbc
^
行頭
^Hello
$
行末
world$
[ ]
文字クラス
[abc] → a, b, c のいずれか
[^ ]
否定文字クラス
[^0-9] → 数字以外
\
エスケープ
\. → リテラルのドット
拡張正規表現(ERE)
記号
意味
+
直前の文字の1回以上の繰り返し
?
直前の文字の0回または1回
{n}
直前の文字のn回の繰り返し
{n,m}
直前の文字のn〜m回の繰り返し
|
OR(または)
( )
グループ化
コマンド集
# grep(基本正規表現)
grep "pattern" file.txt # パターン検索
grep -i "pattern" file.txt # 大文字小文字を無視
grep -v "pattern" file.txt # パターンに一致しない行
grep -n "pattern" file.txt # 行番号付き
grep -c "pattern" file.txt # 一致した行数
grep -r "pattern" /dir/ # ディレクトリ再帰検索
grep -l "pattern" * .txt # 一致するファイル名のみ表示
grep -w "word" file.txt # 単語全体で一致
# egrep / grep -E(拡張正規表現)
grep -E "pattern1|pattern2" file.txt # OR検索
egrep "pattern1|pattern2" file.txt # 同上
# fgrep / grep -F(正規表現を使わない固定文字列検索)
grep -F "literal.string" file.txt
fgrep "literal.string" file.txt
103.8 基本的なファイル編集(Weight: 3)
viの操作モード
コマンドモード ←→ 入力モード
↓
exモード(ラストラインモード)
vi コマンド一覧
モード切替
キー
動作
i
カーソル位置の前から入力
a
カーソル位置の後から入力
o
次の行に新しい行を挿入して入力
O
前の行に新しい行を挿入して入力
Esc
コマンドモードに戻る
カーソル移動
キー
動作
h
左
j
下
k
上
l
右
0
行頭
$
行末
gg
ファイル先頭
G
ファイル末尾
数字G
指定行に移動
編集
キー
動作
x
1文字削除
dd
1行削除(カット)
5dd
5行削除
yy
1行コピー(ヤンク)
5yy
5行コピー
p
カーソルの後にペースト
P
カーソルの前にペースト
u
アンドゥ
Ctrl+r
リドゥ
r
1文字置換
cw
単語を変更
exモード(:で入力)
コマンド
動作
:w
保存
:q
終了
:wq
保存して終了
:q!
保存せず強制終了
:set number
行番号表示
:%s/old/new/g
全行置換
:/pattern
前方検索
:?pattern
後方検索
n
次の検索結果
N
前の検索結果
Topic 104:デバイス、Linuxファイルシステム、FHS
104.1 パーティションとファイルシステムの作成(Weight: 2)
コマンド集
# パーティション操作
fdisk /dev/sda # MBRパーティション管理(対話式)
gdisk /dev/sda # GPTパーティション管理
parted /dev/sda # MBR/GPT両対応
# ファイルシステムの作成
mkfs.ext4 /dev/sda1 # ext4
mkfs.xfs /dev/sda1 # XFS
mkfs.vfat /dev/sda1 # FAT32
mkfs -t ext4 /dev/sda1 # -tオプションでタイプ指定
# スワップ
mkswap /dev/sda2 # スワップ領域の作成
swapon /dev/sda2 # スワップの有効化
swapoff /dev/sda2 # スワップの無効化
swapon -s # スワップの状態確認
# ファイルシステムの種類
# ext2, ext3, ext4 :Linux標準
# XFS :大容量ファイル向け
# Btrfs :次世代ファイルシステム
# VFAT(FAT32) :USBメモリ等
# exFAT :大容量USBメモリ
104.2 ファイルシステムの整合性維持(Weight: 2)
コマンド集
# ファイルシステムのチェック・修復
fsck /dev/sda1 # ファイルシステムチェック(アンマウント状態で!)
e2fsck /dev/sda1 # ext系専用
xfs_repair /dev/sda1 # XFS専用
# ディスク使用量の確認
df -h # ファイルシステムの使用状況
df -i # inode使用状況
du -sh /var/log/ # ディレクトリのサイズ
du -h --max-depth = 1 / # 直下ディレクトリのサイズ
# ext系ファイルシステムの情報表示
tune2fs -l /dev/sda1 # ファイルシステム情報
dumpe2fs /dev/sda1 # 詳細情報
# XFSの情報表示
xfs_info /dev/sda1
104.3 ファイルシステムのマウントとアンマウント(Weight: 3)
コマンド集
# マウント・アンマウント
mount /dev/sda1 /mnt # マウント
mount -t ext4 /dev/sda1 /mnt # ファイルシステムタイプ指定
mount -o ro /dev/sda1 /mnt # 読み取り専用でマウント
umount /mnt # アンマウント
umount /dev/sda1 # デバイス名でアンマウント
# 現在のマウント状態確認
mount # マウント一覧
cat /etc/mtab # 同上
cat /proc/mounts # カーネルが認識しているマウント
# UUIDの確認
blkid # 全デバイスのUUID
lsblk # ブロックデバイスのツリー表示
lsblk -f # ファイルシステム情報付き
/etc/fstab のフォーマット
# <デバイス> <マウントポイント> <タイプ> <オプション> <dump> <fsck順>
UUID=xxxx / ext4 defaults 1 1
/dev/sda2 /home ext4 defaults 1 2
/dev/sda3 swap swap defaults 0 0
オプション
説明
defaults
rw, suid, dev, exec, auto, nouser, async
ro
読み取り専用
rw
読み書き可
noexec
実行不可
nosuid
SUID/SGIDを無効化
noauto
mount -a で自動マウントしない
user
一般ユーザーでもマウント可
104.5 ファイルのパーミッションと所有権の管理(Weight: 3)
パーミッションの読み方
-rwxr-xr-- 1 user group 1234 Jan 1 12:00 file.txt の場合:
① ファイルタイプ(先頭1文字):- はファイル、d はディレクトリ、l はシンボリックリンク
② 所有者(user):rwx(読み取り+書き込み+実行)
③ グループ(group):r-x(読み取り+実行)
④ その他(other):r--(読み取りのみ)
数値表記
数値
権限
4
読み取り(r)
2
書き込み(w)
1
実行(x)
0
なし
例:755 = rwxr-xr-x、644 = rw-r--r--
特殊パーミッション
特殊ビット
数値
意味
SUID
4000
実行時に所有者の権限で実行
SGID
2000
実行時にグループの権限で実行 / ディレクトリではグループ継承
Sticky bit
1000
ディレクトリ内で所有者のみファイル削除可(例:/tmp)
コマンド集
# パーミッション変更
chmod 755 file.txt # 数値で指定
chmod u+x file.txt # 所有者に実行権限を追加
chmod g-w file.txt # グループから書き込み権限を削除
chmod o = r file.txt # その他を読み取りのみに設定
chmod a+x script.sh # 全員に実行権限を追加
chmod -R 755 dir / # 再帰的に変更
# 特殊パーミッション
chmod 4755 file # SUID設定
chmod 2755 dir # SGID設定
chmod 1755 dir # Sticky bit設定
chmod u+s file # SUID(シンボリック)
chmod g+s dir # SGID(シンボリック)
chmod +t dir # Sticky bit(シンボリック)
# 所有者・グループ変更
chown user file.txt # 所有者を変更
chown user:group file.txt # 所有者とグループを変更
chown -R user:group dir / # 再帰的に変更
chgrp group file.txt # グループを変更
# umask(デフォルトパーミッションの制御)
umask # 現在のumask値を表示
umask 022 # umaskを設定
# ファイルのデフォルト: 666 - umask = 644
# ディレクトリのデフォルト: 777 - umask = 755
104.6 ハードリンクとシンボリックリンク(Weight: 2)
違い
ハードリンク
シンボリックリンク
inode
同じ
異なる
ファイルシステム跨ぎ
不可
可能
ディレクトリへのリンク
不可
可能
元ファイル削除時
アクセス可能
リンク切れ
コマンド集
# ハードリンク
ln original.txt hardlink.txt
# シンボリックリンク
ln -s /path/to/original symlink
# inode番号の確認
ls -i file.txt
# リンク数の確認
stat file.txt
104.7 システムファイルの検索と配置(Weight: 2)
FHS(Filesystem Hierarchy Standard)主要ディレクトリ
ディレクトリ
用途
/
ルート
/bin
基本コマンド
/sbin
システム管理コマンド
/etc
設定ファイル
/var
可変データ(ログ、スプール等)
/tmp
一時ファイル
/usr
ユーザー用プログラム・ライブラリ
/usr/bin
一般ユーザー用コマンド
/usr/sbin
システム管理用コマンド
/usr/local
ローカルにインストールしたソフトウェア
/opt
アドオンパッケージ
/home
ユーザーホームディレクトリ
/root
rootのホームディレクトリ
/boot
ブート用ファイル
/dev
デバイスファイル
/proc
カーネル情報(仮想FS)
/sys
デバイス情報(仮想FS)
/lib
共有ライブラリ
/media
リムーバブルメディアのマウントポイント
/mnt
一時的なマウントポイント
/srv
サービス用データ
/run
実行時の可変データ
コマンド集
# ファイル検索
find / -name "*.conf" # ファイル名で検索
find / -type f -name "*.log" # ファイルのみ
find / -type d -name "config" # ディレクトリのみ
find / -user root -name "*.conf" # 所有者で絞り込み
find / -size +10M # 10MB以上のファイル
find / -mtime -7 # 7日以内に変更されたファイル
find / -perm 755 # パーミッションで検索
find / -name "*.tmp" -exec rm {} \; # 検索結果に対してコマンド実行
find / -name "*.tmp" -delete # 検索結果を削除
# locate(データベース検索・高速)
locate filename
updatedb # locateデータベースの更新
# which / whereis / type
which command # コマンドのフルパス
whereis command # コマンド・マニュアル・ソースの場所
type command # コマンドの種類
102試験(102-500)
Topic 105:シェルとシェルスクリプト
105.1 シェル環境のカスタマイズ(Weight: 4)
シェルの設定ファイルの読み込み順序
ログインシェル(ssh、suでのログイン)
/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bash_login → ~/.profile
非ログインシェル(ターミナル起動等)
/etc/bash.bashrc → ~/.bashrc
ログアウト時
コマンド集
# エイリアス
alias ll = 'ls -la' # エイリアスの設定
alias # エイリアス一覧
unalias ll # エイリアスの削除
# 関数
function greet() {
echo "Hello, $1 !"
}
greet World # → Hello, World!
# 環境変数
export PATH = $PATH :/opt/bin # PATHに追加
export EDITOR = vim # デフォルトエディタ
# シェル設定の再読み込み
source ~/.bashrc
. ~/.bashrc # sourceと同じ
# set / env
set # シェル変数・環境変数の全表示
env # 環境変数のみ表示
# スケルトンディレクトリ
ls /etc/skel/ # 新規ユーザーのホームにコピーされる雛形
105.2 簡単なスクリプトの作成(Weight: 4)
シェルスクリプトの基本
#!/bin/bash
# ↑ シバン(Shebang):使用するインタプリタを指定
# --- 変数 ---
NAME = "World"
echo "Hello, $NAME !"
# --- 条件分岐 ---
if [ " $1 " = "hello" ] ; then
echo "Hello!"
elif [ " $1 " = "bye" ] ; then
echo "Goodbye!"
else
echo "Unknown argument"
fi
# --- testコマンド / [ ] の条件式 ---
# ファイル関連
# -f file : 通常ファイルか
# -d dir : ディレクトリか
# -e path : 存在するか
# -r file : 読み取り可能か
# -w file : 書き込み可能か
# -x file : 実行可能か
# -s file : サイズが0より大きいか
# 文字列関連
# -z str : 空文字列か
# -n str : 空でないか
# str1 = str2 : 等しいか
# str1 != str2 : 等しくないか
# 数値関連
# n1 -eq n2 : 等しい
# n1 -ne n2 : 等しくない
# n1 -gt n2 : n1 > n2
# n1 -ge n2 : n1 >= n2
# n1 -lt n2 : n1 < n2
# n1 -le n2 : n1 <= n2
# --- forループ ---
for i in 1 2 3 4 5; do
echo "Number: $i "
done
for file in /var/log/* .log; do
echo "Log file: $file "
done
# --- whileループ ---
count = 1
while [ $count -le 5 ] ; do
echo "Count: $count "
count = $(( count + 1 ))
done
# --- case文 ---
case " $1 " in
start)
echo "Starting..."
;;
stop)
echo "Stopping..."
;;
* )
echo "Usage: $0 {start|stop}"
;;
esac
# --- 特殊変数 ---
# $0 : スクリプト名
# $1 : 第1引数
# $2 : 第2引数
# $# : 引数の数
# $@ : 全引数(個別)
# $* : 全引数(1つの文字列)
# $? : 直前のコマンドの終了ステータス(0=成功)
# $$ : 現在のシェルのPID
# --- コマンド置換 ---
TODAY = $( date +%Y-%m-%d)
echo "Today is $TODAY "
# --- 論理演算子 ---
command1 && command2 # command1が成功したらcommand2を実行
command1 || command2 # command1が失敗したらcommand2を実行
# --- read(ユーザー入力の読み取り)---
echo "Enter your name:"
read NAME
echo "Hello, $NAME !"
# --- seq ---
for i in $( seq 1 10) ; do
echo $i
done
# --- exec ---
exec > /tmp/output.log # 以降の標準出力をファイルにリダイレクト
Topic 106:ユーザーインターフェースとデスクトップ
106.1 X11のインストールと設定(Weight: 2)
重要ポイント
X Window System(X11) :Linux のGUI表示の仕組み
Xサーバー :画面表示を担当(ユーザーの手元)
Xクライアント :アプリケーション(リモートでも可)
Wayland :X11の後継プロトコル
コマンド集
# DISPLAY環境変数(リモートX表示に使用)
export DISPLAY = :0 # ローカル
export DISPLAY = 192.168.1.10:0 # リモート
# Xサーバーへのアクセス制御
xhost + # 全ホストからの接続を許可(非推奨)
xhost +192.168.1.10 # 特定ホストを許可
xhost - # アクセス制御を有効化
# Xauth(クッキーベースの認証)
xauth list # 認証情報の一覧
重要ファイル
/etc/X11/xorg.conf :Xorgの設定ファイル
/etc/X11/xorg.conf.d/ :追加設定ディレクトリ
~/.xsession-errors :Xセッションのエラーログ
106.2 グラフィカルデスクトップ(Weight: 1)
デスクトップ環境
特徴
GNOME
GTKベース、シンプル
KDE Plasma
Qtベース、高機能
Xfce
軽量
LXDE / LXQt
超軽量
106.3 アクセシビリティ(Weight: 1)
スクリーンリーダー(Orca等)
拡大鏡、ハイコントラスト表示
オンスクリーンキーボード
スティッキーキー、スローキー
Topic 107:管理タスク
107.1 ユーザーとグループの管理(Weight: 5)
コマンド集
# ユーザー管理
useradd username # ユーザー作成
useradd -m -s /bin/bash username # ホームディレクトリ作成 + シェル指定
usermod -aG sudo username # グループに追加(-a: 追加モード)
usermod -L username # アカウントロック
usermod -U username # アカウントアンロック
usermod -s /sbin/nologin username # ログイン不可に変更
userdel username # ユーザー削除
userdel -r username # ホームディレクトリごと削除
# パスワード管理
passwd username # パスワード設定/変更
passwd -l username # アカウントロック
passwd -u username # アカウントアンロック
passwd -e username # 次回ログイン時にパスワード変更を強制
chage -l username # パスワードエージング情報の表示
chage -M 90 username # 最大有効日数を90日に
chage -d 0 username # 次回ログイン時にパスワード変更を強制
# グループ管理
groupadd groupname # グループ作成
groupmod -n newname oldname # グループ名変更
groupdel groupname # グループ削除
groups username # ユーザーの所属グループ表示
id username # UID/GID情報
# getent
getent passwd username # /etc/passwdからユーザー情報取得
getent group groupname # /etc/groupからグループ情報取得
重要ファイル
ファイル
内容
/etc/passwd
ユーザー情報(ユーザー名:x:UID:GID:コメント:ホーム:シェル)
/etc/shadow
パスワードハッシュ・エージング情報
/etc/group
グループ情報
/etc/gshadow
グループパスワード
/etc/skel/
新規ユーザーのホームにコピーされる雛形ファイル
/etc/login.defs
UID/GIDの範囲、パスワードポリシー等
107.2 ジョブスケジューリングによるシステム管理タスクの自動化(Weight: 4)
crontab の書式
# 分 時 日 月 曜日 コマンド
# 0-59 0-23 1-31 1-12 0-7(0,7=日)
# 毎日3時にバックアップ
0 3 * * * /usr/local/bin/backup.sh
# 毎月1日の0時に実行
0 0 1 * * /usr/local/bin/monthly.sh
# 平日の9時〜17時に毎時実行
0 9-17 * * 1-5 /usr/local/bin/hourly.sh
# 5分ごとに実行
*/5 * * * * /usr/local/bin/check.sh
コマンド集
# crontab
crontab -e # 現在のユーザーのcrontabを編集
crontab -l # crontabの内容を表示
crontab -r # crontabを削除
crontab -e -u username # 特定ユーザーのcrontabを編集(root)
# at(一回限りのジョブ)
at 15:00 # 15時に実行するジョブを登録
at now + 10 minutes # 10分後に実行
atq # 待機中のジョブ一覧
atrm <ジョブ番号> # ジョブの削除
# systemdタイマー
systemctl list-timers # タイマー一覧
systemctl status <タイマー名>.timer
重要ファイル
/etc/crontab :システムのcrontab
/etc/cron.d/ :追加のcronジョブ
/etc/cron.daily/, /etc/cron.hourly/, /etc/cron.weekly/, /etc/cron.monthly/
/etc/cron.allow :cron使用を許可するユーザー
/etc/cron.deny :cron使用を拒否するユーザー
/etc/at.allow, /etc/at.deny :atの制御
107.3 ローカリゼーションと国際化(Weight: 3)
コマンド集
# ロケール
locale # 現在のロケール設定を表示
locale -a # 利用可能なロケール一覧
localectl # systemdでのロケール管理
localectl set-locale LANG = ja_JP.UTF-8 # ロケールの設定
localectl set-keymap jp106 # キーマップの設定
# 環境変数でロケールを設定
export LANG = ja_JP.UTF-8
export LC_ALL = ja_JP.UTF-8
# タイムゾーン
timedatectl # 現在の日時・タイムゾーン表示
timedatectl set-timezone Asia/Tokyo # タイムゾーン設定
timedatectl list-timezones # 利用可能なタイムゾーン一覧
# 文字コード変換
iconv -f EUC-JP -t UTF-8 input.txt -o output.txt
iconv -l # サポートされるエンコーディング一覧
ロケール環境変数の優先順位
変数
説明
LC_ALL
全カテゴリを上書き(最優先)
LC_*
個別カテゴリ(LC_TIME, LC_MESSAGES等)
LANG
デフォルト値(他が未設定の場合に使用)
重要ファイル
/etc/locale.conf :システムのロケール設定(systemd)
/etc/default/locale :Debian系のロケール設定
/etc/timezone :タイムゾーン設定(Debian系)
/etc/localtime :タイムゾーンデータへのシンボリックリンク
/usr/share/zoneinfo/ :タイムゾーンデータベース
Topic 108:必須システムサービス
108.1 システム時刻の管理(Weight: 3)
重要ポイント
ハードウェアクロック(RTC) :BIOSに保持される時計
システムクロック :OSが管理する時計
NTP(Network Time Protocol) :ネットワーク経由で時刻を同期
コマンド集
# 日時の確認・設定
date # 現在の日時を表示
date +%Y-%m-%d # フォーマット指定
date -s "2026-03-01 12:00:00" # 日時の手動設定(root)
# ハードウェアクロック
hwclock # ハードウェアクロックの表示
hwclock --systohc # システムクロック→ハードウェアクロックに同期
hwclock --hctosys # ハードウェアクロック→システムクロックに同期
# timedatectl(systemd)
timedatectl # 時刻関連の情報を一括表示
timedatectl set-time "2026-03-01 12:00:00" # 時刻設定
timedatectl set-ntp true # NTP同期の有効化
timedatectl set-ntp false # NTP同期の無効化
# NTP関連
ntpdate pool.ntp.org # 手動で時刻同期(非推奨・レガシー)
ntpq -p # NTPピアの状態表示
# chrony(現在の主流NTPクライアント/サーバー)
chronyc sources # 同期ソースの表示
chronyc tracking # 同期状態の詳細
systemctl status chronyd # chronydサービスの状態
重要ファイル
/etc/ntp.conf :ntpdの設定ファイル
/etc/chrony.conf (または /etc/chrony/chrony.conf) :chronyの設定ファイル
108.2 システムログ(Weight: 4)
重要ポイント
syslog / rsyslog :従来のログ管理デーモン
journald(systemd-journald) :systemd環境のログ管理
ログのファシリティ :ログの発生源(auth, cron, daemon, kern, mail, user等)
ログのプライオリティ(重要度順) :
emerg > alert > crit > err > warning > notice > info > debug
コマンド集
# journalctl(systemd環境)
journalctl # 全ログの表示
journalctl -f # リアルタイム追跡(tail -f相当)
journalctl -u sshd # 特定ユニットのログ
journalctl -u nginx --since "1 hour ago" # 時間指定
journalctl -p err # エラー以上の重要度
journalctl -b # 現在のブートのログ
journalctl -b -1 # 前回のブートのログ
journalctl --since "2026-03-01" --until "2026-03-02" # 日付範囲
journalctl -k # カーネルメッセージのみ
journalctl --disk-usage # ジャーナルのディスク使用量
# logger(手動でsyslogにメッセージを送信)
logger "This is a test message"
logger -p auth.info "Authentication test"
logger -t mytag "Tagged message"
# ログファイルの確認
tail -f /var/log/syslog # Debian系
tail -f /var/log/messages # Red Hat系
cat /var/log/auth.log # 認証ログ(Debian系)
cat /var/log/secure # 認証ログ(Red Hat系)
# logrotate(ログローテーション)
logrotate /etc/logrotate.conf # 手動実行
logrotate -d /etc/logrotate.conf # ドライラン(テスト)
rsyslogの設定フォーマット(/etc/rsyslog.conf)
# ファシリティ.プライオリティ 出力先
auth.* /var/log/auth.log
*.err /var/log/error.log
mail.info /var/log/mail.log
*.emerg :omusrmsg:*
重要ファイル
/etc/rsyslog.conf :rsyslogの設定
/etc/rsyslog.d/ :追加設定ディレクトリ
/etc/logrotate.conf :logrotateの設定
/etc/logrotate.d/ :追加設定ディレクトリ
/etc/systemd/journald.conf :journaldの設定
/var/log/ :ログファイルの格納ディレクトリ
主要ログファイル
ファイル
内容
/var/log/syslog (Debian) / /var/log/messages (RHEL)
システム全般
/var/log/auth.log (Debian) / /var/log/secure (RHEL)
認証関連
/var/log/kern.log
カーネルメッセージ
/var/log/cron
cronジョブの実行ログ
/var/log/boot.log
ブートプロセスのログ
/var/log/dmesg
カーネルリングバッファ
/var/log/lastlog
最終ログイン情報
/var/log/wtmp
ログイン履歴(lastコマンドで表示)
/var/log/btmp
ログイン失敗履歴(lastbコマンドで表示)
108.3 メール転送エージェント(MTA)の基本(Weight: 3)
重要ポイント
MTA(Mail Transfer Agent) :メールを転送するソフトウェア
主なMTA :Postfix, Sendmail, Exim
MDA(Mail Delivery Agent) :メールをメールボックスに配送
MUA(Mail User Agent) :ユーザーがメールを読み書きするクライアント
コマンド集
# ローカルメールの送信
mail -s "Subject" user@example.com < body.txt
echo "Test" | mail -s "Subject" root
# メールキューの管理
mailq # メールキューの表示(sendmailq / postqueue -p)
postqueue -p # Postfixのメールキュー表示
postqueue -f # キュー内のメールを再送
# エイリアス
cat /etc/aliases # メールエイリアスの確認
newaliases # エイリアスデータベースの更新
# メールの転送設定
cat ~/.forward # ユーザーレベルの転送設定
重要ファイル
/etc/aliases :メールエイリアス(例:root: admin@example.com)
~/.forward :ユーザーレベルの転送先設定
/etc/postfix/main.cf :Postfixの主設定ファイル
/var/spool/mail/ :メールボックス
108.4 プリンタと印刷の管理(Weight: 2)
重要ポイント
CUPS(Common Unix Printing System) :Linux標準の印刷管理システム
CUPSの管理画面:http://localhost:631
PPD(PostScript Printer Description) :プリンタの能力を定義するファイル
コマンド集
# 印刷
lp file.txt # デフォルトプリンタで印刷
lp -d printername file.txt # プリンタ指定
lpr file.txt # BSD互換の印刷コマンド
# 印刷キュー
lpq # 印刷キューの表示
lpstat -a # プリンタの状態
lpstat -t # 全プリンタの詳細情報
# ジョブの管理
cancel <ジョブID> # 印刷ジョブのキャンセル
lprm <ジョブID> # BSD互換のキャンセル
# プリンタの管理
lpadmin -p printer -E -v uri # プリンタの追加
lpadmin -d printername # デフォルトプリンタの設定
cupsaccept printername # プリンタのジョブ受付を有効化
cupsreject printername # プリンタのジョブ受付を拒否
cupsenable printername # プリンタの有効化
cupsdisable printername # プリンタの無効化
重要ファイル
/etc/cups/cupsd.conf :CUPSデーモンの設定
/etc/cups/printers.conf :プリンタの設定
/etc/cups/ppd/ :PPDファイル
Topic 109:ネットワークの基礎
109.1 インターネットプロトコルの基礎(Weight: 4)
IP アドレスの基礎
クラス
範囲
デフォルトサブネットマスク
プライベートアドレス範囲
A
1.0.0.0 〜 126.255.255.255
255.0.0.0 (/8)
10.0.0.0/8
B
128.0.0.0 〜 191.255.255.255
255.255.0.0 (/16)
172.16.0.0/12
C
192.0.0.0 〜 223.255.255.255
255.255.255.0 (/24)
192.168.0.0/16
CIDR表記の主要なサブネット
CIDR
サブネットマスク
ホスト数
/8
255.0.0.0
16,777,214
/16
255.255.0.0
65,534
/24
255.255.255.0
254
/25
255.255.255.128
126
/26
255.255.255.192
62
/27
255.255.255.224
30
/28
255.255.255.240
14
/30
255.255.255.252
2
主要プロトコルとポート番号
ポート
プロトコル
用途
20
FTP(データ)
ファイル転送
21
FTP(制御)
ファイル転送
22
SSH
セキュアリモートログイン
23
Telnet
リモートログイン(非暗号化)
25
SMTP
メール送信
53
DNS
名前解決
67/68
DHCP
IPアドレス自動割当
80
HTTP
Web
110
POP3
メール受信
123
NTP
時刻同期
143
IMAP
メール受信
443
HTTPS
Web(暗号化)
465
SMTPS
メール送信(暗号化)
514
Syslog
ログ転送
993
IMAPS
メール受信(暗号化)
995
POP3S
メール受信(暗号化)
TCP と UDP の違い
TCP
UDP
接続
コネクション型(3ウェイハンドシェイク)
コネクションレス
信頼性
高い(再送・順序保証)
低い(保証なし)
速度
遅い
速い
用途例
HTTP, SSH, FTP, SMTP
DNS, NTP, DHCP, SNMP
IPv6
128ビットアドレス(IPv4は32ビット)
表記例:2001:0db8:85a3:0000:0000:8a2e:0370:7334
省略形:2001:db8:85a3::8a2e:370:7334
ループバック:::1
リンクローカル:fe80::
109.2 永続的なネットワーク構成(Weight: 4)
コマンド集
# --- ip コマンド(iproute2、現在の主流)---
ip addr show # IPアドレスの表示
ip addr add 192.168.1.10/24 dev eth0 # IPアドレスの追加
ip addr del 192.168.1.10/24 dev eth0 # IPアドレスの削除
ip link show # ネットワークインターフェースの表示
ip link set eth0 up # インターフェースの有効化
ip link set eth0 down # インターフェースの無効化
ip route show # ルーティングテーブルの表示
ip route add default via 192.168.1.1 # デフォルトゲートウェイの設定
ip route add 10.0.0.0/8 via 192.168.1.1 # スタティックルートの追加
ip neighbor show # ARPテーブルの表示
# --- ifconfig(レガシー、net-toolsパッケージ)---
ifconfig # 全インターフェースの表示
ifconfig eth0 # 特定インターフェースの表示
ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up # IP設定
# --- route(レガシー)---
route -n # ルーティングテーブル
route add default gw 192.168.1.1 # デフォルトゲートウェイ
# ホスト名
hostname # ホスト名の表示
hostnamectl # 詳細表示(systemd)
hostnamectl set-hostname myserver # ホスト名の設定
重要ファイル
ファイル
説明
/etc/hostname
ホスト名
/etc/hosts
静的な名前解決
/etc/nsswitch.conf
名前解決の優先順位
/etc/network/interfaces
Debian系のネットワーク設定
/etc/sysconfig/network-scripts/ifcfg-*
RHEL系のネットワーク設定
/etc/netplan/
Ubuntu 18.04以降のネットワーク設定
/etc/NetworkManager/
NetworkManagerの設定
109.3 基本的なネットワークトラブルシューティング(Weight: 4)
コマンド集
# 疎通確認
ping 8.8.8.8 # IPv4
ping -c 4 8.8.8.8 # 4回だけ
ping6 ::1 # IPv6
# 経路確認
traceroute 8.8.8.8 # 経路追跡
tracepath 8.8.8.8 # 経路追跡(root不要)
mtr 8.8.8.8 # ping + traceroute の統合ツール
# 接続状態の確認
ss -tuln # リッスン中のTCP/UDPポート
ss -tunap # 全接続+プロセス情報
netstat -tuln # レガシー(ss推奨)
netstat -rn # ルーティングテーブル
# ネットワークインターフェース情報
ip addr show
ifconfig
# ARP
arp -a # ARPテーブル(レガシー)
ip neighbor show # ARPテーブル(ip コマンド)
# nc(netcat)
nc -zv 192.168.1.1 22 # ポートスキャン
nc -l 8080 # ポート8080でリッスン
109.4 クライアント側DNSの設定(Weight: 2)
コマンド集
# DNS問い合わせ
host example.com # シンプルなDNS問い合わせ
host -t MX example.com # MXレコードの問い合わせ
dig example.com # 詳細なDNS問い合わせ
dig example.com MX # MXレコード
dig @8.8.8.8 example.com # DNSサーバー指定
nslookup example.com # DNS問い合わせ(レガシー)
getent hosts example.com # 名前解決(nsswitch.conf に従う)
重要ファイル
ファイル
説明
/etc/resolv.conf
DNSサーバーの設定(nameserver 8.8.8.8)
/etc/hosts
静的な名前解決(DNSより先に参照される)
/etc/nsswitch.conf
名前解決の順序(hosts: files dns)
/etc/resolv.conf の書式
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
domain example.com
Topic 110:セキュリティ
110.1 セキュリティ管理タスクの実行(Weight: 3)
コマンド集
# ユーザー切り替え
su - # rootに切り替え(ログインシェル)
su - username # 特定ユーザーに切り替え
su username # 環境変数を引き継いで切り替え
# sudo
sudo command # root権限でコマンド実行
sudo -u username command # 特定ユーザーとして実行
sudo -i # rootのログインシェルを起動
sudo -l # 実行可能なコマンドを表示
visudo # /etc/sudoers の安全な編集
# /etc/sudoers の書式
# ユーザー ホスト=(実行ユーザー) コマンド
# root ALL=(ALL:ALL) ALL
# %sudo ALL=(ALL:ALL) ALL
# taro ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
# ファイルの特殊パーミッション検索(セキュリティ監査)
find / -perm -4000 -type f # SUID ファイルの検索
find / -perm -2000 -type f # SGID ファイルの検索
find / -nouser -o -nogroup # 所有者/グループ不明のファイル
# 開いているポートの確認
ss -tuln
netstat -tuln
lsof -i # ネットワーク接続中のプロセス
fuser 80/tcp # ポート80を使用しているプロセス
# ログイン関連
who # ログイン中のユーザー
w # ログイン中のユーザーと作業内容
last # ログイン履歴
lastb # ログイン失敗履歴
lastlog # 全ユーザーの最終ログイン
# プロセスのリソース制限
ulimit -a # 現在の制限を表示
ulimit -n 4096 # オープンファイル数の上限変更
110.2 ホストセキュリティの設定(Weight: 3)
重要ポイント
不要なサービスの無効化 がセキュリティの基本
inetd / xinetd :オンデマンドでサービスを起動するスーパーデーモン(レガシー)
TCP Wrapper :ホストベースのアクセス制御
コマンド集
# サービス管理(systemd)
systemctl list-units --type = service # サービス一覧
systemctl list-unit-files --type = service # 自動起動設定一覧
systemctl enable sshd # 自動起動を有効化
systemctl disable telnet # 自動起動を無効化
systemctl stop telnet # サービスの停止
systemctl mask telnet # サービスの完全無効化(起動不可)
systemctl unmask telnet # maskの解除
TCP Wrapper
ファイル
説明
/etc/hosts.allow
接続を許可するホスト(先に評価される)
/etc/hosts.deny
接続を拒否するホスト
# /etc/hosts.allow
sshd: 192.168.1.0/24
ALL: LOCAL
# /etc/hosts.deny
ALL: ALL
inetd / xinetd
/etc/inetd.conf :inetdの設定
/etc/xinetd.conf, /etc/xinetd.d/ :xinetdの設定
110.3 暗号化によるデータの保護(Weight: 4)
SSH
# SSH接続
ssh user@hostname # リモートログイン
ssh -p 2222 user@hostname # ポート指定
ssh -X user@hostname # X11転送を有効化
# SSH鍵の管理
ssh-keygen # 鍵ペアの生成(デフォルト: RSA)
ssh-keygen -t ed25519 # Ed25519鍵の生成(推奨)
ssh-keygen -t rsa -b 4096 # RSA 4096ビット鍵の生成
ssh-copy-id user@hostname # 公開鍵をリモートホストに配置
ssh-agent bash # SSH エージェントの起動
ssh-add # 秘密鍵をエージェントに追加
ssh-add -l # 登録済み鍵の一覧
# SSHトンネル
ssh -L 8080:localhost:80 user@hostname # ローカルポートフォワーディング
ssh -R 8080:localhost:80 user@hostname # リモートポートフォワーディング
# SCP(ファイル転送)
scp file.txt user@hostname:/path/ # リモートへコピー
scp user@hostname:/path/file.txt . # リモートからコピー
scp -r dir / user@hostname:/path/ # ディレクトリ再帰コピー
SSH 重要ファイル
ファイル
説明
~/.ssh/id_rsa
秘密鍵(RSA)
~/.ssh/id_rsa.pub
公開鍵(RSA)
~/.ssh/id_ed25519
秘密鍵(Ed25519)
~/.ssh/id_ed25519.pub
公開鍵(Ed25519)
~/.ssh/authorized_keys
ログインを許可する公開鍵の一覧
~/.ssh/known_hosts
接続済みホストの公開鍵
~/.ssh/config
クライアント側の接続設定
/etc/ssh/sshd_config
SSHサーバーの設定
/etc/ssh/ssh_config
SSHクライアントの設定
sshd_config の主要設定
Port 22 # 待ち受けポート
PermitRootLogin no # rootログインの禁止(推奨)
PasswordAuthentication no # パスワード認証の無効化(鍵認証のみ)
PubkeyAuthentication yes # 公開鍵認証の有効化
X11Forwarding yes # X11転送の許可
AllowUsers taro hanako # ログイン許可ユーザー
GPG(GNU Privacy Guard)
# 鍵の管理
gpg --gen-key # 鍵ペアの生成
gpg --list-keys # 公開鍵の一覧
gpg --list-secret-keys # 秘密鍵の一覧
gpg --export -a "User Name" > pub.key # 公開鍵のエクスポート
gpg --import pub.key # 公開鍵のインポート
gpg --delete-key "User Name" # 公開鍵の削除
# ファイルの暗号化・復号
gpg -e -r "User Name" file.txt # 公開鍵で暗号化(→ file.txt.gpg)
gpg -d file.txt.gpg # 復号
gpg -c file.txt # 対称鍵(パスフレーズ)で暗号化
gpg -o decrypted.txt -d file.txt.gpg # 出力ファイル名を指定して復号
# デジタル署名
gpg --sign file.txt # 署名
gpg --clearsign file.txt # クリアテキスト署名
gpg --detach-sign file.txt # 分離署名
gpg --verify file.txt.sig file.txt # 署名の検証
試験対策のポイント
出題比率(Weight)ランキング
101試験(出題比率が高い順)
順位
サブトピック
Weight
内容
1
103.1
4
コマンドラインでの操作
1
103.3
4
基本的なファイル管理
1
103.4
4
ストリーム・パイプ・リダイレクト
1
103.5
4
プロセスの生成・監視・終了
5
101.2
3
システムのブート
5
101.3
3
ランレベル/ブートターゲット
5
102.4
3
Debianパッケージ管理
5
102.5
3
RPM/YUMパッケージ管理
5
103.7
3
正規表現によるテキスト検索
5
103.8
3
基本的なファイル編集(vi)
5
104.3
3
マウント/アンマウント
5
104.5
3
パーミッション・所有権
5
104.7
3
システムファイルの検索・FHS
102試験(出題比率が高い順)
順位
サブトピック
Weight
内容
1
107.1
5
ユーザーとグループの管理
2
105.1
4
シェル環境のカスタマイズ
2
105.2
4
シェルスクリプトの作成
2
107.2
4
ジョブスケジューリング
2
108.2
4
システムログ
2
109.1
4
インターネットプロトコルの基礎
2
109.2
4
永続的なネットワーク構成
2
109.3
4
ネットワークトラブルシューティング
2
110.3
4
暗号化によるデータの保護
頻出テーマ 暗記チェックリスト
必ず覚えるべき項目
ブートシーケンス(BIOS/UEFI → GRUB → カーネル → init/systemd)
systemdのサービス管理コマンド(systemctl start/stop/enable/disable/status)
パッケージ管理(apt vs yum/dnf vs rpm vs dpkg)
パーミッションの数値表記と特殊パーミッション(SUID/SGID/Sticky bit)
viの基本操作(モード切替、保存・終了、検索・置換)
リダイレクト(>, >>, 2>, 2>&1, <, |)
プロセス管理(ps, top, kill, シグナル番号)
nice値の範囲(-20〜19)と権限
crontabの書式(分 時 日 月 曜日 コマンド)
TCP/UDPの主要ポート番号
IPアドレスのクラスとプライベートアドレス範囲
SSH鍵認証の仕組みと設定ファイル
FHS(各ディレクトリの役割)
/etc/passwd, /etc/shadow, /etc/group のフォーマット
ログ管理(journalctl, rsyslog, ファシリティとプライオリティ)
名前解決の順序(/etc/nsswitch.conf)と関連ファイル
GPGの基本操作(鍵生成、暗号化、署名)
おわりに
LPIC-1は範囲が広いですが、Topic 103(GNUとUnixコマンド) と Topic 107〜110(管理タスク・ネットワーク・セキュリティ) がWeight的にも最も重要です。
学習の進め方としては:
まずはコマンドを実際に手を動かして打つ (暗記より体で覚える)
Weight の高いトピックから優先的に学習する
ping-t 等の問題集で出題形式に慣れる
直前は本記事のチェックリストで漏れを確認する
この記事が合格への一助になれば幸いです。
ここまでお読みいただきありがとうございます。
ではまた、お会いしましょう。
参考リンク