LinuCレベル1(Version10.0)101試験①

  • 2021年4月1日
  • 2021年6月10日
  • IT

主題1.01:Linuxのインストールと仮想マシン・コンテナの利用

1.01.1 Linuxのインストール、起動、接続、切断と停止(重要度4)

sshコマンド

書式
ssh【オプション】【ユーザー@】ホスト【コマンド】

概要
SSHによるリモート接続を行う

主なオプション
-l ユーザー
 →接続に使用するユーザーを指定。引数で指定することも可能。省略した場合は現在ログイン中のユーザー名でログインを試みる
-i ファイル
 →ユーザー認証の際に使用する秘密鍵ファイルを指定

引数
・ユーザー:接続に使用するユーザーを指定
・ホスト:接続先のホストの名前もしくはIPアドレスを指定
・コマンド:指定した場合、接続先でコマンドを実行して切断

使用例
ssh testuser@192.168.56.××
 →testuserでIPアドレスを指定してSSH接続
ssh -l root -i linuc1_centos7.key 192.168.56.××
 →ユーザー名と秘密鍵のパスを指定してSSH接続

接続後に切断できるコマンドもしくは操作
logoutコマンド
exitコマンド
Ctrl + d を押す

OpenSSHに関する主なファイル(SSHクライアント)
・設定ファイル:/etc/ssh/ssh_config
・秘密鍵:~/.ssh/id_rsa
・公開鍵:~/.ssh/id_rsa.pub
・認証鍵リスト:~/.ssh/known_hosts(SSH接続先のホスト名やIPアドレス、公開鍵が格納)

OpenSSHに関する主なファイル(SSHサーバー(sshd))
・設定ファイル:/etc/ssh/sshd_config
・秘密鍵:/etc/ssh/ssh_host_rsa_key
・公開鍵:/etc/ssh/ssh_host_rsa_key.pub
・認証鍵リスト:~/.ssh/authorized_keys

ホスト認証
・ホスト認証は、SSHクライアントが接続先のリモートホスト(SSHサーバー)が正しいホストかどうかを確認する(なりすましを防ぐ)ために行う
・クライアントからの接続時に、リモートホストは自身の公開鍵をSSHクライアントに送信する。SSHクライアントは受け取った公開鍵と、SSHクライアントの「~/.ssh/known_hosts」ファイルに格納されているSSHサーバーの公開鍵を比べることで正しいホストかどうかを確認する

ユーザー認証
・ユーザー認証は、SSHクライアントで接続してくるユーザーが正当なユーザーかどうかを確認するために行う。ユーザー認証にはパスワード方式と公開鍵方式の2種類がある
・パスワード方式・・・ローカルでのログインと同様に、接続ユーザーのID/パスワードで認証する
・公開鍵方式・・・公開鍵と秘密鍵の組み合わせで認証する。パスワードを使用せず、鍵を持つ者がログインできる

ユーザー認証の公開鍵方式
・公開鍵方式を使用する場合は、ユーザーごとに一対の公開鍵と秘密鍵を作成して、公開鍵の方をSSHサーバーの「~/.ssh/authorized_keys」に登録しておく
・サーバーはSSH接続を受け付けた際、登録されている公開鍵とユーザーの秘密鍵のペアが一致するかどうかを確認する。一致しなければログインさせない。これによりパスワード方式よりもセキュリティ上強固なユーザー認証を実現する

SSHにおける認証の流れ
ホスト認証:接続先のサーバーを認証 → ユーザー認証:接続元のユーザーを認証(パスワード認証か公開鍵認証のどちらか)


shutdownコマンド

書式
shutdown【オプション】【タイミング】【”メッセージ”】

概要
システムを安全な方法で停止・再起動させる

主なオプション
-h
 →シャットダウン
-r
 →再起動
-k
 →実際にシャットダウンせず、メッセージのみ送信
-c
 →シャットダウン・再起動の予約をキャンセル

引数
・タイミング:シャットダウン、再起動するタイミングを指定。指定できるタイミングの例は以下の通り
 now → 今すぐ実行
 18:00 → 18時に実行
 +5 → 5分後に実行
・メッセージ:接続中の端末に送信するメッセージを指定

使用例
shutdown -h +5 “shutdown soon”
 →5分後にシャットダウンするよう予約
shutdown
 →オプションや引数を省略すると1分後にシャットダウンするという意味になる

シャットダウンできる別のコマンド(shutdownコマンドの使用を推奨)
halt -p
poweroff
systemctl poweroff

systemctl start poweroff.target

再起動できる別のコマンド(shutdownコマンドの使用を推奨)
reboot
systemctl reboot

systemctl start reboot.target


1.01.2 仮想マシン・コンテナの概念と利用(重要度4)

virshコマンド

書式
virsh サブコマンド【ドメイン名】【オプション】

概要
仮想環境の管理

主なサブコマンド
list
 →ドメインの一覧表示。ーーallオプションで停止しているドメインも表示
start
 →ドメインの起動
shutdown
 →ドメインの停止。ーーmodeオプションで停止のモードを指定(acpiと指定すると電源の停止も行う)
destroy
 →ドメインの強制停止
reboot
 →ドメインの再起動
suspend
 →ドメインの一時停止
resume
 →一時停止中のドメインを再開する
dominfo
 →ドメインの情報を表示
console
 →シリアルコンソール経由でドメインに接続
dumpxml
 →ドメインの定義ファイルをXML形式で出力
create
 →XML形式のファイルから仮想マシンを作成し、新規の仮想マシンを起動

引数
・ドメイン名:制御対象となるドメインを指定

使用例
virsh start debian-live2
 →debian-live2ドメインを起動する

virt-managerやvirshコマンドなどが利用する、オープンソースの仮想化管理用のライブラリ
libvirt


dockerコマンド

書式
docker サブコマンド

概要
dockerを利用したコンテナ環境の制御

主なサブコマンド
pull イメージ
 →リポジトリからイメージをダウンロード
push イメージ
 →リポジトリにイメージをアップロード
images
 →イメージの一覧を表示
ps
 →コンテナの一覧を表示。併用できるオプションは次の通り
 ・-a:停止中のコンテナも表示
run イメージ
 →コンテナを作成して起動。併用できるオプションは次の通り
 ・-i:コンテナの標準入力を開く
 ・-t:端末(tty)を利用
 ・-d:バックグラウンドで実行
start コンテナ
 →コンテナの作成
stop コンテナ
 →コンテナの停止
kill コンテナ
 →コンテナの強制停止
attach コンテナ
 →コンテナに接続
exec コンテナ コマンド
 →起動中のコンテナでコマンドを実行
rm コンテナ
 →コンテナの削除
rmi イメージ
 →イメージの削除

使用例
docker pull debian
 →debianイメージをダウンロード

仮想化におけるコンテナの特徴
・ホストOSのカーネルを共有する
・ホストOSのリソースを隔離して作成した仮想環境である
・コンテナを別の環境に配布して実行できる
・cgroupによってコンテナのリソースを管理する
・namespaceによってコンテナとホスト間でユーザー権限を分離する


仮想化(Virtualization)

仮想化とは
コンピューターリソースを実際の物理的な構成にとらわれず、論理的に分割・統合して提供する技術

仮想化の種類
仮想化を実現する方法には、大きく分けて仮想マシンとコンテナがある

仮想マシン(VM:Virtual Machine)
ハイパーバイザーという仮想化ソフトウェア上で仮想的なハードウェア(仮想マシン)を起動し、ゲストOS(仮想マシンにインストールしたOS)を動作させる方式

ハイパーバイザーの種類
・ネイティブ型(Type1)
ハードウェア上でハイパーバイザーを直接起動し、その上で仮想マシンとゲストOSを動作させる。
ネイティブ型の仮想化ソフトウェアには、Xen、MicrosoftのHyper-V、VMwareのvSphere Hypervisorなどがある
・ホスト型(Type2)
ホストOS上にアプリケーションの1つとして仮想化ソフトウェアをインストールし、その上で仮想マシンとゲストOSを動作させる。
ホスト型の仮想化ソフトウェアは、Oracle VM VirtualBox、VMware Workstation、Parallels Desktopなどがある


CPUの仮想化支援機能

概要
仮想化ソフトウェアが行う処理の一部をCPUが分担することで処理を高速化する機能
KVM(Type1)を使用するためには仮想化支援機能を搭載したCPUが必要

名称
Intel VT
AMD-V


1.01.3 ブートプロセスとsystemd(重要度4)

ブートプロセス

Linuxシステムの起動順序(ブートプロセス)
BIOS/UEFI(ファームウェア) → ブートローダー → カーネル → init

BIOS
・電源を入れると起動し、記憶装置(HDD)等に関して最低限の認識を行う
・起動する順にデバイスの先頭セクタにあるMBRを読み込み、ブートローダーが得られたら制御を移す
・起動デバイスの順序を設定できる

ブートローダー
・記憶装置(HDD)内のカーネルをロードし、制御を移す

カーネル
・高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行う
・/sbin/initを起動する

init
・最近のシステムではinitプログラムとして、Upstartやsystemdが採用される
・「/etc/inittab」を設定ファイルとして使用する従来のinitプログラムは「SysVinit」と呼ばれる


systemctlコマンド

書式
systemctl サブコマンド【ユニット名】

概要
systemdにおけるユニットの制御を実行

主なサブコマンド
start
 →サービスを起動
stop
 →サービスを停止
restart
 →サービスを再起動
reload
 →サービスの設定ファイルを再読み込みする
is-active
 →サービスが稼働しているかを表示する
status
 →サービスの状態を確認
enable
 →サービスの自動起動を有効化
disable
 →サービスの自動起動を無効化
get-default
 →既定のターゲットを表示
set-default
 →既定のターゲットを変更
isolate
 →現在のターゲットを変更
halt
 →システムを停止しhalt状態にする
reboot
 →システムを再起動する
poweroff
 →システムを停止し電源を切断する
list-unit-files
 →ユニットの状態を表示

引数
・ユニット名:制御対象となるユニットを指定

使用例
systemctl start httpd
 →httpdを起動
systemctl isolate rescue.target
 →現在のターゲットをrescue.targetに変更

systemdの管理単位であるユニット
device:各種デバイスを管理するUnit
mount:ファイルシステムのマウントを管理するUnit
service:サービスを制御するUnit
swap:スワップ領域を管理するUnit
target:複数のサービスを1つのグループにするためのUnit

SysVinitのランレベルとsystemdのターゲットの対応
ランレベル0:poweroff.target
ランレベル1:rescue.target→レスキューモード(シングルユーザーモード)
ランレベル2,3,4:multi-user.target→マルチユーザーモード
ランレベル5:graphical.target→グラフィカルモード
ランレベル6:reboot.target

シングルユーザーモードに変更した後に、通常の起動状態に戻す方法
systemctl rescue →シングルユーザーモードに変更
通常の起動状態に戻すには下記の3つの方法がある
systemctl reboot
systemctl default
Ctrl-Dを入力する

サーバーとして動作させるのに適切な起動時のターゲット
multi-user.target
runlevel3.target

メンテナンスを行うために最低限のシステムサービス状態で起動
rescue.target
runlevel1.target

次回起動時にグラフィカルログインさせるようにするコマンド
rm -f /etc/systemd/system/default.target
ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target

次回起動時のランレベルの確認作業
cd /etc/systemd/system
ls -l default.target

systemdの特徴
・扱う処理をUnitという単位で管理する
・cgroupsでプロセスのリソースを管理する
・サービスの並列起動によって高速なシステム起動や停止が行える


1.01.4 プロセスの生成、監視、終了(重要度3)

psコマンド

書式
ps【オプション】

概要
動作しているプロセスの一覧を表示

主なオプション(BSD形式)
a
 →ユーザーが実行したすべてのプロセスを表示
f
 →親子関係も表示する
l
 →詳細情報を表示
u
 →プロセスの実行ユーザー名も表示
x
 →制御端末のないサービス(デーモン)などのプロセスを表示
p PID
 →指定したPID(プロセスID)のプロセス情報を表示

主なオプション(Unix形式)
-e
 →すべてのプロセスを表示
-f
 →起動時間(STIME)などを含めた詳細情報を表示
-l
 →詳細情報を表示
-p
 →指定したPID(プロセスID)のプロセス情報を表示

使用例
ps ax
 →動作中のすべてのプロセスを一覧表示
ps -e
 →動作中のすべてのプロセスを一覧表示

psコマンドで出力される情報
PID→プロセスID
TTY→端末
STAT→プロセスの状態
TIME→CPUの稼働時間
COMMAND→プロセスの実行内容


pstreeコマンド

書式
pstree【オプション】

概要
動作しているプロセスをツリー状に表示

主なオプション
-p
 →PIDを表示


pgrepコマンド

書式
pgrep【オプション】キーワード

概要
動作しているプロセスを検索して表示

主なオプション
-l
 →PIDの他にプロセス名も表示
-u ユーザー
 →指定したユーザー権限で実行されているプロセスを表示

引数
・キーワード:検索するプロセス名を指定

使用例
pgrep -l sshd
 →sshdというキーワードでプロセスを検索


topコマンド

書式
top【オプション】

概要
現在動作しているプロセスやシステムリソースの状態をリアルタイムに表示

主なキー動作
topコマンド実行中、以下のキーにより命令を行う
 ・q:topコマンドの終了
 ・k:プロセスの停止(kill)
 ・d:表示間隔の指定


uptimeコマンド

書式
uptime

概要
現在動作しているシステムリソースの状態(稼働時間など)を表示


freeコマンド

書式
free

概要
システムのメモリの状態を表示


jobsコマンド

書式
jobs【オプション】

概要
実行中のジョブの一覧を表示


fgコマンド

書式
fg ジョブ番号

概要
バックグラウンドジョブをフォアグラウンドに切り替え

引数
・ジョブ番号:切り替えるジョブを指定


bgコマンド

書式
bg ジョブ番号

概要
フォアグラウンドジョブをバックグラウンドに切り替え

引数
・ジョブ番号:切り替えるジョブを指定


nohupコマンド

書式
nohup コマンド構文

概要
ログアウト後もハングアップシグナルを無視してコマンドを実行

引数
・コマンド構文:実行するコマンド構文を指定

使用例
nohup /testbin/sleep &
 →ログアウト後も処理を続ける(末尾に&を付けたのでバックグラウンドジョブとして実行:シェルを占有しない)


screenコマンド

書式
screen【オプション】

概要
スクリーンによる操作を管理

主なオプション
-ls
 →起動中のスクリーン一覧を表示
-r PID
 →指定したスクリーンに再接続(アタッチ)

主なキー操作
・スクリーン接続中、Ctrl + a を押した後に以下のキーを押すと、スクリーン操作が可能
 d→スクリーンを切断(デタッチ)
 \→スクリーンを終了

使用例
screen
 →新しいスクリーンが表示される
screen -r 2497
 →PID2497のスクリーンにアタッチ(再接続)


tmuxコマンド

書式
tmux【サブコマンド】

概要
端末を多重化してセッション管理

主なサブコマンド
attach-session
 →セッションに接続
list-sessions
 →セッションの一覧を表示
kill-session
 →セッションを終了

主なキー操作
・セッション接続中、Ctrl + b を押した後に以下のキーを押すと、セッション操作が可能
 d→セッションを切断(デタッチ)
 ?→キー操作の一覧を表示

使用例
tmux
 →新規セッションを生成
tmux attach-session
 →セッションに接続


killコマンド

書式
kill【オプション】PID/%ジョブ番号

概要
指定したプロセスもしくはジョブにシグナルを送信

主なオプション
-シグナル名/-シグナル番号
-s シグナル名/-s シグナル番号
 →送信するシグナルを指定(既定は15/SIGTERM)
-l
 →シグナルの一覧を表示

主なシグナル
1:HUP:再起動
2:INT:割り込み( Ctrl + c )
9:KILL:強制終了
15:TERM:終了(既定)
18:CONT:一時停止のプロセスを再開
19:STOP:一時停止
20:TSTP:サスペンド( Ctrl + z )

引数
・PID:シグナルを送信するプロセスのIDを指定
・ジョブ番号:シグナルを送信するジョブの番号を指定

使用例
kill -9 %1
 →ジョブ番号1のプロセスを強制終了
kill -s kill 2586
 →PIDを指定してプロセスを強制終了


killallコマンド

書式
killall【オプション】名前

概要
指定した名前のプロセスにシグナルを送信

主なオプション
-シグナル名/-シグナル番号
-s シグナル名/-s シグナル番号
 →送信するシグナルを指定(既定は15/SIGTERM)
-l
 →シグナルの一覧を表示

引数
・名前:シグナルを送信するプロセスの名前を指定


pkillコマンド

書式
pkill【オプション】キーワード

概要
指定したキーワードに一致するプロセスにシグナルを送信

主なオプション
-シグナル名/-シグナル番号
 →送信するシグナルを指定(既定は15/SIGTERM)
-l
 →シグナルの一覧を表示

引数
・キーワード:指定したキーワードによりプロセスを検索して送信


1.01.5 デスクトップ環境の利用(重要度1)

X Window Systemと統合デスクトップ環境

X Window System(X)
LinuxでGUI環境を実装するのに、古くから利用されている

X環境を構成するソフトウェア
ウィンドウマネージャー:ウィンドウの表示や制御をする。Mutter、KWin、twmなどがある
ディスプレイマネージャー:ユーザーにGUI環境のログインを提供する、initやsystemdによりディスプレイマネージャーサービスが起動される、デスクトップ環境を準備する。GDM、KDM、XDMなどがある

統合デスクトップ環境
GUI環境とアプリケーションをまとめて統一的な操作を提供する仕組み

GNOMEとKDEで利用される規定のソフトウェア
統合デスクトップ環境:ウィンドウマネージャー:ディスプレイマネージャー
GNOME:Mutter:GDM
KDE:KWin:KDM


startxコマンド

書式
startx

概要
Xを起動するためのスクリプトを実行


DISPLAY変数

変数の値
[ホスト]:ディスプレイ番号[.モニター番号]

概要
GUIアプリケーションの出力先を指定。ホストが省略されると、ローカル端末上(Xアプリケーションの実行を指定した端末上)のディスプレイ番号のXサーバーが出力先となる。Xサーバーが1つしか存在しない場合は0。複数のモニターが接続されている場合、モニター番号で出力先のモニターを指定できる

使用例
Xserver# xhost +172.16.0.4
Xclient# DISPLAY=172.16.0.1:0
Xclient# export DISPLAY
Xclient# xeyes &
 →Xクライアント上で実行したプログラム「xeyes」をXサーバーのディスプレイに表示


xauthコマンド

書式
xauth サブコマンド

概要
Xアプリケーション転送の際の認証処理を行う

主なサブコマンド
list
 →認証に利用できる情報の表示
add
 →認証情報の追加
remove
 →認証情報の削除