本気で学ぶ Linux実践入門 サーバ運用のための業務レベル管理術

【最新 – Linuxを学ぶおすすめ本 – 入門から応用までリストアップ!】も確認する

最短でLinuxを学ぶ!

様々なコマンドを実践的に解説され、基礎から実践まで網羅されているLinuxサーバ運用の入門書です。手順に沿って丁寧な解説がされています。CentOSとUbuntuに対応しています。独学でLinux上級者を目指す方にお勧めの1冊です。

大竹 龍史 (著), 山本 道子 (著)
出版社: SBクリエイティブ (2019/5/29)、出典:出版社HP

 

はじめに

Linuxは1991年に誕生し、現在ではサーバ、デスクトップ、モバイル端末、組み込みシステム、クラウドのインフラやクラウドのインスタンスなど、広範な分野で使われているオープンソースのオペレーティングシステムです。

Linuxはオープンソースのゆえに、現在数百種類のディストリビューションと呼ばれるLinuxの配布ソフトウェアがありますが、本書ではその中からCentOSとUbuntuという、サーバや開発プラットフォームでシェアの高い2つのディストリビューションを取り上げています。

本書は、企画段階から掲載する内容に熟考を重ねました。「基本的な操作を習得できる書籍としたい」だけでなく、「一般的な入門書を一読した方でも、手にとる書籍にしたい」のが私たち執筆者と編集担当者の意見でした。

したがって、本書の前半はLinuxのインストールから基本操作まで、可能な限り実行例を掲載し、図などを交えて解説しています。また、後半では、トラブルシューティングを掲載したり、セキュリティも基本から一歩踏み込んだ内容を解説しています。

入門書としては多めなボリュームになっていますが、業務としてLinuxを運用、管理することを目指す方々が必要とするノウハウを載せた1冊となっています。

本書の特徴として、CentOSとUbuntuを並行して解説しているので、既にどちらか片方を使っている方が、もう片方を知りたいときにも便利だと思います。例えば、個人的にUbuntuを使っていて、これから業務でCentOSやRed Hat Enterprise Linux(RHEL)を使うことになった場合など、同等のパッケージ管理コマンドを見つけたり、同等のネットワーク設定を手早く見つけられると思います。

また本書のもう1つの特徴として、付録に仮想環境としてMicrosoft Windows用にVirtualBox、Linux用にKVMのインストール方法を解説し、さらにこの仮想環境で1台のルータ、2台のホストが接続されたネットワークを2個を構築する手順を解説しています。

ご自身のPC1台でこの仮想環境を構築することで、本書に書かれた内容を検証することができます。このような、複数のネットワークに分けて複数のホストを配置する仮想環境の作成でつまずいてしまった方にも、ぜひ、参考にしていただきたいです。

本書を書くにあたり、作図や校正などでたくさんのヘルプをしてくれた電気通信大学4年生中川真歩さんに感謝します。最後に、本書の執筆の機会を与えて頂いたSBクリエイティブ株式会社の皆様に、この場をお借りして御礼申し上げます。

2019年5月
大竹龍史 山本道子

大竹 龍史 (著), 山本 道子 (著)
出版社: SBクリエイティブ (2019/5/29)、出典:出版社HP

Contents

Chapter1 Linuxの概要と導入

1-1 Linuxのディストリビューションを理解する
オペレーティングシステムとは
Linuxオペレーティングシステムの構成
ディストリビューションとは
ディストリビューションのシェア
ディストリビューションの人気度
ディストリビューションの種類
主なデスクトップ環境
GUIによる操作とCUIによる操作
1-2 CentOSをインストールする
インストールメディアの入手
インストール手順
ログイン
1-3 Ubuntuをインストールする
インストールメディアの入手
インストール手順
ログイン
1-4 システムの初期設定を行う
CentOSでの初期設定
Ubuntuでの初期設定
1-5 sshによるリモートログイン
リモートログインとは
sshdの起動確認
sshによるリモートログイン
Column ディスプレイマネージャとデスクトップ環境の軽量化

Chapter2 Linuxの起動・停止を行う
2-1 ブートシーケンスを理解する
ブートシーケンスの概要
BIOS/UEFI
ブートローダ
カーネル
system
ログイン
シェルでの操作
2-2 シェルの使い方を理解する
シェルとは組み込みコマンドと外部コマンド・
シェル変数と環境変数
2-3 systemctlコマンドでサービスを管理する
サービスの管理の仕組み
systemctlコマンドによるサービスの管理
サービス設定ファイルとオプション
systemctlコマンドでは設定を変更できない重要なサービス
2-4 システムの再起動と停止を行う
設定とサービスをグループ化したターゲット
マシンの電源オフ
マシンの停止と再起動
ランレベルの表示と移行
Column 起動時エラーの原因と対策

Chapter3 ファイルを操作する
3-1 Linuxのディレクトリ構造を理解する
ツリー構造と各ディレクトリの役割
コマンドプロンプト
オンラインマニュアル
3-2 ファイルとディレクトリを管理する
ファイルとディレクトリをコマンドラインで操作する
標準入出力の制御
フィルタによる処理
文字列の検索
3-3 パーミッションを活用する
ファイルの所有者の管理
リンクの作成
コマンドとファイルの検索
3-4 viエディタでファイルを編集する
viエディタとは
viエディタ内での文字列検索
viエディタの設定
Column sudoを利用する

Chapter4 ユーザを管理する
4-1 ユーザの登録/変更/削除を行う
ユーザとは
ユーザの登録
パスワードの設定
ユーザアカウントの削除
ユーザ情報の変更
4-2 グループの登録/変更/削除を行う
グループとは
グループの作成
グループの削除
所属グループの変更
4-3 アカウントのロックと失効日の管理
失効日の設定
ログインの禁止
4-4 ログイン履歴の調査
ログイン履歴の表示
ログインユーザの表示

Chapter5 スクリプトやタスクを実行する
5-1 シェルスクリプトの実行方法を理解する
シェルスクリプトとは
シェルスクリプトの実行
実行時のオプションと引数(特殊変数)
5-2 ジョブスケジューリング
ジョブスケジューリングとは
crontabファイル
crontabファイルの設定
atサービス
5-3 管理作業の自動化(サンプル).
作業内容と手順
スクリプトの内容。
cronへの登録
Column ディストリビューションで提供されるPythonツール

Chapter6 システムとアプリケーションを管理する
6-1 CentOSのパッケージ管理を行う
パッケージ管理とは
rpmコマンドの利用
yumコマンドの利用
6-2 Ubuntuのパッケージ管理を行う
パッケージ管理とは
dpkgコマンドの利用
aptコマンドの利用
6-3 プロセスを管理する
プロセスの監視
プロセスの優先度
ジョブ管理
シグナルによるプロセスの制御
6-4 バックアップと復元を行う
アーカイブファイルの管理
バックアップ(データ復旧)
バックアップファイルの転送
6-5 ログの収集と調査を行う
ログファイル
rsyslogによるログの収集と管理
ログファイルのローテーション
systemd-journaldによるログの収集と管理
6-6 システム時刻を調整する
システムクロック
ハードウェアクロック
NTP
システムクロックの時刻を設定する
Column ミラーサイトとリポジトリを選択する

Chapter7 ディスクを追加して利用する
7-1 新規ディスクを追加する
パーティション
デバイスファイル
7-2 ディスクを分割する
MBRとGPT
バーティション管理ツール
7-3 ファイルシステムを作成する
主なファイルシステム
xfs
ext2、ext3、ext4
マウント
スワップ領域の管理
ファイルシステムのユーティリティコマンド
ファイルシステムの不整合チェック
7-4 iSCSIを利用する
iSCSIとは
iSCSIターゲットの設定手順
iSCSIイニシエータの設定手順
iSCSIターゲットの管理
iSCSIイニシエータの管理
Column LVMを使ってみよう

Chapter8 ネットワークを管理する
8-1 ネットワークに関する設定ファイルを理解する
パッケージと設定ファイル
ネットワークに関する設定ファイル
NIC(Network Interface Card)の命名
8-2 NetworkManagerの利用
NetworkManagerによるネットワーク管理
Wifiインターフェイスの管理
8-3 ネットワークの状態把握と調査を行うコマンド
ネットワークの管理と監視の基本コマンド(ip)
ネットワークの管理と監視の基本コマンド(その他)
8-4 ルーティング(経路制御)を行う
ルーティングの管理
フォワーディング
経路の表示
8-5 Linuxブリッジによるイーサネットブリッジを行う
ブリッジとは
Network Managerとsystemd-networkd
NetworkManagerの設定
systemd-networkdおよび「systemd-networkd-netplan」の設定
Column IPv6のネットワークを設定する

Chapter9 システムのメンテナンス
9-1 システムの状態把握と調査を行うコマンド
システムの状態把握と調査
9-2 ログインできなくなった場合の対処方法
インストーラを立ち上げて修復作業を行う
9-3 ネットワークに繋がらなくなった場合の対処方法
ネットワークのチェック手順
ネットワークインターフェイスの設定をチェック
ルーティングをチェック
名前解決をチェック
サービス(ポート)へのアクセスをチェック
9-4 アプリケーションの応答が遅くなった場合の対処方法
プロセスのリソース使用状況をチェックする
計算主体のアプリの処理速度を短縮する
メモリを多く使用するアプリの処理速度を短縮する
ストレージの処理速度を測定する
9-5 ファイル/ファイルシステムにアクセスできない場合の対処方法
ファイル/ファイルシステムに生じることのある不具合
空き領域がなくなる
ファイルシステムが損傷
シンボリックリンク/ハードリンクのエラー
ハードウェアの障害
ファイルシステムのマウント
ファイル共有での注意点

Chapter10 セキュリティ対策
10-1 攻撃と防御について理解する
セキュリティの概要
情報漏洩・盗聴に対する対策
侵入に対する防御
侵入の検知
侵入された後の対処
10-2 データの暗号化とユーザ/ホストの認証について理解する
Linuxにおける認証方式
暗号の概要
10-3 SSHによる安全な通信を行う
SSHとは
sshサーバの設定ファイル
sshクライアントの設定ファイル
秘密鍵/公開鍵の生成と公開鍵認証の設定
10-4 Firewallで外部からのアクセスを制限する
firewalld、ufw、iptables(Netfilter)
10-5 知っておきたいセキュリティ関連のソフトウェア
改ざん、侵入の検知やマルウェア対策
aideによる改ざんの検知
Snortによる侵入の防御
Column SSH通信路暗号化のシーケンス

Appendix 仮想環境を構築する
A-1 仮想化の概要
仮想化とは
ハイパーバイザー
コンテナ型仮想化
仮想化ソフトウェアが提供する機能
A-2 KVMによる仮想環境の構築
KVMとは
KVMを利用する
ネットワークの作成
仮想マシンによるルータの構築
A-3 VirtualBoxによる仮想環境の構築
VirtualBoxとは
VirtualBoxによる仮想マシンの作成
仮想マシンによるルータの構築
Column Dockerを使ってみよう

本書の表記について

□コマンドの構文
本書では、以下の形式でコマンドの構文を掲載しております。

ディレクトリの作成
mkdir[オプション]ディレクトリ名…

構文内で[]で囲まれた要素は任意入力を意味します。「…」は複数指定ができることを意味します。「ユーザ名|ユーザID」のように「|」を挟んで引数が記述されている箇所は、「ユーザ名またはユーザID」のように、いずれかを指定できることを意味します。{コマンド}は、実行対象のコマンドのサブコマンドを指定することを意味します。
コマンドに指定するオプション、オブジェクト、サブコマンドなどは、主なものを抽出して掲載しております。使用頻度の低いものに関しては、掲載を省略させていただいております。

□CentOSとUbuntuの使用バージョンについて
本書の実行例は、執筆時点(2019年3月)の以下環境にて動作確認を行っています。

□CentOSとUbuntuでの操作手順
本書では、CentOSとUbuntuの操作手を以下に則って併記しています。

・CentosとUbuntuで操作手順が同様の場合は、CentOSの実行結果を掲載しています。しかし、Ubuntuでも実行可能です。
・CentosとUbuntuで操作手順が異なる場合は、都度、いずれの実行結果であるかを示して掲載しています。
・Centosでrootで作業している(プロンプトが#)場合は、Ubuntuでもrootで作業をしてください。なお、rootへの切り替えは以下に記載した「rootへの切り替え」を参照してください。
・root権限を必要としない処理は、可能なかぎり一般ユーザ(ブロンプトが$)で実行するようにしています。

□rootへの切り替え
rootへの切り替えは、以下のように行ってください。

・CentOSでの一般ユーザからrootの切り替えは、「su -」を実行してください。その際、rootのパスワードが必要です。rootでの作業が終了したら「exit」を実行してください。
・Ubuntuでの一般ユーザからrootの切り替えは、「sudo su -」を実行してください。その際、現在のシェルユーザのパスワードが必要です。rootでの作業が終了したら「exit」を実行してください。
・Ubuntuで、rootへ切り替えることなく、root権限でコマンドを実行する場合は、「sudo実行したいコマンド」を実行してください。その際、現在のシェルユーザのパスワードが必要です。
・sudo の詳細は、第3章のコラム(156ページ)を参照してください。

□シェルプロンプト
以下は、本書で使用している実行例です。

❶の行は、コマンドの入力を行っています。「%」はシェルプロンプト、「tail」は実行するコマンド、「-1」はオプション、「/etc/passwd」は引数です。❷の行は、コマンドの実行結果です。
プロンプトに「#」が表示されている例は、rootユーザでの操作を表します。プロンプトに「S」が表示されている例は、一般ユーザでの操作を表します。また、状況に応じて、以下の表記を使用しています。
実行例①は、一般ユーザであるyukoが、sudo コマンドを使用して、/etc/shadowファイルをheadコマンドで表示します。
実行例①

実行例②は、一般ユーザであるsamが、sudoコマンドを使用して、/etc/shadowファイルをheadコマンドで表示します。
実行例②

本書内では、実行するユーザによって処理に影響がある場合は、ユーザ名を記載しています。また、作業場所(ディレクトリパス)が重要な場合は、ディレクトリバスも記載しています。適宜、本書内の解説および実行例を確認してください。

□コマンドラインと実行結果
実行時のコマンドラインが長い場合は、端末内で自動折り返しとなり、そのまま掲載しています(実行例①)。なお、2次ブロンプトを使用する場合もあります(実行例②)。
また、実行結果は、場合によって一部(あるいは全部)を省略あるいは整形して掲載しています。

実行例①

実行例②

□参考
本文内で以下の書式で記載されている箇所は、参考知識や補足事項を意味します。

ローリングリリースではディストリビューションとしてのバージョン番号はなく、個々のパッケージごとにバージョンを管理し、パッケージは随時更新が行われます。ディストリビューションによっては、インストール用ISOイメージが定期的に更新され、サイトからダウンロードできるようになっています。

□環境依存の情報
本書内で使用している「サーバ名」「IPアドレス」は、ご自身の環境に合わせて置き換えてください。
また、バージョン番号が含まれたファイル名やパッケージ名等は、バージョンアップにより変更される可能性があります。ご自身の環境に合わせて置き換えてください。

大竹 龍史 (著), 山本 道子 (著)
出版社: SBクリエイティブ (2019/5/29)、出典:出版社HP