Linux管理者-クイックガイド

CentOSは、ビジネスクラスのLinuxディストリビューションの中でもユニークであり、Linuxが設立されたオープンソースの性質に忠実です。最初のLinuxカーネルは、ヘルシンキ大学(Linus Torvalds)の大学生によって開発され、RichardStallmanによって設立および宣伝されたGNUユーティリティと組み合わされました。CentOSには、今日のビジネスの世界を動かすことができる、実績のあるオープンソースライセンスがあります。

CentOSは、すぐに世界で最も多作なサーバープラットフォームの1つになりました。Linux管理者は、就職を希望するときに、「CentOS LinuxExperiencePreferred」という言葉に出くわすはずです。CentOSは、スタートアップ企業からFortune 10の技術者まで、世界中のサーバーオペレーティングシステムの上位層の1つに数えられています。

CentOSを他のLinuxディストリビューションから際立たせているのは、次の素晴らしい組み合わせです。

  • オープンソースライセンス

  • Linuxプロフェッショナルの専用ユーザーベース

  • 優れたハードウェアサポート

  • 堅実な安定性と信頼性

  • セキュリティとアップデートに焦点を当てる

  • 企業環境で必要とされるソフトウェアパッケージング標準への厳格な準拠

レッスンを開始する前に、読者がLinuxおよび管理の基礎に関する基本的な知識を持っていることを前提としています。

  • rootユーザーとは何ですか?

  • rootユーザーの力

  • セキュリティグループとユーザーの基本概念

  • Linuxターミナルエミュレータの使用経験

  • 基本的なネットワーキングの概念

  • インタープリター型プログラミング言語(Perl、Python、Ruby)の基本的な理解

  • HTTP、LDAP、FTP、IMAP、SMTPなどのネットワークプロトコル

  • コンピューターのオペレーティングシステムを構成するコア:ファイルシステム、ドライバー、およびカーネル

CentOS Linux管理者のツールを学ぶ前に、Linux管理コマンドラインの背後にある哲学に注意することが重要です。

Linuxは、「より大きなタスクを単純化するためにチェーン化された小さくて正確なツール」というUnix哲学に基づいて設計されました。Linuxは、その根底にある特定の用途向けの大規模な単一目的アプリケーションを多くの場合持っていません。代わりに、組み合わせたときに効率的に大きなタスクを実行するための大きな力を提供する何百もの基本的なユーティリティがあります。

Linux哲学の例

たとえば、管理者がシステム上の現在のすべてのユーザーのリストを必要とする場合、次の連鎖コマンドを使用して、すべてのシステムユーザーのリストを取得できます。コマンドを実行すると、システムにいるユーザーがアルファベット順に一覧表示されます。

[root@centosLocal centos]# cut /etc/passwd -d":" -f1 | sort 
abrt 
adm 
avahi 
bin 
centos 
chrony 
colord 
daemon 
dbus

次のコマンドを使用して、このリストをテキストファイルにエクスポートするのは簡単です。

[root@localhost /]# cut /etc/passwd -d ":" -f1 > system_users.txt        
[root@localhost /]# cat ./system_users.txt | sort | wc –l 
40       
[root@localhost /]#

後日、ユーザーリストをエクスポートと比較することもできます。

[root@centosLocal centos]#  cut /etc/passwd -d ":" -f1 > system_users002.txt && 
   cat system_users002.txt | sort | wc -l 
41 
[root@centosLocal centos]# diff ./system_users.txt ./system_users002.txt  
evilBackdoor [root@centosLocal centos]#

より大きなタスクを実行するためにチェーンされた小さなツールのこのアプローチでは、定期的な時間間隔で結果を自動的に電子メールで送信するよりも、これらのコマンドを実行するスクリプトを作成する方が簡単です。

すべてのLinux管理者が習熟している必要のある基本コマンドは次のとおりです。

  • vim
  • grep
  • ますます少なくなる
  • tail
  • head
  • wc
  • sort
  • uniq
  • tee
  • cat
  • cut
  • sed
  • tr
  • paste

Linuxの世界では、管理者は filteringログを解析し、コマンド出力をフィルタリングし、インタラクティブなシェルスクリプトを使用してアクションを実行するコマンドを毎日実行します。前述のように、これらのコマンドの力は、と呼ばれるプロセスを通じて相互に変更する能力にあります。piping

次のコマンドは、CentOSメインユーザー辞書の文字aで始まる単語の数を示しています。

[root@centosLocal ~]# egrep '^a.*$' /usr/share/dict/words | wc -l 
25192 
[root@centosLocal ~]#

CentOS Linuxのディレクトリとファイルの両方に適用される権限を導入するために、次のコマンド出力を見てみましょう。

[centos@centosLocal etc]$ ls -ld /etc/yum* 
drwxr-xr-x. 6 root root 100 Dec  5 06:59 /etc/yum 
-rw-r--r--. 1 root root 970 Nov 15 08:30 /etc/yum.conf 
drwxr-xr-x. 2 root root 187 Nov 15 08:30 /etc/yum.repos.d

Note −表示される3つの主要なオブジェクトタイプは次のとおりです。

  • "-" −プレーンファイルのダッシュ

  • "d" −ディレクトリの場合

  • "l" −シンボリックリンクの場合

各ディレクトリとファイルの出力の3つのブロックに焦点を当てます-

  • drwxr-xr-x:ルート:ルート
  • -rw-r--r--:ルート:ルート
  • drwxr-xr-x:ルート:ルート

これらの行をよりよく理解するために、これを分解してみましょう-

d オブジェクトタイプがディレクトリであることを意味します
rwx 所有者に適用されるディレクトリ権限を示します
処方箋 グループに適用されるディレクトリ権限を示します
処方箋 世界に適用されるディレクトリ権限を示します
ルート 最初のインスタンスは、ディレクトリの所有者を示します
ルート 2番目のインスタンスは、グループ権限が適用されるグループを示します

所有者グループ世界の違いを理解することが重要です。これを理解しないと、インターネットへのサービスをホストするサーバーに大きな影響を与える可能性があります。

実際の例を示す前に、まず、ディレクトリファイルに適用されるアクセス許可について理解しましょう。

次の表をご覧になり、手順を続行してください。

オクタル シンボリック パーマ。 ディレクトリ
1 バツ 実行する ディレクトリを入力してファイルにアクセスします
2 w 書く ディレクトリ内のファイルを削除または変更する
4 r 読んだ ディレクトリ内のファイルを一覧表示します

Note−ディレクトリ内の読み取りのためにファイルにアクセスできる必要がある場合、読み取りおよび実行権限を適用するのが一般的です。そうしないと、ユーザーはファイルを操作するのが困難になります。書き込みを無効のままにしおくと、ファイルの名前の変更、削除、コピー、またはアクセス許可の変更を行うことができなくなります。

ディレクトリとファイルへのアクセス許可の適用

権限を適用する場合、理解すべき2つの概念があります-

  • シンボリックパーミッション
  • 8進数のパーミッション

本質的に、それぞれは同じですが、ファイルのアクセス許可を参照および割り当てる方法が異なります。クイックガイドについては、次の表を調べて参照してください。

読んだ 書く 実行する
Octal 4 2 1
Symbolic r w バツ

を使用して権限を割り当てる場合 octalメソッドでは、次のような3バイトの数値を使用します。760。数値760は次のように変換されます。所有者:rwx; グループ:rw; その他(または世界)の権限はありません。

別のシナリオ:733は次のように変換されます。所有者:rwx; グループ:wx; その他:wx。

Octalメソッドを使用する権限には1つの欠点があります。既存の権限セットは変更できません。オブジェクトの権限セット全体を再割り当てすることのみが可能です。

今、あなたは不思議に思うかもしれません、常に許可を再割り当てすることの何が問題になっていますか?実稼働Webサーバー上の/ var / www /などの大きなディレクトリ構造を想像してみてください。その他のすべてのディレクトリのwまたは書き込みビットを再帰的に削除します。したがって、セキュリティ対策に必要な場合にのみ、事前に追加するように強制します。アクセス許可セット全体を再割り当てすると、すべてのサブディレクトリに割り当てられている他のすべてのカスタムアクセス許可が削除されます。

したがって、システムの管理者とユーザーの両方に問題が発生します。ある時点で、1人(または複数の人)は、すべてのディレクトリとオブジェクトに権限セット全体を再割り当てすることによって、消去されたすべてのカスタム権限を再割り当てする必要があります。

この場合、シンボリックメソッドを使用してパーミッションを変更する必要があります-

chmod -R o-w /var/www/

上記のコマンドは「アクセス許可を上書き」しませんが、現在のアクセス許可セットを変更します。したがって、ベストプラクティスの使用に慣れてください

  • 権限を割り当てるための8進数のみ
  • 権限セットを変更するための記号

データとオペレーティングシステム全体の整合性にとってアクセス許可は重要であるため、CentOS管理者は8進数記号の両方のアクセス許可に習熟していることが重要です。アクセス許可が正しくない場合、最終的には機密データになり、オペレーティングシステム全体が危険にさらされます。

それをカバーしたので、権限とオブジェクトの所有者/メンバーを変更するためのいくつかのコマンドを見てみましょう-

  • chmod
  • chown
  • chgrp
  • umask

chmod:ファイルモードのアクセス許可ビットを変更します

コマンド アクション
-c 詳細に似ていますが、加えられた変更のみを報告します
-v 詳細、行われたすべての要求の診断を出力します
-R ファイルとディレクトリに操作を再帰的に適用します

chmodを使用すると、8進数または記号のアクセス許可セットを使用してディレクトリとファイルのアクセス許可を変更できます。これを使用して、割り当てを変更し、ディレクトリをアップロードします。

chown:ファイルの所有者とグループを変更する

コマンド アクション
-c 詳細に似ていますが、加えられた変更のみを報告します
-v 詳細、行われたすべての要求の診断を出力します
-R ファイルとディレクトリに操作を再帰的に適用します

chownは、ユーザーとオブジェクトのグループの両方の所有を変更できます。ただし、両方を同時に変更する必要がない限り、通常、グループにはchgrpを使用します。

chgrp:ファイルまたはディレクトリのグループ所有権を変更する

コマンド アクション
-c 詳細に似ていますが、変更のみを報告します
-v 詳細、行われたすべての要求の診断を出力します
-R 再帰的に、ファイルとディレクトリに操作を適用します

chgrpは、グループ所有者を指定された所有者に変更します。

実世界の練習

/ var / www / students /内のすべてのサブディレクトリの割り当てを変更して、所有するグループが学生グループになるようにします。次に、学生のルートを教授グループに割り当てます。その後、テリー・トーマス博士を学生名簿の所有者にします。彼は学校のすべてのコンピュータサイエンス学界を担当する任務を負っているからです。

ご覧のとおり、作成されると、ディレクトリはかなり生のままになります。

[root@centosLocal ~]# ls -ld /var/www/students/ 
drwxr-xr-x. 4 root root 40 Jan  9 22:03 /var/www/students/

[root@centosLocal ~]# ls -l /var/www/students/ 
total 0 
drwxr-xr-x. 2 root root 6 Jan  9 22:03 assignments 
drwxr-xr-x. 2 root root 6 Jan  9 22:03 uploads 

[root@centosLocal ~]#

管理者として、ルート資格情報を誰にも教えたくありません。しかし同時に、ユーザーが自分の仕事を行えるようにする必要があります。それでは、テリー・トーマス博士がファイル構造をより細かく制御し、学生ができることを制限できるようにしましょう。

[root@centosLocal ~]# chown -R drterryt:professors /var/www/students/ 
[root@centosLocal ~]# ls -ld /var/www/students/ 
drwxr-xr-x. 4 drterryt professors 40 Jan  9 22:03 /var/www/students/

[root@centosLocal ~]# ls -ls /var/www/students/ 
total 0 
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 assignments 
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 uploads

[root@centosLocal ~]#

現在、各ディレクトリとサブディレクトリにはdrterrytの所有者がて、所有するグループは教授です。以来の割り当ての学生がで割り当てられた作業をオンにするためのディレクトリがある、の離れリストおよび変更する機能いきましょうファイルからの学生のグループを。

[root@centosLocal ~]# chgrp students /var/www/students/assignments/ && chmod 
736 /var/www/students/assignments/

[root@centosLocal assignments]# ls -ld /var/www/students/assignments/ 
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14 /var/www/students/assignments/

[root@centosLocal assignments]#

学生は課題を課題ディレクトリにコピーできます。ただし、ディレクトリの内容を一覧表示したり、現在のファイルをコピーしたり、割り当てディレクトリ内のファイルを変更したりすることはできません。したがって、それは学生が完了した課題を提出することを可能にするだけです。CentOSファイルシステムは、割り当てが提出された日付スタンプを提供します。

割り当てディレクトリの所有者として-

[drterryt@centosLocal assignments]$ whoami drterryt [drterryt@centosLocal assignments]$ ls -ld /var/www/students/assignment 
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14 /var/www/students/assignments/

[drterryt@centosLocal assignments]$ ls -l /var/www/students/assignments/ total 4 -rw-r--r--. 1 adama students 0 Jan 9 23:14 myassign.txt -rw-r--r--. 1 tammyr students 16 Jan 9 23:18 terryt.txt [drterryt@centosLocal assignments]$

ディレクトリの所有者は、ファイルを一覧表示したり、ファイルを変更および削除したりできます。

umaskコマンド:作成時にファイルとディレクトリのアクセス許可のデフォルトモードを提供します

umaskは、作成時にファイルとディレクトリのアクセス許可のデフォルトモードを提供する重要なコマンドです。

umaskパーミッションは、単項の否定ロジックを使用します。

許可 操作
0 読み取り、書き込み、実行
1 読み書き
2 読み取りと実行
3 読み取り専用
4 読み取りと実行
5 書き込みのみ
6 実行のみ
7 権限なし
[adama@centosLocal umask_tests]$ ls -l ./ -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt [adama@centosLocal umask_tests]$ whoami 
adama

[adama@centosLocal umask_tests]$ umask 0022 [adama@centosLocal umask_tests]$

それでは、現在のユーザーのumaskを変更して、新しいファイルとディレクトリを作成しましょう。

[adama@centosLocal umask_tests]$ umask 077 [adama@centosLocal umask_tests]$ touch mynewfile.txt

[adama@centosLocal umask_tests]$ mkdir myNewDir [adama@centosLocal umask_tests]$ ls -l 
total 0 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt 
drwx------. 2 adama students 6 Jan 10 00:35 myNewDir 
-rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt

ご覧のとおり、新しく作成されたファイルは以前よりも少し制限が厳しくなりました。

ユーザーのumaskは、次のいずれかで変更する必要があります-

  • /etc/profile
  • ~/bashrc
[root@centosLocal centos]# su adama 
[adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$

通常、CentOSのデフォルトのumaskは問題ありません。デフォルトの0022で問題が発生した場合は、通常、さまざまなグループに属するさまざまな部門がプロジェクトで共同作業を行う必要がある場合です。

ここで、CentOSオペレーティングシステムの運用と設計のバランスを取るために、システム管理者の役割が必要になります。

ユーザー管理について議論するとき、理解すべき3つの重要な用語があります-

  • Users
  • Groups
  • Permissions

ファイルとフォルダーに適用される詳細なアクセス許可については、すでに説明しました。この章では、ユーザーとグループについて説明します。

CentOSユーザー

CentOSには、2つのタイプのアカウントがあります-

  • System accounts −デーモンまたはその他のソフトウェアに使用されます。

  • Interactive accounts −通常、システムリソースにアクセスするためにユーザーに割り当てられます。

2つのユーザータイプの主な違いは次のとおりです。

  • System accountsデーモンがファイルやディレクトリにアクセスするために使用します。これらは通常、シェルまたは物理コンソールログインを介したインタラクティブログインから許可されません。

  • Interactive accounts エンドユーザーは、シェルまたは物理コンソールログインからコンピューティングリソースにアクセスするために使用されます。

このユーザーの基本的な理解を踏まえて、経理部でBobJonesの新しいユーザーを作成しましょう。新しいユーザーが追加されますadduser コマンド。

以下はいくつかです adduser 共通スイッチ-

スイッチ アクション
-c ユーザーアカウントにコメントを追加します
-m 存在しない場合は、デフォルトの場所にユーザーのホームディレクトリを作成します
-g ユーザーを割り当てるデフォルトのグループ
-n ユーザーのプライベートグループ、通常はユーザー名を持つグループを作成しません
-M ホームディレクトリを作成しません
-s / bin / bash以外のデフォルトシェル
-u UIDを指定します(それ以外の場合はシステムによって割り当てられます)
-G ユーザーを割り当てる追加のグループ

新しいユーザーを作成するときは、次のように-c、-m、-g、-nスイッチを使用します。

[root@localhost Downloads]# useradd -c "Bob Jones  Accounting Dept Manager" 
-m -g accounting -n bjones

次に、新しいユーザーが作成されたかどうかを確認しましょう-

[root@localhost Downloads]# id bjones 
(bjones) gid = 1001(accounting) groups = 1001(accounting)

[root@localhost Downloads]# grep bjones /etc/passwd 
bjones:x:1001:1001:Bob Jones  Accounting Dept Manager:/home/bjones:/bin/bash

[root@localhost Downloads]#

次に、passwdコマンドを使用して新しいアカウントを有効にする必要があります-

[root@localhost Downloads]# passwd bjones 
Changing password for user bjones. 
New password:  
Retype new password:  
passwd: all authentication tokens updated successfully.

[root@localhost Downloads]#

ユーザーアカウントが有効になっていないため、ユーザーはシステムにログインできません。

ユーザーアカウントの無効化

システムのアカウントを無効にする方法はいくつかあります。これらは、/ etc / passwdファイルを手動で編集することから始まります。または、passwdコマンドを-lスイッチ。これらの方法には両方とも1つの大きな欠点があります。ユーザーがsshアクセスを持ち、認証にRSAキーを使用している場合でも、この方法を使用してログインできます。

次に、chageコマンドを使用して、パスワードの有効期限を前の日付に変更しましょう。また、アカウントを無効にした理由をメモしておくとよいでしょう。

[root@localhost Downloads]# chage -E 2005-10-01 bjones
 
[root@localhost Downloads]# usermod  -c "Disabled Account while Bob out of the country 
for five months" bjones

[root@localhost Downloads]# grep bjones /etc/passwd 
bjones:x:1001:1001:Disabled Account while Bob out of the country for four 
months:/home/bjones:/bin/bash

[root@localhost Downloads]#

グループの管理

Linuxでグループを管理すると、管理者は、すべてのグループメンバーに適用可能な権限セットを適用して、コンテナー内のユーザーを組み合わせることができます。たとえば、経理部門のすべてのユーザーが同じファイルにアクセスする必要がある場合があります。したがって、アカウンティングユーザーを追加して、アカウンティンググループを作成します。

ほとんどの場合、特別なアクセス許可が必要なものはすべてグループで実行する必要があります。このアプローチは通常、1人のユーザーだけに特別なアクセス許可を適用するよりも時間を節約します。たとえば、Sallyはレポートを担当し、Sallyだけがレポートのために特定のファイルにアクセスする必要があります。しかし、ある日サリーが病気でボブが報告した場合はどうなるでしょうか。または、レポートの必要性が高まっていますか?グループが作成されると、管理者は1回だけ実行する必要があります。ユーザーの追加は、ニーズの変更または拡張に応じて適用されます。

以下は、グループの管理に使用されるいくつかの一般的なコマンドです-

  • chgrp
  • groupadd
  • groups
  • usermod

chgrp −ファイルまたはディレクトリのグループ所有権を変更します。

経理グループのメンバーがファイルを保存し、ファイルのディレクトリを作成するためのディレクトリを作成しましょう。

[root@localhost Downloads]# mkdir /home/accounting

[root@localhost Downloads]# ls -ld /home/accounting
drwxr-xr-x. 2 root root 6 Jan 13 10:18 /home/accounting

[root@localhost Downloads]#

次に、会計グループにグループの所有権を与えましょう。

[root@localhost Downloads]# chgrp -v  accounting /home/accounting/ 
changed group of ‘/home/accounting/’ from root to accounting

[root@localhost Downloads]# ls -ld /home/accounting/ 
drwxr-xr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/

[root@localhost Downloads]#

これで、アカウンティンググループの全員が/ home / accountingへの読み取りおよび実行権限を取得しました。書き込み権限も必要になります。

[root@localhost Downloads]# chmod g+w /home/accounting/

[root@localhost Downloads]# ls -ld /home/accounting/ 
drwxrwxr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/

[root@localhost Downloads]#

以来会計グループは、機密文書を扱うことが、我々はのためにいくつかの制限された権限を適用する必要があり、他のまたは世界

[root@localhost Downloads]# chmod o-rx /home/accounting/

[root@localhost Downloads]# ls -ld /home/accounting/ 
drwxrwx---. 2 root accounting 6 Jan 13 10:18 /home/accounting/

[root@localhost Downloads]#

groupadd −新しいグループを作成するために使用されます。

スイッチ アクション
-g グループのGIDを指定します
-K /etc/login.defsのGIDの仕様を上書きします
-o 一意でないグループIDの不許可をオーバーライドできます
-p グループパスワード、ユーザーが自分自身をアクティブ化できるようにする

シークレットという新しいグループを作りましょう。グループにパスワードを追加して、ユーザーが既知のパスワードで自分自身を追加できるようにします。

[root@localhost]# groupadd secret

[root@localhost]# gpasswd secret 
Changing the password for group secret 
New Password:  
Re-enter new password:

[root@localhost]# exit 
exit

[centos@localhost ~]$ newgrp secret Password: [centos@localhost ~]$ groups 
secret wheel rdc

[centos@localhost ~]$

実際には、グループのパスワードはあまり使用されません。セカンダリグループは適切であり、他のユーザー間でパスワードを共有することは、優れたセキュリティ慣行ではありません。

ザ・ groupsコマンドは、ユーザーがどのグループに属しているかを示すために使用されます。現在のユーザーにいくつかの変更を加えた後、これを使用します。

usermod アカウント属性を更新するために使用されます。

以下は、一般的なusermodスイッチです。

スイッチ アクション
-a -Gオプションを使用した場合のみ、ユーザーを補足グループに追加します
-c コメント、ユーザーのコメント値を更新します
-d ホームディレクトリ、ユーザーのホームディレクトリを更新します
-G セカンダリユーザーグループをグループ化、追加、または削除します
-g グループ、ユーザーのデフォルトのプライマリグループ
[root@localhost]# groups centos 
centos : accounting secret

[root@localhost]#

[root@localhost]# usermod -a -G wheel centos

[root@localhost]# groups centos
centos : accounting wheel secret

[root@localhost]#

CentOSディスククォータは両方とも有効にできます。システム管理者に警告し、ディスク容量を超える前にユーザーへのそれ以上のディスクストレージアクセスを拒否します。ディスクがいっぱいになると、ディスクの内容によっては、システム全体が回復するまで急停止する可能性があります。

CentOS Linuxでクォータ管理を有効にすることは、基本的に4ステップのプロセスです-

  • Step 1 − / etc / fstabでグループとユーザーのクォータ管理を有効にします。

  • Step 2 −ファイルシステムを再マウントします。

  • Step 3 −クォータデータベースを作成し、ディスク使用量テーブルを生成します。

  • Step 4 −クォータポリシーを割り当てます。

/ etc / fstabでクォータ管理を有効にする

まず、/ etc / fstabファイルをバックアップします-

[root@centosLocal centos]# cp -r /etc/fstab ./

これで、現在の作業ディレクトリに既知の作業/ etc / fstabのコピーがあります。

# 
# /etc/fstab 
# Created by anaconda on Sat Dec 17 02:44:51 2016 
# 
# Accessible filesystems, by reference, are maintained under '/dev/disk' 
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# 
/dev/mapper/cl-root        /         xfs     defaults                      0 0
UUID = 4b9a40bc-9480-4     /boot     xfs     defaults                      0 0

/dev/mapper/cl-home        /home     xfs     defaults,usrquota,grpquota    0 0

/dev/mapper/cl-swap        swap      swap    defaults                      0 0

ボリュームまたはラベルの/ etc / fstabのオプションセクションで、ユーザーとグループにクォータが適用される場所に次の変更を加えました。

  • usrquota
  • grpquota

ご覧のとおり、 xfsファイルシステム。xfsを使用する場合、追加の手動手順が必要になります。/home/と同じディスク上にあります。さらに調査すると、カーネルレベルのマウントオプションであるnoquotaに/が設定されていることがわかります。カーネルブートオプションを再構成する必要があります。

root@localhost rdc]# mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@localhost rdc]#

XFSファイルシステムのカーネルブートオプションの再構成

このステップは、2つの条件下でのみ必要です-

  • クォータを有効にしているディスク/パーティションがxfsファイルシステムを使用している場合
  • カーネルが起動時に/ etc / fstabにnoquotaパラメーターを渡している場合

Step 1 − / etc / default / grubのバックアップを作成します。

cp /etc/default/grub ~/

Step 2/ etc / default / grubを変更します

これがデフォルトのファイルです。

GRUB_TIMEOUT=5 
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" 
GRUB_DEFAULT=saved 
GRUB_DISABLE_SUBMENU=true 
GRUB_TERMINAL_OUTPUT="console" 
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" 
GRUB_DISABLE_RECOVERY="true"

次の行を変更したい-

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv 
=cl/swap rhgb quiet rootflags=usrquota,grpquota"

Note−これらの変更を逐語的にコピーすることが重要です。grub.cfgを再構成した後、構成でエラーが発生した場合、システムは起動に失敗します。非実稼働システムでチュートリアルのこの部分を試してください。

Step 3 −作業中のgrub.cfgをバックアップします

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

新しいgrub.cfgを作成します

[root@localhost rdc]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ... 
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64 
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img 
Found linux image: /boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd 
Found initrd image: /boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img 
done

[root@localhost rdc]#

リブート

[root@localhost rdc]#reboot

すべての変更が正確である場合、xfsファイルシステムにクォータを追加するための可用性がないはずです。

[rdc@localhost ~]$ mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
 
[rdc@localhost ~]$

私たちは、合格したUSRQUOTAGRPQUOTA GRUBを経由してパラメータを。

ここで、/ etc / fstabを再度編集して、同じ物理ディスク上の/ home以降に/を含めます。

/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota        0 0

それでは、クォータデータベースを有効にしましょう。

[root@localhost rdc]# quotacheck -acfvugM

クォータが有効になっていることを確認してください。

[root@localhost rdc]# quotaon -ap 
group quota on / (/dev/mapper/cl-root) is on 
user quota on / (/dev/mapper/cl-root) is on 
group quota on /home (/dev/mapper/cl-home) is on 
user quota on /home (/dev/mapper/cl-home) is on 
[root@localhost rdc]#

ファイルシステムを再マウントします

パーティションまたはディスクがアクティブに起動されたパーティションから分離されている場合は、再起動せずに再マウントできます。ルートディレクトリ/で起動されたディスク/パーティションでクォータが構成されている場合は、オペレーティングシステムを再起動する必要がある場合があります。再マウントを強制して変更を適用すると、ファイルシステムを再マウントする必要性が異なる場合があります。

[rdc@localhost ~]$ df 
Filesystem              1K-blocks     Used      Available      Use%     Mounted on
/dev/mapper/cl-root     22447404      4081860   18365544       19%         /
devtmpfs                903448        0         903448         0%          /dev
tmpfs                   919308        100       919208         1%          /dev/shm
tmpfs                   919308        9180      910128         1%          /run
tmpfs                   919308        0         919308         0%          /sys/fs/cgroup
/dev/sda2               1268736       176612    1092124        14%         /boot
/dev/mapper/cl-var      4872192       158024    4714168        4%          /var
/dev/mapper/cl-home     18475008      37284     18437724       1%          /home
tmpfs                   183864        8         183856         1%          /run/user/1000

[rdc@localhost ~]$

ご覧のとおり、LVMボリュームが使用されています。したがって、再起動するのは簡単です。これにより、/ homeが再マウントされ、/ etc / fstab構成の変更がアクティブな構成にロードされます。

クォータデータベースファイルの作成

CentOSは、/ homeのディスククォータを処理できるようになりました。フルクォータサポートを有効にするには、quotacheck コマンド。

クォータチェックは2つのファイルを作成します-

  • aquota.user
  • aquota.group

これらは、クォータが有効なディスク/パーティションのクォータ情報を格納するために使用されます。

以下は、一般的なクォータチェックスイッチです。

スイッチ アクション
-u Checks for user quotas
-g Checks for group quotas
-c Quotas should be enabled for each file system with enables quotas
-v Displays verbose output

Add Quota Limits Per User

For this, we will use the edquota command, followed by the username −

[root@localhost rdc]# edquota centos

Disk quotas for user centos (uid 1000):  
Filesystem                   blocks       soft       hard     inodes     soft     hard 
/dev/mapper/cl-root              12          0          0         13        0        0  
/dev/mapper/cl-home            4084          0          0        140        0        0

Let's look at each column.

  • Filesystem − It is the filesystem quotas for the user applied to

  • blocks − How many blocks the user is currently using on each filesystem

  • soft − Set blocks for a soft limit. Soft limit allows the user to carry quota for a given time period

  • hard − Set blocks for a hard limit. Hard limit is total allowable quota

  • inodes − How many inodes the user is currently using

  • soft − Soft inode limit

  • hard − Hard inode limit

To check our current quota as a user −

[centos@localhost ~]$ quota 
Disk quotas for user centos (uid 1000):  
Filesystem             blocks     quota      limit grace    files   quota   limit   grace 
/dev/mapper/cl-home    6052604    56123456   61234568       475     0       0       [centos@localhost ~]$

Following is an error given to a user when the hard quota limit has exceeded.

[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/

cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE-
1611.iso.part’: Disk quota exceeded

[centos@localhost Downloads]$

As we can see, we are closely within this user's disk quota. Let's set a soft limit warning. This way, the user will have advance notice before quota limits expire. From experience, you will get end-user complaints when they come into work and need to spend 45 minutes clearing files to actually get to work.

As an Administrator, we can check quota usage with the repquota command.

[root@localhost Downloads]# repquota  /home  
                    Block limits                            File limits  
User            used     soft     hard     grace       used     soft     hard     grace 
----------------------------------------------------------------------------------------
root      --       0         0        0                   3        0        0        
centos    -+ 6189824  56123456 61234568                 541      520      540      6days 

[root@localhost Downloads]#

As we can see, the user centos has exceeded their hard block quota and can no longer use any more disk space on /home.

-+denotes a hard quota has been exceeded on the filesystem.

When planning quotas, it is necessary to do a little math. What an Administrator needs to know is:How many users are on the system? How much free space to allocate amongst users/groups? How many bytes make up a block on the file system?

Define quotas in terms of blocks as related to free disk-space.It is recommended to leave a "safe" buffer of free-space on the file system that will remain in worst case scenario: all quotas are simultaneously exceeded. This is especially on a partition that is used by the system for writing logs.

systemd is the new way of running services on Linux. systemd has a superceded sysvinit. systemd brings faster boot-times to Linux and is now, a standard way to manage Linux services. While stable, systemd is still evolving.

systemd as an init system, is used to manage both services and daemons that need status changes after the Linux kernel has been booted. By status change starting, stopping, reloading, and adjusting service state is applied.

First, let's check the version of systemd currently running on our server.

[centos@localhost ~]$ systemctl --version 
systemd 219 
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[centos@localhost ~]$

As of CentOS version 7, fully updated at the time of this writing systemd version 219 is the current stable version.

We can also analyze the last server boot time with systemd-analyze

[centos@localhost ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[centos@localhost ~]$

When the system boot times are slower, we can use the systemd-analyze blame command.

[centos@localhost ~]$ systemd-analyze blame 
   40.882s kdump.service 
   5.775s NetworkManager-wait-online.service 
   4.701s plymouth-quit-wait.service 
   3.586s postfix.service 
   3.121s systemd-udev-settle.service 
   2.649s tuned.service 
   1.848s libvirtd.service 
   1.437s network.service 
   875ms packagekit.service 
   855ms gdm.service 
   514ms firewalld.service 
   438ms rsyslog.service
   436ms udisks2.service 
   398ms sshd.service 
   360ms boot.mount 
   336ms polkit.service 
   321ms accounts-daemon.service

When working with systemd, it is important to understand the concept of units. Units are the resources systemd knows how to interpret. Units are categorized into 12 types as follows −

  • .service
  • .socket
  • .device
  • .mount
  • .automount
  • .swap
  • .target
  • .path
  • .timer
  • .snapshot
  • .slice
  • .scope

For the most part, we will be working with .service as unit targets. It is recommended to do further research on the other types. As only .service units will apply to starting and stopping systemd services.

Each unit is defined in a file located in either −

  • /lib/systemd/system − base unit files

  • /etc/systemd/system − modified unit files started at run-time

Manage Services with systemctl

To work with systemd, we will need to get very familiar with the systemctl command. Following are the most common command line switches for systemctl.

Switch Action
-t Comma separated value of unit types such as service or socket
-a Shows all loaded units
--state Shows all units in a defined state, either: load, sub, active, inactive, etc..
-H Executes operation remotely. Specify Host name or host and user separated by @.

Basic systemctl Usage

systemctl [operation]
example: systemctl --state [servicename.service]

For a quick look at all the services running on our box.

[root@localhost rdc]# systemctl -t service 
UNIT                       LOAD     ACTIVE      SUB     DESCRIPTION

abrt-ccpp.service          loaded   active   exited     Install ABRT coredump   hook 
abrt-oops.service          loaded   active   running    ABRT kernel log watcher 
abrt-xorg.service          loaded   active   running    ABRT Xorg log watcher 
abrtd.service              loaded   active   running    ABRT Automated Bug  Reporting Tool 
accounts-daemon.service    loaded   active   running    Accounts Service 
alsa-state.service         loaded   active   running    Manage Sound Card State (restore and store) 
atd.service                loaded   active   running    Job spooling tools 
auditd.service             loaded   active   running    Security Auditing Service 
avahi-daemon.service       loaded   active   running    Avahi mDNS/DNS-SD Stack 
blk-availability.service   loaded   active   exited     Availability of block devices 
bluetooth.service          loaded   active   running    Bluetooth service 
chronyd.service            loaded   active   running    NTP client/server

Stopping a Service

Let's first, stop the bluetooth service.

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

As we can see, the bluetooth service is now inactive.

To start the bluetooth service again.

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

Note − We didn't specify bluetooth.service, since the .service is implied. It is a good practice to think of the unit type appending the service we are dealing with. So, from here on, we will use the .service extension to clarify we are working on service unit operations.

The primary actions that can be performed on a service are −

Start Starts the service
Stop Stops a service
Reload Reloads the active configuration of a service w/o stopping it (like kill -HUP in system v init)
Restart Starts, then stops a service
Enable Starts a service at boot time
Disable Stops a service from automatically starting at run time

The above actions are primarily used in the following scenarios −

Start To bring a service up that has been put in the stopped state.
Stop To temporarily shut down a service (for example when a service must be stopped to access files locked by the service, as when upgrading the service)
Reload When a configuration file has been edited and we want to apply the new changes while not stopping the service.
Restart In the same scenario as reload, but the service does not support reload.
Enable When we want a disabled service to run at boot time.
Disable Used primarily when there is a need to stop a service, but it starts on boot.

To check the status of a service −

[root@localhost]# systemctl status network.service 
network.service - LSB: Bring up/down networking 
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) 
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago 
Docs: man:systemd-sysv-generator(8)

Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)

localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... 
localhost.localdomain network[923]: Bringing up loopback interface:  [  OK  ] 
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.

[root@localhost]#

Show us the current status of the networking service. If we want to see all the services related to networking, we can use −

[root@localhost]# systemctl --all -t service | grep -i network 
network.service                       loaded    active    exited    LSB: Bring up/ 
NetworkManager-wait-online.service    loaded    active    exited    Network Manager  
NetworkManager.service                loaded    active    running   Network Manager 
ntpd.service                          loaded    inactive  dead      Network Time  
rhel-import-state.service             loaded    active    exited    Import network      

[root@localhost]#

For those familiar with the sysinit method of managing services, it is important to make the transition to systemd. systemd is the new way starting and stopping daemon services in Linux.

systemctl is the utility used to control systemd. systemctl provides CentOS administrators with the ability to perform a multitude of operations on systemd including −

  • Configure systemd units
  • Get status of systemd untis
  • Start and stop services
  • Enable / disable systemd services for runtime, etc.

The command syntax for systemctl is pretty basic, but can tangle with switches and options. We will present the most essential functions of systemctl needed for administering CentOS Linux.

Basic systemctl syntax: 
systemctl [OPTIONS] COMMAND [NAME]

Following are the common commands used with systemctl

  • start
  • stop
  • restart
  • reload
  • status
  • is-active
  • list-units
  • enable
  • disable
  • cat
  • show

We have already discussed start, stop, reload, restart, enable and disable with systemctl. So let's go over the remaining commonly used commands.

status

In its most simple form, the status command can be used to see the system status as a whole −

[root@localhost rdc]# systemctl status 
 ● localhost.localdomain 
  State: running 
  Jobs: 0 queued
  Failed: 0 units 
  Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago 
CGroup: / 
       ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 
       ├─user.slice 
       │ └─user-1002.slice 
       │   └─session-1.scope 
       │     ├─2869 gdm-session-worker [pam/gdm-password] 
       │     ├─2881 /usr/bin/gnome-keyring-daemon --daemonize --login 
       │     ├─2888 gnome-session --session gnome-classic 
       │     ├─2895 dbus-launch --sh-syntax --exit-with-session

The above output has been condensed. In the real-world systemctl status will output about 100 lines of treed process statuses.

Let's say we want to check the status of our firewall service −

[root@localhost rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago 
 Docs: man:firewalld(1) 
Main PID: 825 (firewalld) 
CGroup: /system.slice/firewalld.service 
       └─825 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

As you see, our firewall service is currently active and has been for over 4 hours.

list-units

The list-units command allows us to list all the units of a certain type. Let's check for sockets managed by systemd

[root@localhost]# systemctl list-units --type=socket 
UNIT                         LOAD     ACTIVE     SUB     DESCRIPTION     
avahi-daemon.socket          loaded   active  running    Avahi mDNS/DNS-SD Stack Activation Socket 
cups.socket                  loaded   active  running    CUPS Printing Service Sockets 
dbus.socket                  loaded   active  running    D-Bus System Message Bus Socket 
dm-event.socket              loaded   active  listening  Device-mapper event daemon FIFOs 
iscsid.socket                loaded   active  listening  Open-iSCSI iscsid Socket
iscsiuio.socket              loaded   active  listening  Open-iSCSI iscsiuio Socket 
lvm2-lvmetad.socket          loaded   active  running    LVM2 metadata daemon socket 
lvm2-lvmpolld.socket         loaded   active  listening  LVM2 poll daemon socket 
rpcbind.socket               loaded   active  listening  RPCbind Server Activation Socket 
systemd-initctl.socket       loaded   active  listening  /dev/initctl Compatibility Named Pipe 
systemd-journald.socket      loaded   active  running    Journal Socket 
systemd-shutdownd.socket     loaded   active  listening  Delayed Shutdown Socket 
systemd-udevd-control.socket loaded   active  running    udev Control Socket 
systemd-udevd-kernel.socket  loaded   active  running    udev Kernel Socket 
virtlockd.socket             loaded   active  listening  Virtual machine lock manager socket 
virtlogd.socket              loaded   active  listening  Virtual machine log manager socket

それでは、現在実行中のサービスを確認しましょう-

[root@localhost rdc]# systemctl list-units --type=service 
UNIT                      LOAD     ACTIVE     SUB     DESCRIPTION 
abrt-ccpp.service         loaded   active   exited    Install ABRT coredump hook 
abrt-oops.service         loaded   active   running   ABRT kernel log watcher 
abrt-xorg.service         loaded   active   running   ABRT Xorg log watcher 
abrtd.service             loaded   active   running   ABRT Automated Bug Reporting Tool 
accounts-daemon.service   loaded   active   running   Accounts Service 
alsa-state.service        loaded   active   running   Manage Sound Card State (restore and store) 
atd.service               loaded   active   running   Job spooling tools 
auditd.service            loaded   active   running   Security Auditing Service

アクティブです

IS-アクティブコマンドは、ユニットのステータス情報を返すように設計systemctlコマンドの一例です。

[root@localhost rdc]# systemctl is-active ksm.service 
active

ネコ

catはめったに使用されないコマンドの1つです。シェルでcatを使用してユニットファイルへのパスを入力する代わりに、systemctlcatを使用するだけです。

[root@localhost]# systemctl cat firewalld 
# /usr/lib/systemd/system/firewalld.service
[Unit] 
Description=firewalld - dynamic firewall daemon 
Before=network.target 
Before=libvirtd.service 
Before = NetworkManager.service 
After=dbus.service 
After=polkit.service 
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service 
Documentation=man:firewalld(1)

[Service] 
EnvironmentFile = -/etc/sysconfig/firewalld 
ExecStart = /usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS ExecReload = /bin/kill -HUP $MAINPID 
# supress to log debug and error output also to /var/log/messages 
StandardOutput = null 
StandardError = null

Type = dbus 
BusName = org.fedoraproject.FirewallD1

[Install] 
WantedBy = basic.target 
Alias = dbus-org.fedoraproject.FirewallD1.service

[root@localhost]#

今、私たちは両方の探求していることにsystemdsystemctlをより詳細に、の内のリソースを管理するためにそれらを使用してみましょうのcgroupまたは対照群

cgroupsまたはControlGroupsは、管理者がサービスおよびグループ化のためにシステムリソースを割り当てまたは制限できるようにするLinuxカーネルの機能です。

実行中のアクティブなコントロールグループを一覧表示するには、次のpsコマンドを使用できます-

[root@localhost]# ps xawf -eo pid,user,cgroup,args 
8362 root     -                            \_ [kworker/1:2] 
1 root        -                           /usr/lib/systemd/systemd --switched-
   root --system --    deserialize 21 
507 root     7:cpuacct,cpu:/system.slice  /usr/lib/systemd/systemd-journald 
527 root     7:cpuacct,cpu:/system.slice  /usr/sbin/lvmetad -f 
540 root     7:cpuacct,cpu:/system.slice  /usr/lib/systemd/systemd-udevd 
715 root     7:cpuacct,cpu:/system.slice  /sbin/auditd -n 
731 root     7:cpuacct,cpu:/system.slice   \_ /sbin/audispd 
734 root     7:cpuacct,cpu:/system.slice       \_ /usr/sbin/sedispatch 
737 polkitd  7:cpuacct,cpu:/system.slice  /usr/lib/polkit-1/polkitd --no-debug 
738 rtkit    6:memory:/system.slice/rtki  /usr/libexec/rtkit-daemon 
740 dbus     7:cpuacct,cpu:/system.slice  /bin/dbus-daemon --system --
   address=systemd: --nofork --nopidfile --systemd-activation

リソース管理は、CentOSの6.Xのように、と再定義されているにsystemdのinit実装。サービスのリソース管理を考えるとき、焦点を当てるべき主なものはcgroupsです。cgroups機能性とシンプルさの両方でsystemdで進歩しました。

リソース管理におけるcgroupの目標は、システム全体をダウンさせることができるサービスはありません。または、単一のサービスプロセス(おそらく不十分に記述されたPHPスクリプト)が、あまりにも多くのリソースを消費することによってサーバー機能を損なうことはありません。

cgroupsを使用すると、次のリソースのユニットのリソース制御が可能になります-

  • CPU −他のそれほど集中的でないタスクほど重要ではないCPU集中型タスクを制限する

  • Memory −サービスが消費できるメモリ量を制限する

  • Disks −ディスクI / Oを制限する

** CPU時間:**

より少ないCPU優先度を必要とするタスクは、カスタム構成されたCPUスライスを持つことができます。

たとえば、次の2つのサービスを見てみましょう。

丁寧なCPUサービス1

[root@localhost]# systemctl cat polite.service 
# /etc/systemd/system/polite.service 
[Unit] 
Description = Polite service limits CPU Slice and Memory 
After=remote-fs.target nss-lookup.target

[Service] 
MemoryLimit = 1M 
ExecStart = /usr/bin/sha1sum /dev/zero 
ExecStop = /bin/kill -WINCH ${MAINPID} 
WantedBy=multi-user.target

# /etc/systemd/system/polite.service.d/50-CPUShares.conf 
[Service] 
CPUShares = 1024 
[root@localhost]#

邪悪なCPUサービス2

[root@localhost]# systemctl cat evil.service 
# /etc/systemd/system/evil.service 
[Unit] 
Description = I Eat You CPU 
After=remote-fs.target nss-lookup.target

[Service] 
ExecStart = /usr/bin/md5sum /dev/zero 
ExecStop = /bin/kill -WINCH ${MAINPID} 
WantedBy=multi-user.target

# /etc/systemd/system/evil.service.d/50-CPUShares.conf 
[Service] 
CPUShares = 1024 
[root@localhost]#

より低いCPU優先度を使用して丁寧なサービスを設定しましょう-

systemctl set-property polite.service CPUShares = 20  
/system.slice/polite.service
1   70.5   124.0K        -        -  

/system.slice/evil.service
1   99.5   304.0K        -        -

ご覧のとおり、通常のシステムアイドル時間の間、両方の不正なプロセスは依然としてCPUサイクルを使用しています。ただし、タイムスライスを少なくするように設定されているのは、CPU時間を少なくすることです。これを念頭に置いて、より短い時間のタイムスライスを使用すると、重要なタスクがシステムリソースにアクセスしやすくなることがわかります。

リソースごとにサービスを設定するために、set-propertyメソッドは次のパラメーターを定義します-

systemctl set-property name parameter=value

CPUスライス CPUシェア
メモリ制限 MemoryLimit
ソフトメモリ制限 MemorySoftLimit
ブロックIOの重み BlockIOWeight
ブロックデバイス制限(/ volume / pathで指定)) BlockIODeviceWeight
IOを読む BlockIOReadBandwidth
ディスク書き込みIO BlockIOReadBandwidth

ほとんどの場合、サービスはCPUの使用メモリの制限、および読み取り/書き込みIOによって制限されます

それぞれを変更した後、systemdをリロードしてサービスを再起動する必要があります-

systemctl set-property foo.service CPUShares = 250 
systemctl daemon-reload 
systemctl restart foo.service

CentOSLinuxでCGroupsを構成する

CentOS Linuxでカスタムcgroupを作成するには、最初にサービスをインストールして構成する必要があります。

Step 1 − libcgroupをインストールします(まだインストールされていない場合)。

[root@localhost]# yum install libcgroup 
Package libcgroup-0.41-11.el7.x86_64 already installed and latest version 
Nothing to do 
[root@localhost]#

ご覧のとおり、デフォルトでは、CentOS7にはeverythingインストーラーとともにlibcgroupがインストールされています。最小限のインストーラーを使用するには、依存関係とともにlibcgroupユーティリティをインストールする必要があります。

Step 2 −cgconfigサービスを開始して有効にします。

[root@localhost]# systemctl enable cgconfig 
Created symlink from /etc/systemd/system/sysinit.target.wants/cgconfig.service to /usr/lib/systemd/system/cgconfig.service. 
[root@localhost]# systemctl start cgconfig 
[root@localhost]# systemctl status cgconfig 
● cgconfig.service - Control Group configuration service 
Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor preset: disabled) 
Active: active (exited) since Mon 2017-01-23 02:51:42 EST; 1min 21s ago 
Main PID: 4692 (code=exited, status = 0/SUCCESS) 
Memory: 0B 
CGroup: /system.slice/cgconfig.service  

Jan 23 02:51:42 localhost.localdomain systemd[1]: Starting Control Group configuration service... 
Jan 23 02:51:42 localhost.localdomain systemd[1]: Started Control Group configuration service. 
[root@localhost]#

プロセス管理で使用される一般的なコマンドは次のとおりです– bg、fg、nohup、ps、pstree、top、kill、killall、free、uptime、nice。

プロセスの操作

Quick Note: Process PID in Linux

Linuxでは、実行中のすべてのプロセスにPIDまたはプロセスID番号が割り当てられます。このPIDは、CentOSが特定のプロセスを識別する方法です。すでに説明したように、systemdは、CentOSで開始されPIDが1の最初のプロセスです。

Pgrep 指定されたプロセス名のLinuxPIDを取得するために使用されます。

[root@CentOS]# pgrep systemd 
1 
[root@CentOS]#

ご覧のとおり、pgrepコマンドはsystemdの現在のPIDを返します。

CentOSの基本的なCentOSプロセスとジョブ管理

Linuxでプロセスを操作するときは、基本的なフォアグラウンドおよびバックグラウンドプロセスがコマンドラインでどのように実行されるかを知ることが重要です。

  • fg −プロセスを前面に出します

  • bg −プロセスをバックグラウンドに移動します

  • jobs −シェルに接続されている現在のプロセスのリスト

  • ctrl+z −現在のプロセスをスリープ状態にするためのControl + zキーの組み合わせ

  • & −バックグラウンドでプロセスを開始します

シェルコマンドsleepの使用を開始しましょう。sleep名前のとおり、定義された期間スリープします:sleep

[root@CentOS ~]$ jobs [root@CentOS ~]$ sleep 10 & 
[1] 12454

[root@CentOS ~]$ sleep 20 & [2] 12479 [root@CentOS ~]$ jobs 
[1]-  Running                 sleep 10 & 
[2]+  Running                 sleep 20 &

[cnetos@CentOS ~]$

それでは、最初の仕事を前面に出しましょう-

[root@CentOS ~]$ fg 1 
sleep 10

フォローしていると、フォアグラウンドジョブがシェルでスタックしていることに気付くでしょう。それでは、プロセスをスリープ状態にしてから、バックグラウンドで再度有効にしてみましょう。

  • コントロール+ zを押す
  • タイプ:bg 1、最初のジョブをバックグラウンドに送信して開始します。
[root@CentOS ~]$ fg 1 sleep 20 ^Z [1]+ Stopped sleep 20 [root@CentOS ~]$ bg 1 
[1]+ sleep 20 &

[root@CentOS ~]$

nohup

シェルまたはターミナルから作業する場合、デフォルトでは、シェルが閉じられるか、ユーザーがログアウトすると、シェルに接続されているすべてのプロセスとジョブが終了することに注意してください。nohupを使用する場合、ユーザーがログアウトするか、プロセスが接続されているシェルを閉じると、プロセスは引き続き実行されます。

[root@CentOS]# nohup ping www.google.com & 
[1] 27299 
nohup: ignoring input and appending output to ‘nohup.out’

[root@CentOS]# pgrep ping 
27299

[root@CentOS]# kill -KILL `pgrep ping` 
[1]+  Killed                  nohup ping www.google.com

[root@CentOS rdc]# cat nohup.out  
PING www.google.com (216.58.193.68) 56(84) bytes of data. 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms

psコマンド

ザ・ psコマンドは通常、特定のプロセスのスナップショットを調査するために管理者によって使用されます。psは、分析する特定のプロセスを除外するためにgrepで一般的に使用されます。

[root@CentOS ~]$ ps axw | grep python 
762   ?        Ssl    0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid 
1296  ?        Ssl    0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P 
15550 pts/0    S+     0:00 grep --color=auto python

上記のコマンドでは、Pythonインタープリターを使用しているすべてのプロセスが表示されます。結果には、文字列pythonを検索するgrepコマンドも含まれていました。

以下は、psで使用される最も一般的なコマンドラインスイッチです。

スイッチ アクション
a 現在のユーザーのレポートプロセスのみの制約を除外します
バツ ttyまたはシェルに接続されていないプロセスを表示します
w 出力のワイド出力表示をフォーマットします
e コマンド後の環境を表示します
-e すべてのプロセスを選択します
-o ユーザー定義のフォーマットされた出力
-u 特定のユーザーによるすべてのプロセスを表示します
-C 名前またはプロセスIDですべてのプロセスを表示します
- ソート 定義によってプロセスをソートします

誰も使用していないすべてのプロセスを表示するには-

[root@CentOS ~]$ ps -u nobody PID TTY TIME CMD 1853 ? 00:00:00 dnsmasq [root@CentOS ~]$

Firewalldプロセスに関するすべての情報を表示するには-

[root@CentOS ~]$ ps -wl -C firewalld F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 0 762 1 0 80 0 - 81786 poll_s ? 00:00:01 firewalld [root@CentOS ~]$

どのプロセスが最も多くのメモリを消費しているかを見てみましょう-

[root@CentOS ~]$ ps aux --sort=-pmem | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND cnetos 6130 0.7 5.7 1344512 108364 ? Sl 02:16 0:29 /usr/bin/gnome-shell cnetos 6449 0.0 3.4 1375872 64440 ? Sl 02:16 0:00 /usr/libexec/evolution-calendar-factory root 5404 0.6 2.1 190256 39920 tty1 Ssl+ 02:15 0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 cnetos 6296 0.0 1.7 1081944 32136 ? Sl 02:16 0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify cnetos 6350 0.0 1.5 560728 29844 ? Sl 02:16 0:01 /usr/bin/prlsga cnetos 6158 0.0 1.4 1026956 28004 ? Sl 02:16 0:00 /usr/libexec/gnome-shell-calendar-server cnetos 6169 0.0 1.4 1120028 27576 ? Sl 02:16 0:00 /usr/libexec/evolution-source-registry root 762 0.0 1.4 327144 26724 ? Ssl 02:09 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid cnetos 6026 0.0 1.4 1090832 26376 ? Sl 02:16 0:00 /usr/libexec/gnome-settings-daemon [root@CentOS ~]$

カスタム出力を表示して、ユーザーのセントとフォーマットですべてのプロセスを表示します-

[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm 
   PID    USER     COMMAND 
   5802  centos   gnome-keyring-d 
   5812  cnetos   gnome-session 
   5819  cnetos   dbus-launch 
   5820  cnetos   dbus-daemon 
   5888  cnetos   gvfsd 
   5893  cnetos   gvfsd-fuse 
   5980  cnetos   ssh-agent   
   5996  cnetos   at-spi-bus-laun

pstreeコマンド

pstreepsに似ていますが、あまり使用されません。プロセスをきちんとしたツリー形式で表示します。

[centos@CentOS ~]$ pstree 
  systemd─┬─ModemManager───2*[{ModemManager}] 
          ├─NetworkManager─┬─dhclient 
          │                └─2*[{NetworkManager}] 
          ├─2*[abrt-watch-log] 
          ├─abrtd 
          ├─accounts-daemon───2*[{accounts-daemon}] 
          ├─alsactl 
          ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} 
          │                 └─3*[{at-spi-bus-laun}] 
          ├─at-spi2-registr───2*[{at-spi2-registr}] 
          ├─atd 
          ├─auditd─┬─audispd─┬─sedispatch 
          │        │         └─{audispd} 
          │        └─{auditd} 
          ├─avahi-daemon───avahi-daemon 
          ├─caribou───2*[{caribou}] 
          ├─cgrulesengd 
          ├─chronyd 
          ├─colord───2*[{colord}] 
          ├─crond 
          ├─cupsd

pstreeからの合計出力は100行を超える可能性があります。通常、psはより有用な情報を提供します。

トップコマンド

topLinuxのパフォーマンスの問題をトラブルシューティングするときに最もよく使用されるコマンドの1つです。Linuxでのリアルタイムの統計とプロセスの監視に役立ちます。以下は、コマンドラインから起動したときのtopのデフォルト出力です。

Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie 
%Cpu(s):  2.3 us,  2.0 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
KiB Mem :  1879668 total,   177020 free,   607544 used,  1095104 buff/cache 
KiB Swap:  3145724 total,  3145428 free,      296 used.  1034648 avail Mem 
 
PID    USER     PR   NI    VIRT     RES   SHR    S  %CPU  %MEM   TIME+   COMMAND
5404   root     20   0    197832   48024  6744   S   1.3   2.6  1:13.22   Xorg
8013   centos   20   0    555316   23104  13140  S   1.0   1.2  0:14.89   gnome-terminal-
6339   centos   20   0    332336   6016   3248   S   0.3   0.3  0:23.71   prlcc
6351   centos   20   0    21044    1532   1292   S   0.3   0.1  0:02.66   prlshprof

topの実行中に使用される一般的なホットキー(topがシェルで実行されているときにキーを押すとホットキーにアクセスします)。

コマンド アクション
b トップメニューの太字の強調表示を有効/無効にします
z 配色を循環させます
l 負荷平均方位を循環します
m メモリの平均見出しを循環させます
t タスク情報の見出し
h ヘルプメニュー
Shift + F 並べ替えと表示フィールドをカスタマイズします

以下は、topの一般的なコマンドラインスイッチです。

コマンド アクション
-o 列で並べ替えます(-または+を前に付けて、昇順または降順で並べ替えることができます)
-u 指定されたユーザーからのプロセスのみを表示します
-d トップの遅延時間を更新します
-O トップがソートを適用できる列のリストを返します

Shift + Fを使用して表示される、上部の並べ替えオプション画面。この画面では、上部の表示と並べ替えのオプションをカスタマイズできます。

Fields Management for window 1:Def, whose current sort field is %MEM 
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 
 'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!
 
* PID     = Process Id             TGID    = Thread Group Id      
* USER    = Effective User Name    ENVIRON = Environment vars     
* PR      = Priority               vMj     = Major Faults delta   
* NI      = Nice Value             vMn     = Minor Faults delta   
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB)  
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode  
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode
* S       = Process Status         nsNET   = NET namespace Inode  
* %CPU    = CPU Usage              nsPID   = PID namespace Inode  
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode 
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode  
* COMMAND = Command Name/Line 
PPID    = Parent Process pid
UID     = Effective User Id

、ユーザーrdcのプロセスを示し、メモリ使用量でソート-

PID   USER  %MEM  PR  NI    VIRT    RES    SHR    S %CPU     TIME+    COMMAND
 6130  rdc    6.2  20   0  1349592  117160  33232  S  0.0   1:09.34    gnome-shell
 6449  rdc    3.4  20   0  1375872   64428  21400  S  0.0   0:00.43    evolution-calen
 6296  rdc    1.7  20   0  1081944   32140  22596  S  0.0   0:00.40    evolution-alarm
 6350  rdc    1.6  20   0   560728   29844   4256  S  0.0   0:10.16    prlsga
 6281  rdc    1.5  20   0  1027176   28808  17680  S  0.0   0:00.78    nautilus
 6158  rdc    1.5  20   0  1026956   28004  19072  S  0.0   0:00.20    gnome-shell-cal

有効なトップフィールドの表示(要約)-

[centos@CentOS ~]$ top -O 
PID 
PPID 
UID 
USER 
RUID 
RUSER 
SUID 
SUSER 
GID 
GROUP 
PGRP 
TTY 
TPGID

コマンドを殺す

ザ・ killcommandは、PIDを介してコマンドシェルからプロセスを強制終了するために使用されます。ときに殺す過程を、私たちは、送信する信号を指定する必要があります。このシグナルは、プロセスをどのように終了するかをカーネルに知らせます。最も一般的に使用される信号は次のとおりです。

  • SIGTERMカーネルがプロセスに安全に停止する必要があることを通知するため、これは暗黙的に示されます。SIGTERMは、プロセスを正常に終了し、安全な終了操作を実行する機会を提供します。

  • SIGHUPほとんどのデーモンは、SIGHUPが送信されると再起動します。これは、構成ファイルに変更が加えられたプロセスでよく使用されます。

  • SIGKILL以来、SIGTERMシャットダウンするプロセスを尋ねると同等です。カーネルには、要求に準拠しないプロセスを終了するオプションが必要です。プロセスがハングした場合、SIGKILLオプションを使用して、プロセスを明示的にシャットダウンします。

killで送信できるすべてのシグナルのリストには、-lオプションを使用できます-

[root@CentOS]# kill -l 
1) SIGHUP           2) SIGINT         3) SIGQUIT        4) SIGILL         5) SIGTRAP
6) SIGABRT          7) SIGBUS         8) SIGFPE         9) SIGKILL       10) SIGUSR1
11) SIGSEGV        12) SIGUSR2       13) SIGPIPE       14) SIGALRM       15) SIGTERM
16) SIGSTKFLT      17) SIGCHLD       18) SIGCONT       19) SIGSTOP       20) SIGTSTP
21) SIGTTIN        22) SIGTTOU       23) SIGURG        24) SIGXCPU       25) SIGXFSZ
26) SIGVTALRM      27) SIGPROF       28) SIGWINCH      29) SIGIO         30) SIGPWR
31) SIGSYS         34) SIGRTMIN      35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4     39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9     44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12   47) SIGRTMIN+13 
48) SIGRTMIN+14    49) SIGRTMIN+15   50) SIGRTMAX-14   51) SIGRTMAX-13   52) SIGRTMAX-12 
53) SIGRTMAX-11    54) SIGRTMAX-10   55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6     59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1     64) SIGRTMAX

[root@CentOS rdc]#

SIGHUPを使用してシステムを再起動します。

[root@CentOS]# pgrep systemd 
1 
464 
500 
643 
15071

[root@CentOS]# kill -HUP 1

[root@CentOS]# pgrep systemd
1 
464 
500 
643 
15196 
15197 
15198

[root@CentOS]#

pkill管理者がプロセス名でkillシグナルを送信できるようにします。

[root@CentOS]# pgrep ping 
19450 
[root@CentOS]# pkill -9 ping 
[root@CentOS]# pgrep ping 
[root@CentOS]#

killallすべてのプロセスを強制終了します。すべてのユーザーのすべてのプロセスを強制終了するため、rootとしてkillallを使用する場合は注意が必要です。

[root@CentOS]# killall chrome

無料コマンド

freeは、システムのメモリをすばやくチェックするためによく使用される非常に単純なコマンドです。使用済みの物理メモリとスワップメモリ​​の合計量が表示されます。

[root@CentOS]# free 
             total       used      free      shared      buff/cache      available 
Mem:        1879668     526284    699796     10304        653588          1141412 
Swap:       3145724          0    3145724

[root@CentOS]#

素敵なコマンド

nice管理者は、CPU使用率の観点からプロセスのスケジューリング優先度を設定できます。基本的に、カーネルがプロセスまたはジョブのCPUタイムスライスをスケジュールする方法が優れています。デフォルトでは、プロセスにはCPUリソースへの同等のアクセス権が与えられていると想定されています。

まず、topを使用して、現在実行中のプロセスの良さを確認しましょう。

PID   USER   PR   NI    VIRT    RES    SHR   S  %CPU  %MEM     TIME+    COMMAND
28    root   39   19       0      0      0   S  0.0   0.0    0:00.17    khugepaged
690   root   39   19   16808   1396   1164   S  0.0   0.1    0:00.01    alsactl]
9598  rdc    39   19  980596  21904  10284   S  0.0   1.2    0:00.27    tracker-extract
9599  rdc    39   19  469876   9608   6980   S  0.0   0.5    0:00.04    tracker-miner-a
9609  rdc    39   19  636528  13172   8044   S  0.0   0.7    0:00.12    tracker-miner-f
9611  rdc    39   19  469620   8984   6496   S  0.0   0.5    0:00.02    tracker-miner-u
27    root   25    5       0      0      0   S  0.0   0.0    0:00.00    ksmd
637   rtkit  21    1  164648   1276   1068   S  0.0   0.1    0:00.11    rtkit-daemon
1     root   20    0  128096   6712   3964   S  0.3   0.4    0:03.57    systemd
2     root   20    0       0      0      0   S  0.0   0.0    0:00.01    kthreadd
3     root   20    0       0      0      0   S  0.0   0.0    0:00.50    ksoftirqd/0
7     root   20    0       0      0      0   S  0.0   0.0    0:00.00    migration/0
8     root   20    0       0      0      0   S  0.0   0.0    0:00.00    rcu_bh
9     root   20    0       0      0      0   S  0.0   0.0    0:02.07    rcu_sched

NIが描いたNICEコラムに焦点を当てたいと思います。優しさの範囲は、-20から正の19までの範囲です。-20は、与えられた最高の優先順位を表します。

nohup nice --20 ping www.google.com &

renice

reniceを使用すると、すでに実行されているプロセスの現在の優先度を変更できます。

renice 17 -p 30727

上記のコマンドは、pingプロセスコマンドの優先度を下げます

Firewalldは、CentOS上のiptablesのデフォルトのフロントエンドコントローラーです。firewalldフロントエンドは、生のiptablesの上2つの主な利点を有しています-

  • チェーンとルールを抽象化するゾーンを構成および実装するのが簡単です。

  • ルールセットは動的です。つまり、設定が変更または変更されても、ステートフル接続は中断されません。

Firewalldはiptablesのラッパーであり、代替ではないことを忘れないでください。カスタムiptablesコマンドはfirewalldで使用できますが、ファイアウォール機能を壊さないようにfirewalldを使用することをお勧めします。

まず、firewalldが開始されて有効になっていることを確認しましょう。

[root@CentOS rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago 
 Docs: man:firewalld(1) 
Main PID: 712 (firewalld) 
  Memory: 34.7M 
 CGroup: /system.slice/firewalld.service 
       └─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

ご覧のとおり、firewalldはアクティブ(起動時に開始)であり、現在実行中です。非アクティブまたは開始されていない場合は、-を使用できます

systemctl start firewalld && systemctl enable firewalld

これでfirewalldサービスが構成されたので、それが機能していることを確認しましょう。

[root@CentOS]# firewall-cmd --state 
running 
[root@CentOS]#

ご覧のとおり、firewalldサービスは完全に機能しています。

Firewalldはゾーンの概念に基づいて機能します。ゾーンは、ネットワークマネージャーを介してネットワークインターフェイスに適用されます。これについては、ネットワークの構成で説明します。ただし、現時点では、デフォルトでは、デフォルトゾーンを変更すると、デフォルト状態の「デフォルトゾーン」のままになっているネットワークアダプタが変更されます。

すぐに使用できるfirewalldの各ゾーンを簡単に見てみましょう。

シニア番号 ゾーンと説明
1

drop

信頼レベルが低い。すべての着信接続とパケットがドロップされ、ステートフルネスを介して発信接続のみが可能になります

2

block

着信接続には、要求が禁止されていることをイニシエーターに通知するicmpメッセージが返信されます。

3

public

すべてのネットワークが制限されています。ただし、選択した着信接続は明示的に許可できます

4

external

NAT用にfirewalldを設定します。内部ネットワークはプライベートのままですが、到達可能です

5

dmz

特定の着信接続のみが許可されます。DMZ分離のシステムに使用されます

6

work

デフォルトでは、システムが安全な作業環境にあると仮定して、ネットワーク上のより多くのコンピューターを信頼します

7

hone

デフォルトでは、より多くのサービスがフィルタリングされていません。システムがNFS、SAMBA、SSDPなどのサービスが使用されるホームネットワーク上にあると仮定します

8

trusted

ネットワーク上のすべてのマシンが信頼されています。ほとんどの着信接続は自由に許可されます。This is not meant for interfaces exposed to the Internet

使用する最も一般的なゾーンは、パブリック、ドロップ、職場、および自宅です。

各共通ゾーンが使用されるいくつかのシナリオは次のとおりです。

  • public−管理者が使用する最も一般的なゾーンです。これにより、カスタム設定を適用し、LANでの操作に関するRFC仕様に従うことができます。

  • drop−ドロップを使用するタイミングの良い例は、セキュリティ会議、パブリックWiFi、またはインターネットに直接接続されたインターフェイスです。dropは、ICMPプローブを含むすべての一方的な要求が悪意のあるものであると想定します。したがって、州外のリクエストは返信を受け取りません。ドロップの欠点は、厳密なRFCコンプライアンスを必要とする特定の状況でアプリケーションの機能を壊す可能性があることです。

  • work−半安全な企業LANを使用しています。すべてのトラフィックが適度に安全であると見なすことができる場所。これは、WiFiではなく、IDS、IPS、物理的セキュリティまたは802.1xが導入されている可能性があることを意味します。また、LANを使用する人々にも精通している必要があります。

  • home−ホームLANを使用しています。LAN上のすべてのシステムとユーザーに対して個人的に責任があります。LAN上のすべてのマシンを知っており、侵害されたものはありません。多くの場合、信頼できる個人間でメディアを共有するために新しいサービスが提供され、セキュリティのために余分な時間をかける必要はありません。

ゾーンとネットワークインターフェイスは、1対多のレベルで機能します。1つのネットワークインターフェースには、一度に1つのゾーンしか適用できません。一方、ゾーンは多くのインターフェースに同時に適用できます。

利用可能なゾーンと現在適用されているゾーンを見てみましょう。

[root@CentOS]# firewall-cmd --get-zones 
 work drop internal external trusted home dmz public block

[root@CentOS]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

カスタマイズされたルールをfirewalldに追加する準備はできましたか?

まず、外部からポートスキャナーにボックスがどのように見えるかを見てみましょう。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00046s latency). 
Not shown: 1023 filtered ports 
PORT   STATE SERVICE 
22/tcp open  ssh


Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds 
bash-3.2#

ポート80への着信要求を許可しましょう。

まず、デフォルトで適用されているゾーンを確認します。

[root@CentOs]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

次に、ポート80を許可するルールを現在のデフォルトゾーンに設定します。

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[root@CentOS]#

次に、ポート80の接続を許可した後、チェックボックスをオンにします。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00053s latency). 
Not shown: 1022 filtered ports 
PORT   STATE  SERVICE 
22/tcp open   ssh 
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds 
bash-3.2#

これで、80までの一方的なトラフィックが許可されます。

デフォルトのゾーンをドロップして、ポートスキャンがどうなるか見てみましょう。

[root@CentOS]# firewall-cmd --set-default-zone=drop 
success

[root@CentOS]# firewall-cmd --get-default-zone 
drop

[root@CentOs]#

次に、より安全なゾーンでネットワークインターフェイスを使用してホストをスキャンしましょう。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00094s latency). 
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered

Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds 
bash-3.2#

これで、すべてが外部からフィルタリングされます。

以下に示すように、ホストはドロップ時にICMPping要求に応答することさえありません。

bash-3.2# ping 10.211.55.1 
PING 10.211.55.1 (10.211.55.1): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

デフォルトのゾーンを再びパブリックに設定しましょう。

[root@CentOs]# firewall-cmd --set-default-zone=public 
success

[root@CentOS]# firewall-cmd --get-default-zone 
public

[root@CentOS]#

それでは、現在のフィルタリングルールセットを公開して確認しましょう。

[root@CentOS]# firewall-cmd --zone=public --list-all 
public (active) 
target: default 
icmp-block-inversion: no 
interfaces: enp0s5 
sources:  
services: dhcpv6-client ssh 
ports: 80/tcp 
protocols:  
masquerade: no 
forward-ports:  
sourceports:  
icmp-blocks:  
rich rules:

[root@CentOS rdc]#

構成されているように、ポート80フィルタールールは実行中の構成のコンテキスト内にのみあります。これは、システムが再起動されるか、firewalldサービスが再起動されると、ルールが破棄されることを意味します。

間もなくhttpdデーモンを構成するので、変更を永続的にしましょう-

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

これで、パブリックゾーンのポート80ルールは、再起動とサービスの再起動の間も保持されます。

以下は、firewall-cmdで適用される一般的なfirewalldコマンドです。

コマンド アクション
ファイアウォール-cmd--get-zones インターフェイスに適用できるすべてのゾーンを一覧表示します
Firewall-cmd —ステータス Firewalldサービスの現在のステータスを返します
ファイアウォール-cmd--get-default-zone 現在のデフォルトゾーンを取得します
Firewall-cmd --set-default-zone = <zone> デフォルトゾーンを現在のコンテキストに設定します
ファイアウォール-cmd--get-active-zone インターフェイスに適用されたコンテキストで現在のゾーンを取得します
Firewall-cmd --zone = <zone> --list-all 提供されたゾーンの構成を一覧表示します
Firewall-cmd --zone = <zone> --addport = <ポート/トランスポートプロトコル> ゾーンフィルターにポートルールを適用します
-永続的 ゾーンへの変更を永続的にします。フラグは変更コマンドとインラインで使用されます

これらは、firewalldの管理と構成の基本的な概念です。

CentOSでホストベースのファイアウォールサービスを構成することは、より高度なネットワークシナリオでは複雑な作業になる可能性があります。CentOSでのfirewalldとiptablesの高度な使用法と構成には、チュートリアル全体が必要です。ただし、日常のタスクの大部分を完了するのに十分な基本事項を示しました。

PHPは、今日使用されている最も多作なWeb言語の1つです。CentOSにLAMPスタックをインストールすることは、すべてのシステム管理者が実行する必要があることであり、おそらく遅かれ早かれです。

従来のLAMPスタックは、(L)inux(A)pache(M)ySQL(P)HPで構成されています。

CentOSのLAMPスタックには3つの主要なコンポーネントがあります-

  • Webサーバー
  • Web開発プラットフォーム/言語
  • データベースサーバー

NoteLAMPスタックという用語には、PostgreSQL、MariaDB、Perl、Python、Ruby、NGINXWebサーバーなどのテクノロジーも含まれます。

このチュートリアルでは、CentOS GNU Linuxの従来のLAMPスタックであるApache Webサーバー、MySQLデータベースサーバー、およびPHPを使用します。

実際にはMariaDBを使用します。MySQL構成ファイル、データベース、およびテーブルは、MariaDBに対して透過的です。MariaDBは、MySQLではなく標準のCentOSリポジトリに含まれるようになりました。これは、OracleがMySQLの開発を引き継いだため、ライセンスとオープンソースコンプライアンスの制限によるものです。

最初に行う必要があるのは、Apacheをインストールすることです。

[root@CentOS]# yum install httpd
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
extras/7/x86_64/primary_d
| 121 kB  00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.sigmanet.com
* extras: linux.mirrors.es.net
* updates: mirror.eboundhost.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package:
httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution
Installed:
httpd.x86_64 0:2.4.6-45.el7.centos

Dependency Installed:
httpd-tools.x86_64 0:2.4.6-45.el7.centos
mailcap.noarch 0:2.1.41-2.el7

Complete!
[root@CentOS]#

httpdサービスを設定しましょう。

[root@CentOS]# systemctl start httpd && systemctl enable httpd

それでは、firewalldを介してWebサーバーにアクセスできることを確認しましょう。

bash-3.2# nmap -sS -p 1-1024 -T 5  -sV 10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00054s latency). 
Not shown: 1022 filtered ports 
PORT   STATE SERVICE VERSION 
22/tcp open  ssh     OpenSSH 6.6.1 (protocol 2.0) 
80/tcp open  http    Apache httpd 2.4.6 ((CentOS))

Service detection performed. Please report any incorrect results at 
https://nmap.org/submit/ . 
Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#

nmapサービスプローブからわかるように、ApacheWebサーバーはCentOSホスト上の要求をリッスンして応答しています。

MySQLデータベースサーバーをインストールします

[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64

MariaDB用に以下のリポジトリパッケージをインストールしています-

mariadb-server.x86_64

メインのMariaDBサーバーデーモンパッケージ。

mariadb-devel.x86_64

ファイルは、MySQL / MariaDBと互換性のあるソースからコンパイルする必要があります。

mariadb.x86_64

コマンドラインからMariaDBサーバーを管理するためのMariaDBクライアントユーティリティ。

mariadb-libs.x86_64

MySQL / MariaDBサポートでコンパイルされた他のアプリケーションに必要となる可能性のあるMariaDBの共通ライブラリ。

それでは、MariaDBサービスを開始して有効にしましょう。

[root@CentOS]# systemctl start mariadb 
[root@CentOS]# systemctl enable  mariadb

Note− Apacheとは異なり、ホストベースのファイアウォール(firewalld)を介したMariaDBへの接続は有効にしません。データベースサーバーを使用する場合、リモートソケットアクセスが特に必要でない限り、ローカルソケット接続のみを許可することがセキュリティのベストプラクティスと見なされます。

MariaDBサーバーが接続を受け入れていることを確認しましょう。

[root@CentOS#] netstat -lnt 
Active Internet connections (only servers) 
Proto     Recv-Q     Send-Q     Local Address        Foreign Address      State       
tcp            0          0     0.0.0.0:3306         0.0.0.0:*            LISTEN      
tcp            0          0     0.0.0.0:111          0.0.0.0:*            LISTEN      
tcp            0          0     192.168.122.1:53     0.0.0.0:*            LISTEN      
tcp            0          0     0.0.0.0:22           0.0.0.0:*            LISTEN      
tcp            0          0     127.0.0.1:631        0.0.0.0:*            LISTEN      
tcp            0          0     127.0.0.1:25         0.0.0.0:*            LISTEN 
     
[root@CentOS rdc]#

ご覧のとおり、MariaDBはポート3306tcpでリッスンしています。ホストベースのファイアウォール(firewalld)は、ポート3306への着信接続をブロックしたままにします。

PHPをインストールして構成する

[root@CentOS#]  yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64 
&& php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64

一般的な互換性のために、次のphpパッケージをインストールすることをお勧めします-

  • php-common.x86_64
  • php-mysql.x86_64
  • php-mysqlnd.x86_64
  • php-pdo.x86_64
  • php-soap.x86_64
  • php-xml.x86_64
[root@CentOS]# yum install -y php-common.x86_64 php-mysql.x86_64 php-
mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64

これは、/ var / www / html /のApacheWebルートにある単純なphpファイルです。

[root@CentOS]# cat /var/www/html/index.php  
<html> 
   <head> 
      <title>PHP Test Page</title> 
   </head>
   
   <body> 
      PHP Install 
      <?php 
         echo "We are now running PHP on GNU Centos Linux!<br />" 
      ?> 
   </body> 
</html>

[root@CentOS]#

ページの所有グループを、httpデーモンが実行されているシステムユーザーに変更しましょう。

[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php
---

ncatを介して手動で要求された場合。

bash-3.2# ncat 10.211.55.1 80 
   GET / index.php 
   HTTP/1.1 200 OK 
   Date: Sat, 28 Jan 2017 12:06:02 GMT 
   Server: Apache/2.4.6 (CentOS) PHP/5.4.16 
   X-Powered-By: PHP/5.4.16 
   Content-Length: 137 
   Connection: close 
   Content-Type: text/html; charset=UTF-8
   
<html> 
   <head> 
      <title>PHP Test Page</title> 
   </head>
   
   <body> 
      PHP Install 
      We are now running PHP on GNU Centos Linux!<br />
   </body> 
</html>

bash-3.2#

PHPとLAMPは、非常に人気のあるWebプログラミングテクノロジーです。LAMPのインストールと構成は、CentOS管理者としてのニーズのリストに必ず登場します。使いやすいCentOSパッケージは、ソースコードからApache、MySQL、およびPHPをコンパイルすることから多くの作業を要しました。

Pythonは広く使用されているインタープリター言語であり、Linux(およびその他のオペレーティングシステム)でスクリプト化されたアプリケーションをコーディングする世界にプロ意識をもたらしています。Perlがかつて業界標準であったところ、Pythonは多くの点でPerlを上回りました。

PythonとPerlのいくつかの長所は次のとおりです。

  • 洗練の急速な進歩

  • 言語に標準的なライブラリ

  • コードの可読性は言語定義で考えられています

  • GUIサポートからWeb開発まですべてのための多くの専門的なフレームワーク

Pythonは、Perlが実行できるすべてのことを実行でき、多くの場合、より良い方法で実行できます。PerlはまだLinux管理者のツールボックスの中でその位置を占めていますが、Pythonを学ぶことはスキルセットとして素晴らしい選択です。

Pythonの最大の欠点は、Pythonの長所に関連している場合があります。歴史上、Pythonはもともとプログラミングを教えるために設計されました。時々、「読みやすい」と「正しい方法で物事を行う」というそのコア基盤は、単純なコードを書くときに不必要な複雑さを引き起こす可能性があります。また、その標準ライブラリにより、バージョン2.Xから3.Xへの移行で問題が発生しました。

Pythonスクリプトは、実際には、オペレーティングシステムの機能に不可欠な機能のためにCentOSのコアで使用されます。このため、開発用Python環境をCentOSのコアPython環境から分離することが重要です。

手始めに、Pythonには現在2つのバージョンがあります。 Python 2.X そして Python 3.X

バージョン2.Xはすぐに減価償却に近づいていますが(そして数年前から)、両方の段階はまだ活発に生産されています。Pythonの2つのアクティブなバージョンの理由は、基本的にバージョン2.Xの欠点を修正することでした。これには、バージョン3.Xの一部のコア機能を、一部のバージョン2.Xスクリプトをサポートできない方法でやり直す必要がありました。

基本的に、この移行を克服する最善の方法は次のとおりです。3.X用に開発し、レガシースクリプト用の最新の2.Xバージョンに対応します。現在、CentOS 7.Xは、バージョン2.Xの半最新リビジョンに依存しています。

この記事の執筆時点で、Pythonの最新バージョンは次のとおりです。 3.4.6 そして 2.7.13

これがPythonの結論を混乱させたり、引き出したりしないようにしてください。Python環境のセットアップは非常に簡単です。Pythonフレームワークとライブラリを使用すると、このタスクは実際には非常に簡単に実行できます。

Python環境をセットアップする前に、適切な環境が必要です。まず、CentOSのインストールが完全に更新されていることを確認し、いくつかの構築ユーティリティをインストールしましょう。

Step 1 −CentOSを更新します。

[root@CentOS]# yum -y update

Step 2 −ビルドユーティリティをインストールします。

[root@CentOS]# yum -y groupinstall "development tools"

Step 3 −必要なパッケージをいくつかインストールします。

[root@CentOS]# yum install -y zlib-dev openssl-devel sqlite-devel bip2-devel

次に、現在のPython2.Xおよび3.Xをソースからインストールする必要があります。

  • 圧縮アーカイブをダウンロードする
  • ファイルを抽出する
  • ソースコードをコンパイルする

/ usr / src /にPythonインストールごとにビルドディレクトリを作成することから始めましょう。

[root@CentOS]# mkdir -p /usr/src/pythonSource

それでは、それぞれのソースtarballをダウンロードしましょう-

[root@CentOS]# wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
[root@CentOS]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz

次に、アーカイブからそれぞれを抽出する必要があります。

Step 1 − xz-libsをインストールし、tarballを抽出します。

[root@CentOS]# yum install xz-libs
[root@CentOS python3]# xz -d ./*.xz
[root@CentOS python3]# ls
Python-2.7.13.tar  Python-3.6.0.tar
[root@CentOS python3]#

Step 2 −各インストーラーをtarballから解凍します。

[root@CentOS]# tar -xvf ./Python-2.7.13.tar
[root@CentOS]# tar -xvf ./Python-3.6.0.tar

Step 3 −各ディレクトリを入力し、configureスクリプトを実行します。

[root@CentOS]# ./configure --prefix=/usr/local 
root@CentOS]# make altinstall

Note −必ず使用してください altinstallインストールしません。これにより、CentOSとPythonの開発バージョンが分離されます。そうしないと、CentOSの機能が損なわれる可能性があります。

これで、コンパイルプロセスが開始されます。コーヒーを1杯飲み、完了するまで15分の休憩を取ります。Pythonに必要なすべての依存関係をインストールしたので、コンパイルプロセスはエラーなしで完了するはずです。

Pythonの最新の2.Xバージョンがインストールされていることを確認しましょう。

[root@CentOS Python-2.7.13]# /usr/local/bin/python2.7 -V 
Python 2.7.13
[root@CentOS Python-2.7.13]#

Note − Python2.Xの開発環境を指すシバン行のプレフィックスを付ける必要があります。

[root@CentOS Python-2.7.13]# cat ver.py  
#!/usr/local/bin/python2.7 
import sys 
print(sys.version)

[root@CentOS Python-2.7.13]# ./ver.py 
2.7.13 (default, Jan 29 2017, 02:24:08)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

そのように、バージョン2.Xと3.Xには別々のPythonインストールがあります。ここから、それぞれとユーティリティなどを使用できますpip そして virtualenv Python環境とパッケージのインストールを管理する負担をさらに軽減します。

Rubyは、Web開発とLinux管理の両方に最適な言語です。Rubyには、これまでに説明したすべての言語(PHP、Python、Perl)に見られる多くの利点があります。

Rubyをインストールするには、管理者がRuby環境を簡単にインストールして管理できるようにするrbenvを介してブートストラップするのが最善です。

Rubyをインストールするもう1つの方法は、Rubyの標準CentOSパッケージです。すべての利点を備えたrbenvメソッドを使用することをお勧めします。CentOSパッケージは、Rubyに精通していない人にとっては簡単です。

まず、rbenvインストーラーに必要な依存関係をいくつか取得しましょう。

  • git-core
  • zlib
  • zlib-devel
  • gcc-c++
  • patch
  • readline
  • readline-devel
  • libyaml-devel
  • libffi-devel
  • openssl-devel
  • make
  • bzzip2
  • autoconf
  • automake
  • libtool
  • bison
  • curl
  • sqlite-devel

CentOSのインストール時に選択したオプションと役割によっては、これらのパッケージのほとんどがすでにインストールされている場合があります。依存関係を必要とするパッケージをインストールする際の頭痛の種を減らすことができるため、不明な点をすべてインストールすることをお勧めします。

[root@CentOS]# yum -y install git-core zlib zlib-devel gcc-c++ patch readline 
readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf 
automake libtool bison curl sqlite-devel

方法1:動的Ruby開発環境用のrbenv

Rubyを使用するユーザーとして-

[rdc@CentOS ~]$ git clone https://github.com/rbenv/rbenv.git
[rdc@CentOS ~]$  https://github.com/rbenv/ruby-build.git

ruby-buildはrbenvにインストール機能を提供します−

Noteinstall.shを実行する前に、rootまたは管理ユーザーに切り替える必要があります

[rdc@CentOS ruby-build]$ cd ~/ruby-build
[rdc@CentOS ruby-build]# ./install.sh

rbenvのシェルを設定し、正しいオプションがインストールされていることを確認しましょう。

[rdc@CentOS ~]$ source ~/rbenv/rbenv.d/exec/gem-rehash.bash [rdc@CentOS ruby-build]$ ~/rbenv/bin/rbenv  
rbenv 1.1.0-2-g4f8925a 
Usage: rbenv <command> [<args>]

いくつかの便利なrbenvコマンドは次のとおりです。

コマンド アクション
地元 ローカルアプリケーション固有のRubyバージョンを設定または表示します
グローバル グローバルRubyバージョンを設定または表示します
シェル シェル固有のRubyバージョンを設定または表示します
インストール ruby-buildを使用してRubyバージョンをインストールします
アンインストール 特定のRubyバージョンをアンインストールします
再ハッシュ rbenvシムを再ハッシュします(実行可能ファイルをインストールした後にこれを実行します)
バージョン 現在のRubyバージョンとその起源を表示します
バージョン rbenvで使用可能なすべてのRubyバージョンを一覧表示します
これ 実行可能ファイルへのフルパスを表示します
どこから 指定された実行可能ファイルを含むすべてのRubyバージョンを一覧表示します

Rubyをインストールしましょう-

[rdc@CentOS bin]$ ~/rbenv/bin/rbenv install -v 2.2.1

コンパイル完了後−

[rdc@CentOS ~]$ ./ruby -v 
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux] 
[rdc@CentOS ~]$

これで、Ruby2.Xブランチの更新された動作バージョンを備えた動作するRuby環境ができました。

方法2:CentOSパッケージからRubyをインストールする

これが最も簡単な方法です。ただし、CentOSからパッケージ化されたバージョンとgemによって制限される場合があります。本格的な開発作業には、rbenvメソッドを使用してRubyをインストールすることを強くお勧めします。

Ruby、必要な開発パッケージ、およびいくつかの一般的なgemをインストールします。

[root@CentOS rdc]# yum install -y ruby.x86_64 ruby-devel.x86_64 ruby-
libs.x86_64 ruby-gem-json.x86_64 rubygem-rake.noarch

残念ながら、Rubyのバージョンはやや古くなっています。

[root@CentOS rdc]# ruby -v 
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[root@CentOS rdc]#

Perl長い間存在しています。もともとは、テキストファイルの解析に使用されるレポート言語として設計されました。人気が高まるにつれ、Perlは強力なスクリプト言語に必要なモジュールサポートまたはCPAN、ソケット、スレッド、およびその他の機能を追加しました。

PHP、Python、またはRubyに対するPerlの最大の利点は、最小限の手間で物事を成し遂げることです。このPerlの哲学は、物事を正しい方法で行うことを常に意味するわけではありません。ただし、Linuxでの管理タスクの場合、Perlはスクリプト言語の頼りになる選択肢と見なされます。

PythonやRubyに対するPerlのいくつかの利点は次のとおりです。

  • 強力なテキスト処理

  • Perlは、スクリプトの記述を迅速かつ汚くします(通常、PerlスクリプトはPythonまたはRubyの同等のものよりも数十行短くなります)

  • Perlは(ほぼ)何でもできます

Perlのいくつかの欠点は次のとおりです。

  • 構文が混乱する可能性があります

  • Perlのコーディングスタイルはユニークであり、コラボレーションを妨げる可能性があります

  • Perlは実際にはオブジェクト指向ではありません

  • 通常、Perlを使用する場合、標準化とベストプラクティスについてはあまり考慮されていません。

Perl、Python、またはPHPのいずれを使用するかを決定するとき。次の質問をする必要があります-

  • このアプリケーションにはバージョン管理が必要ですか?
  • 他の人がコードを変更する必要がありますか?
  • 他の人がこのアプリケーションを使用する必要がありますか?
  • このアプリケーションを別のマシンまたはCPUアーキテクチャで使用することはありますか?

上記のすべての答えが「いいえ」の場合、Perlは良い選択であり、最終結果の点で物事をスピードアップする可能性があります。

これを踏まえて、最新バージョンのPerlを使用するようにCentOSサーバーを構成しましょう。

Perlをインストールする前に、Perlのサポートを理解する必要があります。公式には、Perlは最後の2つの安定したバージョンとしてのみサポートされています。そのため、開発環境をCentOSバージョンから分離しておく必要があります。

分離の理由は、誰かがPerlのツールをCentOSコミュニティにリリースした場合、CentOSに同梱されているPerlで動作するように変更される可能性が高いためです。ただし、開発目的で最新バージョンをインストールする必要もあります。Pythonと同様に、CentOSは、最先端ではなく信頼性に重​​点を置いたPerlを出荷しています。

CentOS7で現在のバージョンのPerlを確認してみましょう。

[root@CentOS]# perl -v 
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi

現在、Perl5.16.3を実行しています。この記事の執筆時点での最新バージョンは次のとおりです。perl-5.24.0

コードで最新のPerlモジュールを使用できるように、バージョンをアップグレードしたいと考えています。幸い、Perl環境を維持し、CentOSバージョンのPerlを分離しておくための優れたツールがあります。いわゆるperlbrew

PerlBrewをインストールしましょう。

[root@CentOS]# curl -L https://install.perlbrew.pl | bash 
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 
                             Dload  Upload   Total   Spent    Left  Speed 
100   170  100   170    0     0    396      0 --:--:-- --:--:-- --:--:--   397 
100  1247  100  1247    0     0   1929      0 --:--:-- --:--:-- --:--:--  1929

Perl Brewがインストールされたので、最新バージョンのPerl用の環境を作成しましょう。

まず、perlbrewインストールをブートストラップするために、現在インストールされているバージョンのPerlが必要になります。したがって、CentOSリポジトリから必要なPerlモジュールをいくつか入手しましょう。

Note −利用可能な場合、CentOSPerlインストールではCPANではなくCentOSPerlモジュールを常に使用したいと考えています。

Step 1 − CentOS Perl Make :: Makerモジュールをインストールします。

[root@CentOS]# yum -y install perl-ExtUtils-MakeMaker.noarch

Step 2 −最新バージョンのperlをインストールします。

[root@CentOS build]# source ~/perl5/perlbrew/etc/bashrc
[root@CentOS build]# perlbrew install -n -j4 --threads perl-5.24.1

Perlのインストール用に選択したオプションは次のとおりです。

  • n −テストなし

  • j4 −インストールルーチン用に4つのスレッドを並行して実行します(クアッドコアCPUを使用しています)

  • threads −Perlのスレッドサポートを有効にする

インストールが正常に実行されたら、最新のPerl環境に切り替えましょう。

[root@CentOS]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

A sub-shell is launched with perl-5.24.1 as the activated perl. Run 'exit' to finish it.

[root@CentOS]# perl -v

This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linuxthread-multi

(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the GNU General
Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on this system 
using "man perl" or "perldoc perl".  If you have access to the Internet, point your 
browser at http://www.perl.org/, the Perl Home Page.

[root@CentOS]#

私たちのperlbrew環境のコンテキスト内で実行されているperlバージョンを印刷する単純なperlスクリプト-

[root@CentOS]# cat ./ver.pl  
#!/usr/bin/perl
print $^V . "\n";

[root@CentOS]# perl ./ver.pl  
v5.24.1 
[root@CentOS]#

perlをインストールしたら、perlbrewのcpanm-を使用してcpanモジュールをロードできます。

[root@CentOS]# perl-brew install-cpanm

それでは、cpanmインストーラーを使用して、perlbrewで現在のPerlバージョン5.24.1を使用してLWPモジュールを作成しましょう。

Step 1 −現在のPerlバージョンのコンテキストに切り替えます。

[root@CentOS ~]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

サブシェルは、perl-5.24.1をアクティブ化されたperlとして起動されます。'exit'を実行して終了します。

[root@CentOS ~]#

Step 2 −LWPユーザーエージェントPerlモジュールをインストールします。

[root@CentOS ~]# ~/perl5/perlbrew/bin/cpanm -i LWP::UserAgent

Step 3 −次に、新しいCPANモジュールを使用してPerl環境をテストしましょう。

[root@CentOS ~]# cat ./get_header.pl  
#!/usr/bin/perl 
use LWP; 
my $browser = LWP::UserAgent->new(); my $response = $browser->get("http://www.slcc.edu/"); unless(!$response->is_success) { 
   print $response->header("Server"); 
}

[root@CentOS ~]# perl ./get_header.pl  
Microsoft-IIS/8.5 [root@CentOS ~]#

あります!Perl Brewを使用すると、perl環境を簡単に分離でき、Perlで得られるベストプラクティスと見なすことができます。

LDAPとして知られています Light Weight Directory Access Protocolディレクトリから知られている企業内のX.500サービスコンテナにアクセスするために使用されるプロトコルです。Windows Serverの管理に精通している人は、LDAPをActiveDirectoryと本質的に非常に似ていると考えることができます。これは、WindowsワークステーションをOpenLDAPCentOSエンタープライズに絡み合わせるという広く使用されている概念ですらあります。一方、CentOS Linuxワークステーションは、リソースを共有し、Windowsドメインの基本機能に参加できます。

LDAPをCentOSにDirectoryServer Agent、Directory System Agent、またはDSA(これらの頭字語はすべて同じ)として展開することは、NDSでDirectoryTree構造を使用する古いNovellNetwareインストールに似ています。

LDAPの簡単な歴史

LDAPは基本的に、エンタープライズリソースを使用してX.500ディレクトリにアクセスするための効率的な方法として作成されました。X.500とLDAPはどちらも同じ特性を共有し、非常に類似しているため、LDAPクライアントはいくつかのヘルパーを使用してX.500ディレクトリにアクセスできます。LDAPには、という独自のディレクトリサーバーもあります。slapdLDAPDAPの主な違いは、軽量バージョンはTCP上で動作するように設計されていることです。

一方でDAPは完全なOSIモデルを使用しています。今日のネットワークにおけるインターネット、TCP / IP、およびイーサネットの卓越性の出現により、特定のレガシーコンピューティングモデルの外部でDAPとネイティブX.500エンタープライズディレクトリの両方を使用するディレクトリサービスの移植に遭遇することはめったにありません。

CentOSLinuxのopenldapで使用される主なコンポーネントは次のとおりです。

openldap LDAPサポートライブラリ
openldap-server LDAPサーバー
openldap-クライアント LDAPクライアントユーティリティ
openldap-devel OpenLDAPの開発ライブラリ
compay-openldap OpenLDAP共有ライブラリ
平手打ち OpenLDAPのディレクトリサーバーデーモン
slurpd エンタープライズドメイン全体のLDAPレプリケーションに使用されます

Note −企業に名前を付けるときは、を使用することをお勧めします .localTLD。.netまたは.comを使用すると、オンラインドメインインフラストラクチャと内部ドメインインフラストラクチャを分離するときに問題が発生する可能性があります。acme.comを外部と内部の両方の運用に使用している企業の余分な作業を想像してみてください。したがって、acme.comまたはacme.netと呼ばれるインターネットリソースを用意することをお勧めします。次に、ローカルネットワークエンタープライズリソースはacme.localとして表されます。これにはDNSレコードの構成が必要ですが、シンプルさ、雄弁さ、セキュリティの面でメリットがあります。

CentOSにOpenLDAPをインストールする

YUMからopenldap、openldap-servers、openldap-clients、migrationstoolsをインストールします。

[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00
 
 Dependencies Resolved
 
=============================================================================== 
=============================================================================== 
Package                                Arch
Version                             Repository                        Size 
=============================================================================== 
=============================================================================== 
Installing: 
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k 
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M  

Transaction Summary 
=============================================================================== 
===============================================================================
Install  2 Packages

Total download size: 2.3 M 
Installed size: 5.3 M 
Downloading packages:

Installed: 
openldap-clients.x86_64 0:2.4.40-13.el7                                       
openldap-servers.x86_64 0:2.4.40-13.el7                                       
Complete! 
[root@localhost]#

それでは、slapdサービスを開始して有効にしましょう-

[root@centos]# systemctl start slapd 
[root@centos]# systemctl enable  slapd

この時点で、/ etc / openldapにopenldap構造があることを確認しましょう。

root@localhost]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

次に、slapdサービスが実行されていることを確認します。

root@centos]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd
 
[root@centos]#

次は、私たちの設定でき開き、LDAPのインストールを。

システムLDAPユーザーが作成されていることを確認してください。

[root@localhost]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

LDAP資格情報を生成します。

[root@localhost]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

slappasswdからの出力を保存する必要があります。

OpenLDAPの設定

Step 1 −ドメインのLDAPを構成し、管理ユーザーを追加します。

まず、openLDAP環境をセットアップします。以下は、ldapmodifyコマンドで使用するテンプレートです。

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcSuffix 
olcSuffix: dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootDN 
olcRootDN: cn=ldapadm,dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: <output from slap

ldapmodifyコマンドを使用して、/ etc / openldap / slapd.d / cn = config / olcDatabase = {1} monitor.ldifに変更を加えます。

[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif  
SASL/EXTERNAL authentication started 
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 

[root@localhost cn=config]#

変更されたLDAP構成を確認しましょう。

root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = 
entryCSN: 20170215204423.726622Z#000000#000#000000 
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[root@centos]#

ご覧のとおり、LDAPエンタープライズの変更は成功しました。

次に、OpenLDAP用の自己署名SSL証明書を作成します。これにより、エンタープライズサーバーとクライアント間の通信が保護されます。

Step 2 −OpenLDAPの自己署名証明書を作成します。

opensslを使用して、自己署名SSL証明書を作成します。次の章に進み、Create LDAP SSL Certificate with opensslOpenLDAPとの通信を保護するための手順については。次に、SSL証明書が構成されると、OpenLDAPエンタープライズ構成が完了します。

Step 3 −証明書との安全な通信を使用するようにOpenLDAPを設定します。

次の情報を使用してvimcerts.ldifファイルを作成します-

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem

次に、もう一度ldapmodifyコマンドを使用して、変更をOpenLDAP構成にマージします。

[root@centos rdc]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@centos]#

最後に、OpenLADP構成をテストしましょう。

[root@centos]# slaptest -u 
config file testing succeeded 
[root@centos]#

Step 4 −slapdデータベースを設定します。

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

OpenLDAPスキーマを更新します。

コサインおよびnisLDAPスキーマを追加します。

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

最後に、エンタープライズスキーマを作成し、それを現在のOpenLDAP構成に追加します。

以下はvmnetと呼ばれるドメイン用です。ldapadmと呼ばれるLDAP管理者を持つローカル

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local 
objectClass: organizationalUnit 
ou: Group

最後に、これを現在のOpenLDAPスキーマにインポートします。

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[root@centos]#

Step 5 − OpenLDAPEnterpriseユーザーを設定します。

vimまたはお気に入りのテキストエディタを開き、次の形式をコピーします。これは、「vmnet.local」LDAPドメインの「entacct」という名前のユーザー用に設定されています。

dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword: {crypt}x 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

次に、保存された上記のファイルをOpenLdapスキーマにインポートします。

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[root@centos]#

ユーザーがLDAPEnterpriseにアクセスする前に、次のようにパスワードを割り当てる必要があります。

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s ユーザーのパスワードを指定します

-x 更新されたパスワードが適用されるユーザー名です

-D LDAPスキーマに対して認証するための*識別名 "です。

最後に、Enterpriseアカウントにログインする前に、OpenLDAPエントリを確認しましょう。

[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL 
 # 
 # entacct, People, vmnet.local 
dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top 
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword:: e2NyeXB0fXg= 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

/ etc / passwd/ etc / groupsなどをOpenLDAP認証に変換するには、移行ツールを使用する必要があります。これらは、migrationtoolsパッケージに含まれています。次に、/ usr / share / migrationtoolsにインストールします

[root@centos openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl

Step 6 −最後に、slapdサービスへのアクセスを許可して、リクエストを処理できるようにする必要があります。

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

LDAPクライアントアクセスを構成する

LDAPクライアントアクセスを構成するには、クライアントにopenldap、open-ldapクライアント、およびnss_ldapのパッケージが必要です。

クライアントシステムのLDAP認証の構成は少し簡単です。

Step 1 −依存パッケージをインストールする−

# yum install -y openldap-clients nss-pam-ldapd

Step 2−authconfigを使用してLDAP認証を構成します。

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

Step 3 −nslcdサービスを再起動します。

systemctl restart  nslcd

TLSとSSLの背景

TLSは、SSLに続く、ソケット層セキュリティの新しい標準です。TLSは、SSLを進歩させる他のセキュリティおよびプロトコルラッパー機能とともに、より優れた暗号化標準を提供します。多くの場合、TLSとSSLという用語は同じ意味で使用されます。ただし、プロのCentOS管理者として、それぞれを区別する違いと履歴に注意することが重要です。

SSLはバージョン3.0に移行します。SSLは、Netscapeの下で業界標準として開発および宣伝されました。NetscapeがAOL(90年代に人気のあるISP、別名America Online)によって購入された後、AOLはSSLのセキュリティ改善に必要な変更を実際に宣伝することはありませんでした。

バージョン3.1で、SSLテクノロジーはオープンシステム標準に移行し、TLSに変更されました。SSLの著作権はまだAOLが所有していたため、新しい用語が作成されました。TLS - Transport Layer Security。したがって、TLSは実際にはSSLとは異なることを認識することが重要です。特に、古いSSLテクノロジーには既知のセキュリティ問題があり、一部は今日では廃止されていると見なされています。

Note−このチュートリアルでは、テクノロジー3.1以降について話すときにTLSという用語を使用します。次に、SSL SSLテクノロジー3.0と下位に特定のコメント。

SSLとTLSのバージョン管理

次の表は、TLSとSSLのバージョン管理が互いにどのように関連するかを示しています。SSLバージョン3.2に関して話す人が何人かいると聞きました。しかし、彼らはおそらくブログを読んで用語を理解しました。プロの管理者として、私たちは常に標準的な用語を使用したいと考えています。したがって、SSLは、過去のテクノロジーを参照する必要があります。簡単なことで、CentOSの求職者を熟練したCS専攻のように見せることができます。

TLS SSL
- 3.0
1.0 3.1
1.1 3.2
1.2 3.3

TLSは、今日のインターネットのユーザーにとって重要な2つの主要な機能を実行します。1つは、パーティが誰であるかを確認することです。authentication。二、それは提供しますend-to-end encryption このネイティブ機能を欠いている上位レベルのプロトコル(ftp、http、電子メールプロトコルなど)のトランスポート層で。

1つ目は、当事者誰であり、エンドツーエンドの暗号化としてセキュリティにとって重要であるかを確認します。消費者が支払いを行うことを許可されていないウェブサイトへの暗号化された接続を持っている場合、財務データは依然として危険にさらされています。これは、すべてのフィッシングサイトにないものです。a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA

適切に署名された証明書がないことを回避するには、2つの方法しかありません。ユーザーをだまして自己署名証明書のWebブラウザーの信頼を許可するか、ユーザーが技術に精通しておらず、信頼できる証明書の重要性を知らないことを望みます。権限(またはCA)。

このチュートリアルでは、自己署名証明書と呼ばれるものを使用ます。つまり、この証明書にWebサイトにアクセスするすべてのWebブラウザーで信頼済みのステータスを明示的に付与しないと、ユーザーがサイトにアクセスするのを思いとどまらせるエラーが表示されます。次に、自己署名証明書を使用してサイトにアクセスする前に、ユーザーがいくつかのアクションを実行できるようにします。セキュリティのために、これは良いことであることを忘れないでください。

opensslのインストールと構成

opensslは、TLSのオープンソース実装の標準です。opensslは、Linux、BSDディストリビューション、OS Xなどのシステムで使用され、Windowsもサポートしています。

opensslは、トランスポート層のセキュリティを提供し、開発者向けの認証エンドツーエンド暗号化の詳細なプログラミングを抽象化するため、重要です。これが、TLSを使用するほぼすべてのオープンソースアプリケーションでopensslが使用される理由です。また、Linuxのすべての最新バージョンにデフォルトでインストールされます。

デフォルトでは、opensslは少なくともバージョン5以降のCentOSにインストールする必要があります。念のため、YUM経由でopensslをインストールしてみましょう。YUMはパッケージがすでにインストールされているかどうかを通知するのに十分インテリジェントなので、installを実行するだけです。互換性の理由で古いバージョンのCentOSを実行している場合、yum -yインストールを実行すると、opensslが半最近のハートブリードの脆弱性に対して更新されます。

インストーラーを実行すると、opensslが実際に更新されていることがわかりました。

[root@centos]# yum -y install openssl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for 
package: 1:openssl-1.0.1e-60.el7_3.1.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Finished Dependency Resolution 
Dependencies Resolved

===============================================================================
=============================================================================== 
 Package                               Arch
 Version                            Repository                        Size 
=============================================================================== 
=============================================================================== 
Updating: 
openssl                               x86_64                          
1:1.0.1e-60.el7_3.1                 updates                           713 k
Updating for dependencies:

OpenLDAPの自己署名証明書を作成する

これは、以前のOpenLDAPインストールの自己署名を作成する方法です。

自己署名OpenLDAP証明書を作成します。

openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365

[root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem 
-keyout /etc/openldap/certs/vmnet.pem -days 365 
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:[email protected]
[root@centos]#

これで、OpenLDAP証明書を/ etc / openldap / certs /に配置する必要があります。

[root@centos]# ls /etc/openldap/certs/*.pem 
/etc/openldap/certs/vmnetcert.pem  /etc/openldap/certs/vmnetkey.pem
[root@centos]#

ご覧のとおり、証明書とキーの両方が/ etc / openldap / certs /ディレクトリにインストールされています。最後に、権限は現在rootユーザーによって所有されているため、それぞれの権限を変更する必要があります。

[root@centos]# chown -R  ldap:ldap /etc/openldap/certs/*.pem
[root@centos]# ls -ld /etc/openldap/certs/*.pem
-rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem 
-rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem
[root@centos]#

ApacheWebサーバーの自己署名証明書を作成する

このチュートリアルでは、Apacheがすでにインストールされていることを前提としています。別のチュートリアル(CentOSファイアウォールの構成)でApacheをインストールしました。今後のチュートリアルでは、Apacheの高度なインストールについて説明します。したがって、Apacheをまだインストールしていない場合は、それに従ってください。

次の手順を使用してApacheHTTPdをインストールできるようになったら-

Step 1 − Apachehttpdサーバー用のmod_sslをインストールします。

まず、mod_sslを使用してApacheを構成する必要があります。YUMパッケージマネージャーを使用すると、これは非常に簡単です-

[root@centos]# yum -y install mod_ssl

次に、Apacheデーモンをリロードして、Apacheが新しい構成を使用するようにします。

[root@centos]# systemctl reload httpd

この時点で、ApacheはローカルホストでTLS接続をサポートするように構成されています。

Step 2 −自己署名SSL証明書を作成します。

まず、プライベートTLSキーディレクトリを設定しましょう。

[root@centos]# mkdir /etc/ssl/private 
[root@centos]# chmod 700 /etc/ssl/private/

Note−ルートのみがこのディレクトリへの読み取り/書き込みアクセス権を持っていることを確認してください。ワールド読み取り/書き込みアクセスを使用すると、秘密鍵を使用して、盗聴されたトラフィックを復号化できます。

証明書とキーファイルを生成します。

[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout 
/etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt 
Generating a 2048 bit RSA private key
..........+++
....+++
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:xx
Locality Name (eg, city) [Default City]:xxxx
Organization Name (eg, company) [Default Company Ltd]:VMNET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos.vmnet.local
Email Address []:

[root@centos]#

Note −ドメイン名が登録されていない場合は、サーバーのパブリックIPアドレスを使用できます。

私たちの証明書を見てみましょう-

[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout
Certificate:
   Data:
      Version: 3 (0x2)
      Serial Number: 17620849408802622302 (0xf489d52d94550b5e)
   Signature Algorithm: sha256WithRSAEncryption
   Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Validity
      Not Before: Feb 24 07:07:55 2017 GMT
      Not After : Feb 24 07:07:55 2018 GMT
   Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
         Public-Key: (2048 bit)
            Modulus:
               00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56:
               f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a:
               57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38:
               47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0:
               66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5:
               31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71:
               9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e:
               79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89:
               e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa:
               ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c:
               ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59:
               e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42: 
               7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f:
               5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d:
               c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81:
               6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5:
               12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:

これは、opensslコマンドで使用した各オプションの説明です-

コマンド アクション
req -X509 キー管理にはX.509CSR管理PKI標準を使用します。
-ノード パスフレーズで証明書を保護しないでください。Apacheは、パスフレーズを中断することなく証明書を使用できる必要があります。
-2555日 証明書の有効期間を7年または2555日に通知します。期間は必要に応じて調整できます。
-newkey rsa:2048 2048ビット長のRSAを使用してキーと証明書の両方を生成するように指定されています。

次に、クライアントとPFSをネゴシエートするためのDiffie-Helimanグループを作成します。

[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

これには5〜15分かかります。

Perfect Forward Secrecy−秘密鍵が危険にさらされた場合にセッションデータを保護するために使用されます。これにより、セッションごとに一意のクライアントとサーバー間で使用されるキーが生成されます。

次に、Perfect ForwardSecrecy構成を証明書に追加します。

[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt

キーファイルと証明書ファイルを使用するようにApacheを構成する

/etc/httpd/conf.d/ssl.confに変更を加えます

ssl.confに次の変更を加えます。ただし、その前に、元のファイルをバックアップする必要があります。viemcasなどの高度なテキストエディタで本番サーバーに変更を加える場合は、編集を行う前に常に構成ファイルをバックアップすることをお勧めします。

[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/

ssl.confの正常に機能するコピーをホームフォルダのルートにコピーした後、編集を続けましょう。

  • Locate
  • DocumentRootとServerNameの両方を次のように編集します。
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443

DocumentRootこれは、デフォルトのApacheディレクトリへのパスです。このフォルダには、Webサーバーまたはサイトのデフォルトページを要求するHTTPリクエストを表示するデフォルトページがあります。

ServerNameは、サーバーのIPアドレスまたはホスト名のいずれかであるサーバー名です。TLSの場合、ホスト名を使用して証明書を作成することをお勧めします。OpenLdapチュートリアルから、ローカルエンタープライズドメインにcentosのホスト名を作成しました:vmnet.local

ここで、次の行をコメントアウトしたいと思います。

SSLプロトコル

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
 ~~~~> #SSLProtocol all -SSLv2
 
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
 ~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

次に、証明書と秘密鍵と公開鍵のペアの場所をApacheに知らせます。

自己署名証明書ファイルへのパスを指定します

#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt
specify path to our private key file
#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key

最後に、ポート443を介したhttpsへのインバウンド接続を許可する必要があります

この章では、Apache HTTPサーバーが誕生した背景について少し学び、CentOS Linux7に最新の安定バージョンをインストールします。

ApacheWebServerの簡単な歴史

Apacheは、長い間使用されてきたWebサーバーです。実際、http自体の存在とほぼ同じくらいです!

Apacheは、NCSAとしても知られるNational Center for SupercomputingApplicationsでのかなり小さなプロジェクトとして始まりました。90年代半ばには、「httpd」と呼ばれるように、インターネット上で群を抜いて最も人気のあるWebサーバープラットフォームであり、市場シェアの約90%以上を占めていました。

当時は簡単なプロジェクトでした。ウェブマスターとして知られる熟練したITスタッフは、ウェブサーバープラットフォームとウェブサーバーソフトウェアの保守、およびフロントエンドとバックエンドの両方のサイト開発を担当していました。httpdの中核は、プラグインまたは拡張機能と呼ばれるカスタムモジュールを使用する機能でした。ウェブマスターはまた、コアサーバーソフトウェアにパッチを書くのに十分なスキルを持っていました。

90年代後半のいつか、httpdのシニア開発者兼プロジェクトマネージャーはNCSAを離れて他のことをしました。これにより、最も人気のあるWebデーモンが停滞した状態になりました。

httpdの使用が非常に広まったため、経験豊富なhttpd Webマスターのグループが、httpdの将来についてサミットを呼びかけました。最高の拡張機能とパッチを調整して、現在の安定したリリースに適用することが決定されました。その後、httpサーバーの現在の祖父が生まれ、ApacheHTTPサーバーと名付けられました。

Little Known Historical Fact− Apacheは、ネイティブアメリカンの戦士の部族にちなんで名付けられていません。それは実際、ひねりを加えて造られ、名前が付けられました:多くの才能のあるコンピューター科学者からの多くの修正(またはパッチ)から作られています:patchy または Apache

CentOS Linux7に現在の安定バージョンをインストールする

Step 1 −yum経由でhttpdをインストールします。

yum -y install httpd

この時点で、ApacheHTTPサーバーはyum経由でインストールされます。

Step 2 −httpdのニーズに固有のhttpd.confファイルを編集します。

デフォルトのApacheインストールでは、Apacheの構成ファイルの名前はhttpd.confで、/ etc / httpd /にあります。それでは、vimで開きましょう。

httpd.confの最初の数行がvimで開かれました-

# 
# This is the main Apache HTTP server configuration file.  It contains the 
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. 
# In particular, see  
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> 
# for a discussion of each configuration directive.

CentOSインストールがhttpポート80からのhttpリクエストを処理できるように、次の変更を行います。

リスニングホストとポート

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

ここから、特定のポートまたはIPアドレスでリッスンするようにApacheを変更します。たとえば、8080などの代替ポートでhttpdサービスを実行する場合、またはWebサーバーが個別のIPアドレスを持つ複数のインターフェイスで構成されている場合です。

聴く

ApacheがすべてのIPアドレスのすべてのリスニングデーモンに接続するのを防ぎます。これは、IPv6またはIPv4トラフィックのみの指定を停止するのに役立ちます。または、マルチホームホスト上のすべてのネットワークインターフェイスにバインドすることもできます。

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
Listen 10.0.0.25:80
#Listen 80

DocumentRoot

「ドキュメントルート」は、Apacheがサーバーにアクセスしたときにリクエストを処理するためのインデックスファイルを探すデフォルトのディレクトリです。 http://www.yoursite.com/ ドキュメントルートからインデックスファイルを取得して提供します。

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

Step 3 −httpdサービスを開始して有効にします。

[root@centos rdc]# systemctl start httpd && systemctl reload httpd 
[root@centos rdc]#

Step 4 −ポート80要求へのアクセスを許可するようにファイアウォールを構成します。

[root@centos]# firewall-cmd --add-service=http --permanent

Maria DBで使用するためにCentOSを構成するときに簡単に触れたように、CentOS 7yumリポジトリにはネイティブMySQLパッケージがありません。これを説明するには、MySQLでホストされるリポジトリを追加する必要があります。

CentOSLinuxでのMariaDBとMySQL

注意すべきことの1つは、MySQLにはMariaDBとは異なる基本依存関係のセットが必要になるということです。また、MySQLを使用すると、CentOSの概念と哲学が破られます。最大の信頼性を実現するように設計された製品パッケージです。

したがって、MariaとMySQLのどちらを使用するかを決定するときは、2つのオプションを検討する必要があります。現在のDBスキーマはMariaで機能しますか?マリアよりもMySQLをインストールするとどのような利点がありますか?

MariaコンポーネントはMySQL構造に対して100%透過的であり、ライセンスが向上することで効率が向上します。やむを得ない理由がない限り、MariaDBを使用するようにCentOSを構成することをお勧めします。

CentOSでMariaを支持する最大の理由は、次のとおりです。

  • ほとんどの人はMariaDBを使用します。問題が発生した場合は、マリアのサポートが強化されます。

  • CentOSはMariaで実行するように設計されています。したがって、マリアはより良い安定性を提供します。

  • MariaはCentOSで正式にサポートされています。

MySQLリポジトリをダウンロードして追加します

MySQLリポジトリを-からダウンロードしてインストールします。

http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

Step 1 −リポジトリをダウンロードします。

リポジトリは、簡単にインストールできるように、rpmパッケージに便利にパッケージ化されています。wget −でダウンロードできます

[root@centos]# wget http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
   --2017-02-26 03:18:36--  http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
   Resolving repo.mysql.com (repo.mysql.com)... 104.86.98.130

Step 2 −YUMからMySQLをインストールします。

これで、yumパッケージマネージャーを使用してMySQLをインストールできます-

[root@centos]# yum -y install mysql-server

Step 3 −MySQLデーモンサービスを開始して有効にします。

[root@centos]# systemctl start mysql 
[root@centos]# systemctl enable  mysql

Step 4 −MySQLサービスが稼働していることを確認します。

[root@centos]# netstat -antup | grep 3306 
tcp6       0       0 :::3306       :::*       LISTEN       6572/mysqld
[root@centos]#

注-ファイアウォールルールの通過は許可されません。MySQLを使用するように構成するのが一般的ですUnix Domain Sockets。これにより、LAMPスタックのWebサーバーのみがローカルでMySQLデータベースにアクセスできるようになり、データベースソフトウェアで攻撃ベクトルの完全な次元が取り出されます。

CentOS 7サーバーから電子メールを送信するには、最新のメール転送エージェント(MTA)を構成するためのセットアップが必要です。Mail Transfer Agentは、SMTPを介してシステムユーザーまたは企業のインターネットドメインに送信メールを送信するデーモンです。

このチュートリアルでは、ローカルで使用するためにデーモンをセットアップするプロセスのみを説明していることに注意してください。業務用のMTAを設定するための高度な構成については詳しく説明しません。これは、DNS、ブラックリストに登録されていない静的なルーティング可能なIPアドレスの取得、高度なセキュリティとサービス設定の構成など、多くのスキルの組み合わせです。つまり、このチュートリアルは、基本的な構成を理解することを目的としています。このチュートリアルは、インターネットに面したホストのMTA構成には使用しないでください。

セキュリティと管理のしやすさの両方に重点を置いて、 PostfixこのチュートリアルのMTAとして。CentOSの古いバージョンにインストールされているデフォルトのMTAはSendmailです。Sendmail素晴らしいMTAです。しかし、作者の謙虚な意見の中で、PostfixはMTAに関する以下の注意事項に取り組むときにスイートスポットになります。CentOSの最新バージョンでは、PostfixがデフォルトのMTAとしてSendmailに取って代わりました。

Postfixは、広く使用され、十分に文書化されたMTAです。それは積極的に維持され、開発されています。最小限の構成を念頭に置いて(これは単なる電子メールです)、システムリソースを効率的に使用できます(これも単なる電子メールです)。

Step 1 − YUM PackageManagerからPostfixをインストールします。

[root@centos]# yum -y install postfix

Step 2 −Postfix設定ファイルを設定します。

Postfix設定ファイルは/etc/postfix/main.cfにあります

単純なPostfix設定では、特定のホストに対して、ホスト名、ドメイン、起点、inet_interfaces、および宛先を設定する必要があります。

Configure the hostname−ホスト名は、Postfixホストの完全修飾ドメイン名です。OpenLDAPの章では、CentOSボックスにドメインvmnet.localのcentosという名前を付けました。この章ではそれを守りましょう。

# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
myhostname = centos.vmnet.local

Configure the domain−上記のように、このチュートリアルで使用するドメインはvmnet.localです。

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component. # $mydomain is used as a default value for many other configuration
# parameters.
#
mydomain = vmnet.local

Configure the origin −単一のサーバーとドメインを設定する場合は、次のセクションのコメントを解除し、デフォルトのPostfix変数をそのままにしておく必要があります。

# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # which is fine for small sites. If you run a domain with multiple # machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# [email protected].
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part. 
#
myorigin = $myhostname myorigin = $mydomain

Configure the network interfaces− Postfixは、単一のネットワークインターフェイスと、そのインターフェイスに関連付けられているすべてのプロトコルとIPアドレスをリッスンします。これは、Postfixのデフォルト設定を有効のままにしておくだけで実行できます。

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes. 
#
#inet_interfaces = all
#inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all

Step 3 −PostfixのSASLサポートを構成します。

SASL認証のサポートがない場合、Postfixはローカルユーザーからのメールの送信のみを許可します。または、ユーザーがローカルドメインから電子メールを送信すると、中継拒否エラーが発生します。

NoteSASL または Simple Application Security Layer Frameworkは、さまざまなアプリケーション層プロトコル間でさまざまな手法をサポートする認証用に設計されたフレームワークです。認証メカニズムをアプリケーション層プロトコルに任せる代わりに、SASL開発者(およびコンシューマー)は、現在の認証プロトコルを活用して、利便性やより安全な認証(セキュリティで保護されたサービスへのアクセスについて言えば)が組み込まれていない可能性のある高レベルのプロトコルを実現します。

「cyrus-sasl *パッケージ」をインストールします

[root@centos]# yum -y install  cyrus-sasl 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: repos.forethought.net 
 * extras: repos.dfw.quadranet.com 
 * updates: mirrors.tummy.com 
Package cyrus-sasl-2.1.26-20.el7_2.x86_64 already installed and latest version
Nothing to do

SASL認証用に/etc/postfix/main.cfを設定します

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

main.confの私のSASLオプション

##Configure SASL Options Entries:
smtpd_sasl_auth_enable = yes
smptd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtp_sasl_type = dovecot
smtp_sasl_path = private/auth/etc

Step 4 −着信SMTPサービスを許可するようにFirewallDを構成します。

[root@centos]# firewall-cmd --permanent --add-service=smtp 
success

[root@centos]# firewall-cmd --reload 
success

[root@centos]#

次に、CentOSホストがポート25(SMTP)での要求を許可して応答していることを確認しましょう。

Nmap scan report for 172.16.223.132 
Host is up (0.00035s latency). 
Not shown: 993 filtered ports 
PORT    STATE  SERVICE 
   20/tcp  closed ftp-data 
   21/tcp  open   ftp 
   22/tcp  open   ssh 
   25/tcp  open   smtp 
   80/tcp  open   http 
   389/tcp open   ldap 
   443/tcp open   https 
MAC Address: 00:0C:29:BE:DF:5F (VMware)

ご覧のとおり、SMTPはリッスンしており、デーモンは内部LANからの要求に応答しています。

DovecotIMAPとPOP3サーバーをインストールします

Dovecotは、小規模から大規模の組織の受信メールのニーズを処理するように設計された、安全なIMAPおよびPOP3サーバーです。CentOSでの使用が多いため、CentOSおよびMTASASLプロバイダーの受信メールサーバーをインストールおよび構成する例としてDovecotを使用します。

前述のように、DNSのMXレコードを構成したり、サービスがドメインのメールを処理できるようにする安全なルールを作成したりすることはありません。したがって、これらのサービスをインターネットに面したホストに設定するだけで、SPFレコードのないセキュリティホールの余地が残る可能性があります。

Step 1 −Dovecotをインストールします。

[root@centos]# yum -y install dovecot

Step 2 −dovecotを構成します。

dovecotのメイン設定ファイルは/etc/dovecot.confにあります。まず、メインの構成ファイルをバックアップします。編集を行う前に、常に構成ファイルをバックアップすることをお勧めします。このようにして、id(たとえば)の改行はテキストエディタによって破棄され、何年もの変更が失われます。現在のバックアップを本番環境にコピーするため、元に戻すのは簡単です。

dovecotのプロトコルとデーモンサービスを有効にする

# Protocols we want to be serving. 
protocols = imap imaps pop3 pop3s

ここで、dovecotデーモンが起動時にリッスンできるようにする必要があります-

[root@localhost]# systemctl start  dovecot 
[root@localhost]# systemctl enable dovecot

Dovecotが指定されたポートでローカルでimap、pop3、imapsecured、およびpop3securedをリッスンしていることを確認しましょう。

[root@localhost]# netstat -antup | grep dovecot 
 tcp        0        0 0.0.0.0:110        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:143        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:993        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:995        0.0.0.0:*        LISTEN        4368/dovecot
 tcp6       0        0 :::110                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::143                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::993                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::995                :::*          LISTEN        4368/dovecot

[root@localhost]#

ご覧のとおり、dovecotは指定されたポートでIPv4とIPv4をリッスンしています。

POP3 110
POP3 995
IMAP 143
IMAP 993

次に、ファイアウォールルールをいくつか作成する必要があります。

[root@localhost]# firewall-cmd --permanent --add-port=110/tcp 
success
 
[root@localhost]# firewall-cmd --permanent --add-port=143/tcp 
success
 
[root@localhost]# firewall-cmd --permanent --add-port=995/tcp 
success
 
[root@localhost]# firewall-cmd --permanent --add-port=993/tcp 
success
 
[root@localhost]# firewall-cmd --reload 
success
 
[root@localhost]#

当社の受信メールサーバは、要求のために受け入れているPOP3POP3SIMAP、およびIMAPSをLAN上のホストに。

Port Scanning host: 192.168.1.143

   Open TCP Port:   21          ftp 
   Open TCP Port:   22          ssh 
   Open TCP Port:   25          smtp 
   Open TCP Port:   80          http 
   Open TCP Port:   110         pop3 
   Open TCP Port:   143         imap 
   Open TCP Port:   443         https 
   Open TCP Port:   993         imaps 
   Open TCP Port:   995         pop3s

CentOSへのFTPのインストールについて詳しく説明する前に、FTPの使用法とセキュリティについて少し学ぶ必要があります。 FTPは、コンピュータシステム間でファイルを転送するための非常に効率的で洗練されたプロトコルです。FTPは、ここ数十年にわたって使用され、改良されてきました。待ち時間のあるネットワークを介してファイルを効率的に転送したり、速度を上げたりするには、FTPが最適です。SAMBAやSMBよりもそうです。

ただし、FTPにはいくつかのセキュリティ問題があります。実際、いくつかの深刻なセキュリティ問題。FTPは、非常に弱いプレーンテキスト認証方法を使用します。このため、認証されたセッションはsFTPまたはFTPSに依存する必要があります。ここで、TLSはログインおよび転送セッションのエンドツーエンド暗号化に使用されます。

上記の警告がありますが、昔ながらのFTPは、今日でもビジネス環境で使用されています。主な用途は、匿名FTPファイルリポジトリです。これは、ファイルをダウンロードまたはアップロードするための認証が保証されていない状況です。匿名FTPの使用例は次のとおりです。

  • 大規模なソフトウェア会社は依然として匿名のftpリポジトリを使用しており、インターネットユーザーはシェアウェアやパッチをダウンロードできます。

  • インターネットユーザーが公開ドキュメントをアップロードおよびダウンロードできるようにします。

  • 一部のアプリケーションは、暗号化されたアーカイブログまたは構成ファイルをFTP経由でリポジトリに自動的に送信します。

したがって、CentOS管理者として、FTPをインストールして構成できることは、依然として設計されたスキルです。

と呼ばれるFTPデーモンを使用します vsFTP、または非常に安全なFTPデーモン。vsFTPは、しばらくの間開発で使用されてきました。安全で、インストールと構成が簡単で、信頼性が高いという評判があります。

Step 1 − YUM PackageManagerを使用してvsFTPdをインストールします。

[root@centos]# yum -y install vsftpd.x86_64

Step 2 −systemctlを使用して起動時に起動するようにvsFTPを構成します。

[root@centos]# systemctl start vsftpd 
[root@centos]# systemctl enable vsftpd 
Created symlink from /etc/systemd/system/multi-
user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

Step 3 −FTP制御および転送セッションを許可するようにFirewallDを構成します。

[root@centos]# firewall-cmd --add-service=ftp --permanent 
success 
[root@centos]#

FTPデーモンが実行されていることを確認します。

[root@centos]# netstat -antup | grep vsftp 
tcp6       0       0 :::21       :::*       LISTEN       13906/vsftpd         
[root@centos]#

Step 4 −匿名アクセス用にvsFTPDを構成します。

ルートFTPディレクトリを作成します

[root@centos]# mkdir /ftp

FTPルートの所有者とグループをftpに変更します

[root@centos]# chown ftp:ftp /ftp
Set minimal permissions for FTP root:

[root@centos]# chmod -R 666 /ftp/

[root@centos]# ls -ld /ftp/
drw-rw-rw-. 2 ftp ftp 6 Feb 27 02:01 /ftp/

[root@centos]#

この場合、ルートFTPツリー全体への読み取り/書き込みアクセスをユーザーに許可しました。

/etc/vsftpd/vsftpd.confを構成します」

[root@centos]# vim /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.

vsftp.confファイルの次のディレクティブを変更する必要があります。

  • anon_mkdir_write_enable = YESのコメントを解除して、匿名アップロードを有効にします

  • アップロードされたファイルをシステムのftpユーザーが所有するようにchownします

    chown_uploads = YES

    chown_username = ftp

  • vsftpで使用されるシステムユーザーをftpユーザーに変更します:nopriv_user = ftp

  • サインインする前にユーザーが読むためのカスタムバナーを設定します。

    ftpd_banner =匿名FTPリポジトリへようこそ。すべての接続が監視され、ログに記録されます。

  • IPv4接続のみを設定しましょう-

    リッスン=はい

    listen_ipv6 = NO

次に、vsftpサービスを再起動またはHUPして、変更を適用する必要があります。

[root@centos]# systemctl restart vsftpd

FTPホストに接続して、FTPデーモンが応答していることを確認しましょう。

[root@centos rdc]# ftp 10.0.4.34 
Connected to localhost (10.0.4.34). 
220 Welcome to our Anonymous FTP Repo. All connections are monitored and logged. 
Name (localhost:root): anonymous 
331 Please specify the password. 
Password: 
'230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp>

管理者としてのCentOSでのリモート管理について話すときは、2つの方法を検討します。

  • コンソール管理
  • GUI管理

リモートコンソール管理

リモートコンソール管理とは、sshなどのサービスを介してコマンドラインから管理タスクを実行することを意味します。CentOS Linuxを効果的に使用するには、管理者として、コマンドラインに習熟している必要があります。Linuxの中心は、コンソールから使用するように設計されています。今日でも、一部のシステム管理者はコマンドの能力を好み、物理端末やGUIがインストールされていない最低限のLinuxボックスを実行することでハードウェアのコストを節約しています。

リモートGUI管理

リモートGUI管理は通常、リモートXセッションまたはVNCなどのGUIアプリケーション層プロトコルの2つの方法で実行されます。それぞれに長所と短所があります。ただし、ほとんどの場合、VNCは管理に最適です。これにより、XWindowsプロトコルをネイティブにサポートしていないWindowsやOSXなどの他のオペレーティングシステムからのグラフィカルな制御が可能になります。

リモートXセッションの使用は、X-WindowのウィンドウマネージャーとXで実行されているDesktopManagerの両方にネイティブです。ただし、Xセッションアーキテクチャ全体は主にLinuxで使用されます。すべてのシステム管理者が、リモートXセッションを確立するためのLinuxラップトップを手元に持っているわけではありません。したがって、VNCサーバーの適合バージョンを使用するのが最も一般的です。

VNCの最大の欠点は次のとおりです。VNCは、リモートXセッションなどのマルチユーザー環境をネイティブにサポートしていません。したがって、エンドユーザーへのGUIアクセスには、リモートXSessionが最適です。ただし、主にCentOSサーバーのリモート管理に関心があります。

複数の管理者とリモートXセッションを使用する数百人のエンドユーザー向けにVNCを構成する方法について説明します。

リモートコンソールアクセス用のSSHによるセキュリティの基盤を築く

ssh または Secure ShellLinuxサーバーをリモート管理するための標準になりました。telnetとは異なりSSHは、通信の信頼性とエンドツーエンド暗号化にTLSを使用します。適切に構成されている場合、管理者はパスワードとサーバーの両方がリモートで信頼されていることをかなり確信で​​きます。

SSHを設定する前に、基本的なセキュリティと最も一般的でないアクセスについて少し話しましょう。SSHがデフォルトのポート22で実行されている場合。遅かれ早かれ、一般的なユーザー名とパスワードに対するブルートフォース辞書攻撃を受けることになります。これはちょうど領土に付属しています。拒否ファイルに追加するホストの数に関係なく、それらは毎日異なるIPアドレスから受信されます。

いくつかの一般的なルールを使用すると、積極的な手順を実行して、悪意のあるユーザーに時間を無駄にすることができます。以下は、本番サーバーでのリモート管理にSSHを使用する際に従うべきセキュリティのいくつかのルールです-

  • 一般的なユーザー名またはパスワードは絶対に使用しないでください。システム上のユーザー名は、システムのデフォルトにしたり、次のように会社の電子メールアドレスに関連付けたりしないでください。[email protected]

  • SSH経由でルートアクセスまたは管理アクセスを許可しないでください。SSHで認証されたら、一意のユーザー名とsuを使用してrootまたは管理アカウントを作成します。

  • パスワードポリシーは必須です:「This&IS&a&GUD&P @ ssW0rd&24&me」のような複雑なSSHユーザーパスワード。数か月ごとにパスワードを変更して、ブルートフォース攻撃の影響を受けにくくします。

  • 放棄されたアカウントまたは長期間使用されていないアカウントを無効にします。採用担当マネージャーが、1か月間面接を行わないことを示すボイスメールを持っている場合。たとえば、テクノロジーに精通した個人が多くの時間を費やすことにつながる可能性があります。

  • 毎日ログを監視してください。システム管理者として、システムとセキュリティのログを確認するために、毎朝少なくとも30〜40分を費やしてください。求められた場合は、積極的に行動しない時間がないことを全員に知らせてください。この方法は、問題がエンドユーザーや企業の利益に現れる前に警告の兆候を特定するのに役立ちます。

Note On Linux Security− Linux管理に関心のある人は、現在のサイバーセキュリティのニュースとテクノロジーを積極的に追求する必要があります。他のオペレーティングシステムが侵害されているという話をよく耳にしますが、安全でないLinuxボックスは、サイバー犯罪者にとって求められている宝物です。高速インターネット接続でのLinuxのパワーにより、熟練したサイバー犯罪者はLinuxを使用して他のオペレーティングシステムへの攻撃を利用できます。

リモートアクセス用のSSHをインストールして構成する

Step 1 −SSHサーバーとすべての依存パッケージをインストールします。

[root@localhost]# yum -y install openssh-server 
'Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
* base: repos.centos.net 
* extras: repos.dfw.centos.com 
* updates: centos.centos.com 
Resolving Dependencies 
   --> Running transaction check 
   ---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed 
   --> Finished Dependency Resolution 
Dependencies Resolved

Step 2 −シェルアクセス用に追加するために安全な定期的な使用を行います。

[root@localhost ~]# useradd choozer 
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G 
wheel -a choozer

Note− SSHアクセスが認証されると、rootにsuできるようにする新しいユーザーをwheelグループに追加しました。また、一般的な単語リストにはないユーザー名を使用しました。これにより、SSHが攻撃されたときにアカウントがロックアウトされることはありません。

sshdサーバーの構成設定を保持するファイルは/ etc / ssh / sshd_configです。

最初に編集したい部分は-

LoginGraceTime 60m
PermitRootLogin no

Step 3−SSHデーモンsshdをリロードします。

[root@localhost]# systemctl reload sshd

ログアウトの猶予期間を60分に設定することをお勧めします。一部の複雑な管理タスクは、デフォルトの2分を超える場合があります。変更を構成または調査するときにSSHセッションがタイムアウトすることほどイライラすることはありません。

Step 4 −ルート資格情報を使用してログインしてみましょう。

bash-3.2# ssh centos.vmnet.local 
[email protected]'s password:   
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Step 5-私たちは、もはやとssh経由でリモートからログインすることができ、ルート資格情報。それでは、非特権ユーザーアカウントにログインし、rootアカウントにsuしてみましょう。

bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:

[root@localhost choozer]#

Step 6−最後に、SSHDサービスが起動時にロードされ、firewalldが外部SSH接続を許可することを確認しましょう。

[root@localhost]# systemctl enable sshd

[root@localhost]# firewall-cmd --permanent --add-service=ssh 
success

[root@localhost]# firewall-cmd --reload 
success
 
[root@localhost]#

これでSSHがセットアップされ、リモート管理の準備が整いました。企業の境界によっては、企業LANの外部でSSHリモート管理を許可するようにパケットフィルタリング境界デバイスを構成する必要がある場合があります。

リモートCentOS管理用にVNCを構成する

CentOS 6〜7でVNCを介してリモートCentOS管理を有効にする方法はいくつかありますが、最も簡単ですが、最も制限的な方法は、vinoというパッケージを使用することです。Vinoは、Gnomeデスクトッププラットフォームを中心に設計されたLinux用の仮想ネットワークデスクトップ接続アプリケーションです。したがって、インストールはGnomeDesktopで完了したと見なされます。Gnomeデスクトップがインストールされていない場合は、続行する前にインストールしてください。Vinoは、デフォルトでGnomeGUIインストールでインストールされます。

GnomeでVinoとの画面共有を構成するには、画面共有のCentOSシステム環境設定に移動します。

Applications->System Tools->Settings->Sharing

VNCデスクトップ共有の構成に関する注意事項-

  • Disable New Connections must ask for access−このオプションでは、すべての接続をOKするために物理的なアクセスが必要になります。このオプションは、誰かが物理デスクトップにいない限り、リモート管理を防ぎます。

  • Enable Require a password−これはユーザーパスワードとは別のものです。仮想デスクトップへのアクセスを制御しますが、ロックされたデスクトップにアクセスするにはユーザーパスワードが必要です(これはセキュリティに役立ちます)。

  • Forward UP&P Ports: If available leave disabled− UP&Pポートを転送すると、レイヤー3デバイスのユニバーサルプラグアンドプレイ要求が送信され、ホストへのVNC接続が自動的に許可されます。これは欲しくない。

vinoがVNCポート5900でリッスンしていることを確認してください。

[root@localhost]# netstat -antup | grep vino 
tcp        0        0 0.0.0.0:5900        0.0.0.0:*        LISTEN        4873/vino-server
tcp6       0        0 :::5900                :::*          LISTEN        4873/vino-server
   
[root@localhost]#

次に、着信VNC接続を許可するようにファイアウォールを構成しましょう。

[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp 
success

[root@localhost]# firewall-cmd --reload 
success

[root@localhost rdc]#

最後に、ご覧のとおり、CentOS Boxを接続して、WindowsまたはOSXのいずれかのVNCクライアントで管理できます。

SSHについて説明したのと同じVNCのルールに従うことが重要です。SSHと同様に、VNCはIP範囲全体で継続的にスキャンされ、脆弱なパスワードがないかテストされます。コンソールタイムアウトを使用してデフォルトのCentOSログインを有効のままにしておくと、リモートVNCセキュリティに役立つことにも注意してください。攻撃者はVNCとユーザーパスワードを必要とするため、画面共有パスワードが異なり、ユーザーパスワードと同じように推測しにくいことを確認してください。

VNC画面共有パスワードを入力した後、ロックされたデスクトップにアクセスするためのユーザーパスワードも入力する必要があります。

Security Note−デフォルトでは、VNCは暗号化されたプロトコルではありません。したがって、VNC接続は暗号化のためにSSHを介してトンネリングする必要があります。

VNCを介してSSHトンネルを設定する

SSHトンネルを設定すると、VNC接続をトンネリングするためのSSH暗号化のレイヤーが提供されます。もう1つの優れた機能は、SSH圧縮を使用して、VNCGUI画面の更新に別の圧縮レイヤーを追加することです。CentOSサーバーの管理を扱う場合、より安全で高速なことは常に良いことです。

したがって、VNC接続を開始するクライアントから、リモートSSHトンネルを設定しましょう。このデモンストレーションでは、OS Xを使用しています。最初に、rootsudo-sを実行する必要があります。

bash-3.2# sudo -s 
password:

ユーザーパスワードを入力すると、#プロンプトが表示されたルートシェルが作成されます-

bash-3.2#

それでは、SSHトンネルを作成しましょう。

ssh -f [email protected] -L 2200:192.168.1.143:5900 -N

このコマンドを分解してみましょう-

  • ssh −ローカルのsshユーティリティを実行します

  • -f −タスクが完全に実行された後、sshはバックグラウンドで実行する必要があります

  • [email protected] −VNCサービスをホストしているCentOSサーバー上のリモートsshユーザー

  • -L 2200:192.168.1.143:5900 −トンネルを作成します[ローカルポート]:[リモートホスト]:[VNCサービスのリモートポート]

  • -N リモートシステムでコマンドを実行したくないことをsshに通知します

bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:

リモートsshユーザーのパスワードを正常に入力すると、sshトンネルが作成されます。さあ、クールな部分です!接続するには、VNCクライアントをトンネルのポート(この場合はポート2200)のローカルホストに向けます。以下は、MacラップトップのVNCクライアントの構成です。

そして最後に、リモートVNCデスクトップ接続です!

SSHトンネリングの優れた点は、ほとんどすべてのプロトコルに使用できることです。SSHトンネルは通常、ISPによる出力および入力ポートフィルタリングをバイパスし、他のセッション層の監視を回避しながらアプリケーション層IDS / IPSをだますために使用されます。

  • ISPは、ビジネス以外のアカウントのポート5900をフィルタリングできますが、ポート22でSSHを許可します(または、ポート22がフィルタリングされている場合は、任意のポートでSSHを実行できます)。

  • アプリケーションレベルのIPSおよびIDSはペイロードを調べます。たとえば、一般的なバッファオーバーフローやSQLインジェクション。エンドツーエンドのSSH暗号化は、アプリケーション層のデータを暗号化します。

SSHトンネリングは、Linux管理者のツールボックスにある優れたツールです。ただし、管理者として、SSHトンネリングにアクセスできる特権の低いユーザーの可用性をロックダウンすることを検討したいと思います。

Administration Security Note− SSHトンネリングの制限は、管理者の側で考える必要があるものです。そもそもユーザーがSSHトンネリングを必要とする理由を評価する。ユーザーがトンネリングを必要とするもの。実際のリスク確率と最悪の場合の影響とともに。

これは、中級レベルの入門書の領域外に広がる高度なトピックです。このトピックに関する調査は、CentOSLinux管理の上位層に到達したい人に推奨されます。

リモートX-WindowsにSSHトンネルを使用する

LinuxでのX-Windowsのデザインは、Windowsのデザインに比べて本当にすっきりしています。別のLinuxボックスからリモートLinuxボックスを制御したい場合は、Xに組み込まれているメカニズムを利用できます。

X-Windows(しばしば単に「X」と呼ばれる)は、あるLinuxボックスから発生したアプリケーションウィンドウを別のLinuxボックス上のXの表示部分に表示するメカニズムを提供します。したがって、SSHを介して、X-Windowsアプリケーションを世界中の別のLinuxボックスのディスプレイに転送するように要求できます。

sshトンネルを介してXアプリケーションをリモートで実行するには、1つのコマンドを実行するだけです。

[root@localhost]# ssh -X [email protected]

The syntax is − ssh -X [user] @ [host]であり、ホストは有効なユーザーでsshを実行している必要があります。

以下は、リモートXWindowssshトンネルを介してUbuntuワークステーションで実行されているGIMPのスクリーンショットです。

別のLinuxサーバーまたはワークステーションからリモートでアプリケーションを実行するのは非常に簡単です。Xセッション全体を開始し、いくつかの方法でデスクトップ環境全体をリモートで使用することもできます。

  • XDMCP

  • NXなどのヘッドレスソフトウェアパッケージ

  • XおよびGnomeやKDEなどのデスクトップマネージャーでの代替ディスプレイとデスクトップの構成

この方法は、物理的なディスプレイがないヘッドレスサーバーで最も一般的に使用されており、実際には中級レベルの入門書の範囲を超えています。ただし、利用可能なオプションを知っておくとよいでしょう。

CentOSトラフィックモニタリングの拡張機能を追加できるサードパーティツールがいくつかあります。このチュートリアルでは、メインのCentOSディストリビューションリポジトリとFedoraEPELリポジトリにパッケージ化されているものに焦点を当てます。

管理者が(何らかの理由で)メインのCentOSリポジトリにツールしか残されていない状況は常にあります。説明されているほとんどのユーティリティは、物理アクセスのシェルを持つ管理者が使用するように設計されています。アクセス可能なWebGUIを使用してトラフィックを監視する場合は、ntop-ngやNagiosなどのサードパーティユーティリティを使用するのが最善の選択です(このような機能を最初から再作成するのではなく)。

構成可能な両方のWebGUIソリューションの詳細については、以下のリンクから調査を開始してください。

LAN / WANシナリオのトラフィック監視

Nagios

Nagiosは長い間存在していたため、試行錯誤されています。かつてはすべて無料でオープンソースでしたが、その後、エンタープライズの高度化の必要性をサポートする有料ライセンスモデルを備えたエンタープライズソリューションに進化しました。したがって、Nagiosでの展開を計画する前に、オープンソースライセンスバージョンがニーズを満たしていることを確認するか、エンタープライズ予算を念頭に置いて支出を計画してください。

ほとんどのオープンソースのNagiosトラフィック監視ソフトウェアは次の場所にあります。 https://www.nagios.org

Nagiousの要約された履歴については、Nagiosの公式履歴ページをご覧ください。 https://www.nagios.org/about/history/

ntopng

WebGUIを介した帯域幅とトラフィックの監視を可能にするもう1つの優れたツールは、ntopngと呼ばれますntopngはUnixユーティリティntopに似ており、LANまたはWAN全体のデータを収集できます。管理、構成、およびグラフ作成用のWeb GUIを提供すると、IT部門全体で簡単に使用できるようになります。

Nagiousと同様に、ntopngにはオープンソースバージョンと有料エンタープライズバージョンの両方があります。詳細についてはntopng、ウェブサイトをご覧ください。http://www.ntop.org/

FedoraEPELリポジトリのインストール─エンタープライズLinux用の追加パッケージ

トラフィック監視に必要なツールのいくつかにアクセスするには、EPELリポジトリを使用するようにCentOSシステムを構成する必要があります。

EPELリポジトリは、CentOSによって公式に維持またはサポートされていません。ただし、CentOS、Fedora Core、またはRed Hat LinuxEnterpriseのいずれにも含まれていないEnterpriseLinuxプロフェッショナルによって一般的に使用されるパッケージに対処するために、FedoraCoreボランティアのグループによって維持されています。

Caution

EPELリポジトリはCentOSの公式ではなく、一般的な依存関係を持つ本番サーバーの互換性と機能を損なう可能性があることに注意してください。このことを念頭に置いて、システムクリティカルボックスに展開する前に、本番環境と同じサービスを実行している非本番サーバーで常にテストすることをお勧めします。

実際、CentOSで他のサードパーティリポジトリよりもEHELリポジトリを使用する最大の利点は、バイナリが汚染されていないことを確認できることです。信頼できないソースからのリポジトリを使用しないことがベストプラクティスと見なされます。

とはいえ、公式のEPELリポジトリはCentOSと非常に一般的であるため、YUMを介して簡単にインストールできます。

[root@CentOS rdc]# yum -y install epel-release
 Loaded plugins: fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
 * base: repo1.dal.innoscale.net
 * extras: repo1.dal.innoscale.net
 * updates: mirror.hmc.edu
Resolving Dependencies
   --> Running transaction check
   ---> Package epel-release.noarch 0:7-9 will be installed
   --> Finished Dependency Resolution
Dependencies Resolved
--{ condensed output }--

EPELリポジトリをインストールした後、更新する必要があります。

[root@CentOS rdc]# yum repolist 
Loaded plugins: fastestmirror, langpacks 
epel/x86_64/metalink
|  11 kB  00:00:00      
epel
| 4.3 kB  00:00:00      
(1/3): epel/x86_64/group_gz
| 170 kB  00:00:00      
(2/3): epel/x86_64/updateinfo
| 753 kB  00:00:01      
(3/3): epel/x86_64/primary_db
--{ condensed output }--

この時点で、EPELリポジトリが構成され、使用できるようになっているはずです。インターフェイス帯域幅監視用のnloadをインストールすることから始めましょう。

このチュートリアルで焦点を当てるツールは次のとおりです。

  • nload
  • ntop
  • ifstst
  • iftop
  • vnstat
  • ネットホッグ
  • Wireshark
  • TCPダンプ
  • Traceroute

これらはすべて、Linuxエンタープライズのトラフィックを監視するための標準です。それぞれの使用法は単純なものから高度なものまであるため、WiresharkやTCPDumpなどのツールについて簡単に説明します。

nloadをインストールして使用する

CentOSにEPELリポジトリをインストールして構成すると、nloadをインストールして使用できるようになります。このユーティリティは、インターフェイスごとの帯域幅をリアルタイムでグラフ化するように設計されています。

他のほとんどの基本インストールと同様に、nloadはYUMパッケージマネージャーを介してインストールされます。

[root@CentOS rdc]# yum -y install nload
Resolving Dependencies
--> Running transaction check
---> Package nload.x86_64 0:0.7.4-4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================== 
=============================================================================== 
 Package                             Arch
 Version                           Repository                          Size 
=============================================================================== 
=============================================================================== 
Installing: 
 nload                               x86_64
 0.7.4-4.el7                        epel                                70 k  
Transaction Summary
=============================================================================== 
=============================================================================== 
Install  1 Package
Total download size: 70 k
Installed size: 176 k
Downloading packages:
--{ condensed output }--

これでnloadがインストールされ、使用は非常に簡単です。

[root@CentOS rdc]# nload enp0s5

nloadは、指定されたインターフェイスを監視します。この場合、enp0s5は、ネットワークトラフィックの負荷と総帯域幅の使用量について、端末からリアルタイムでイーサネットインターフェイスを提供します。

ご覧のとおり、nloadは、ハッシュマーク「#」を使用してデータフローの物理的表現を提供するとともに、指定されたインターフェイスからの受信データと送信データの両方をグラフ化します。

描かれているスクリーンショットは、バックグラウンドデーモントラフィックがロードされている単純なWebページです。

nloadの一般的なコマンドラインスイッチは次のとおりです。

コマンド アクション
-a 期間
-t ミリ秒単位の時間更新間隔。デフォルトは500です。
-u トラフィック測定値の表示を設定しますh
-U -uと同じオプションで合計イン/アウトトラフィック測定単位を設定します

nloadの標準構文は次のとおりです。

nload [options] <interface>

インターフェイスが指定されていない場合、nloadは最初のイーサネットインターフェイスを自動的に取得します。総データの入出力をメガバイトで、現在のデータ転送速度をメガビットで測定してみましょう。

[root@CentOS rdc]# nload -U M -u m

現在のインターフェースに出入りするデータはメガビット/秒で測定され、出入りするデータの合計を表す各「Ttl」行はメガバイトで表示されます。

nloadは、管理者がインターフェイスを通過したデータの量と、指定したインターフェイスに現在出入りしているデータの量を確認するのに役立ちます。

nloadを閉じずに他のインターフェイスを表示するには、左/右矢印キーを使用するだけです。これにより、システムで使用可能なすべてのインターフェースが循環します。

-mスイッチ-を使用して、複数のインターフェイスを同時に監視することができます。

[root@CentOS rdc]# nload -u K -U M -m lo -m enp0s5

2つのインターフェースを同時に負荷監視(loおよびenp0s5)−

systemdは、CentOSLinuxのシステムログの管理方法を変更しました。システム上のすべてのデーモンがログを個々の場所に配置する代わりに、ログエントリを並べ替えてフィルタリングする主な方法としてtailgrepなどのツールを使用します。journald システムログの分析に単一の管理ポイントをもたらしました。

systemdロギングの背後にある主なコンポーネントは、journal、jounralctl、journald.confです。

journaldはメインのロギングデーモンであり、journald.confを編集して構成され、journalctljournaldによってログに記録されたイベントを分析するために使用されます

journaldによってログに記録されるイベントには、カーネルイベント、ユーザープロセス、およびデーモンサービスが含まれます。

正しいシステムタイムゾーンを設定する

journalctlを使用する前に、システム時刻が正しい時刻に設定されていることを確認する必要があります。これを行うには、timedatectlを使用します

現在のシステム時刻を確認しましょう。

[root@centos rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[root@centos rdc]#

現在、システムはローカルタイムゾーンに対して正しいです。システムがそうでない場合は、正しいタイムゾーンを設定しましょう。設定を変更した後、CentOSは現在のタイムゾーンからのタイムゾーンオフセットを自動的に計算し、システムクロックをすぐに調整します。

timedatectl −を使用してすべてのタイムゾーンを一覧表示しましょう。

[root@centos rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

これは、timedatectllist-timezonesからの競合する出力です。特定のローカルタイムゾーンを見つけるには、grepコマンドを使用できます-

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[root@centos rdc]#

CentOSで使用されるラベルは通常、スペースではなくアンダースコアが付いた国/地域です(New_Yorkと "New York")。

それでは、タイムゾーンを設定しましょう-

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

システムクロックは自動的に時間を調整する必要があります。

journalctlを使用してログを分析する

journalctlを使用する場合の一般的なコマンドラインスイッチ-

スイッチ アクション
-k カーネルメッセージのみを一覧表示します
-u 特定のユニット(httpd、sshdなど)ごとのリスト
-b ラベルオフセットを起動します
-o 出力形式をログに記録します
-p ログタイプ(名前または番号)でフィルタリングします
-F フィールド名またはフィールド名値
- UTC UTCオフセットでの時間
-以来 時間枠でフィルタリング

ブートログを調べる

まず、CentOSLinuxでブートログを調べて構成します。最初に気付くのは、CentOSはデフォルトで、再起動後も永続するブートログを保存しないことです。

再起動インスタンスごとのブートログを確認するには、次のコマンドを発行できます-

[root@centos rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[root@centos rdc]#

システムを再起動すると、別のエントリが表示されます。

[root@centos rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[root@centos rdc]#

それでは、最後のブートログインスタンスを調べてみましょう-

root@centos rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

上記は、前回の起動からの要約出力です。また、数時間、数日、数週間、数か月、さらには数年のブートログを参照することもできます。ただし、デフォルトでは、CentOSは永続的なブートログを保存しません。ブートログを永続的に保存できるようにするには、いくつかの構成変更を行う必要があります-

  • ブートログの中央ストレージポイントを作成します
  • 新しいログフォルダに適切な権限を付与します
  • 永続ログ用にjournald.confを構成します

永続的なブートログのブート場所を構成する

journaldが永続的なブートログを保存する最初の場所は/ var / log / journalです。これはデフォルトでは存在しないので、作成しましょう-

[root@centos rdc]# mkdir /var/log/journal

それでは、ディレクトリに適切な権限を与えましょう。journaldデーモンアクセス-

systemd-tmpfiles --create --prefix /var/log/journal

最後に、ジャーナルに永続的なブートログを保存するように伝えましょう。でvimのか、お好きなテキストエディタ、オープン/etc/systemd/jounrald.conf」

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

私たちが関わっている行は、Storage =です。最初にコメント#を削除してから、に変更しますStorage = persistent上に描かれているように。CentOSシステムを保存して再起動し、journalctllist-bootsを実行するときに複数のエントリが存在するように注意してください。

Note− VPSプロバイダーからのような絶えず変化するマシンIDにより、journaldが永続的なブートログの保存に失敗する可能性があります。このようなシナリオには多くの回避策があります。もっともらしいVPS回避策を見つけた人からの信頼できるアドバイスに従うよりも、CentOS管理フォーラムに投稿された現在の修正を熟読するのが最善です。

特定のブートログを調べるには、journald --list-bootsを使用して各オフセットを取得し、-bスイッチを使用する必要があります。したがって、2番目のブートログを確認するために使用します-

journalctl -b -2

ブートログオフセットが指定されていない-bのデフォルトは、最後の再起動後の現在のブートログになります。

ログタイプによるログの分析

ジャーナルからのイベントには番号が付けられ、7つの異なるタイプに分類されます-

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

したがって、すべての警告を確認したい場合は、journalctl −を介して次のコマンドを発行できます。

[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742 (v01 PTLTD ? APIC 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C (v01 PTLTD $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

上記は、システム上の過去4日間のすべての警告を示しています。

systemdを使用してログを表示および閲覧する新しい方法は、慣れるためにほとんど練習や調査を必要としません。ただし、出力形式が異なり、パッケージ化されたすべてのデーモンログをユニバーサルにすることに特に注意する必要があるため、採用する価値があります。journaldは、従来のログ分析方法に比べて優れた柔軟性と効率を提供します。

標準のバックアップ計画を展開するためのCentOSに固有の方法を検討する前に、まず、標準レベルのバックアップポリシーの一般的な考慮事項について説明します。私たちが最初に慣れたいのは3-2-1 backup rule

3-2-1バックアップ戦略

業界全体で、3-2-1バックアップモデルという用語をよく耳にします。これは、バックアップ計画を実装するときに生きるための非常に優れたアプローチです。3-2-1は次のように定義されます。3データのコピー; たとえば、作業コピーがある場合があります。rsyncを使用して冗長性を確保するように設計されたCentOSサーバーに配置されたコピー。ローテーションされたオフサイトUSBバックアップは、バックアップサーバー上のデータから作成されます。2さまざまなバックアップメディア。この場合、実際には3つの異なるバックアップメディアがあります。ラップトップまたはワークステーションのSSD上の作業コピー、RADI6アレイ上のCentOSサーバーデータ、およびUSBドライブに配置されたオフサイトバックアップです。1オフサイトでのデータのコピー。USBドライブを毎晩オフサイトでローテーションしています。もう1つの最新のアプローチは、クラウドバックアッププロバイダーです。

システムの回復

ベアメタル計画を復元するには、単にそのまま全てのデータをオンラインに不可欠なシステムを取得するためにCentOSの管理者がレイアウトされた計画です。100%のシステム障害と過去のすべてのシステムハードウェアの損失を想定すると、管理者は、最小限のダウンタイムで、完全なユーザーデータでアップタイムを達成する計画を立てる必要があります。Linuxで使用されるモノリシックカーネルは、実際には、Windowsよりもシステムイメージを使用したベアメタル復元をはるかに簡単にします。Windowsがマイクロカーネルアーキテクチャを使用している場合。

完全なデータ復元とベアメタル回復は、通常、主要な運用サーバーの動作中の構成済み実稼働ディスクイメージ、3-2-1ルールに準拠したユーザーデータの冗長バックアップなどの方法を組み合わせて実行されます。信頼できる会社の担当者へのアクセスが制限された、安全で耐火性の金庫に保管されている可能性のある一部の機密ファイルですら。

ネイティブCentOSツールを使用したマルチフェーズベアメタル復元およびデータリカバリ計画は、次のもので構成されます。

  • 構成済みサーバーの実稼働ディスクイメージを作成および復元するためのdd

  • すべてのユーザーデータの増分バックアップを作成するrsync

  • 管理者からのパスワードとメモを含むファイルの暗号化されたバックアップを保存するためのtarとgzip。通常、これはUSBドライブに配置し、暗号化して、上級管理職がアクセスできる金庫にロックすることができます。また、これにより、現在の管理者が宝くじに当選し、どこかの日当たりの良い島に姿を消した場合に、他の誰かが重要なセキュリティ資格情報を知ることができます。

ハードウェア障害または災害が原因でシステムがクラッシュした場合、以下は操作の復元のさまざまなフェーズになります-

  • 構成済みのベアメタルイメージを使用して稼働中のサーバーを構築する

  • バックアップから稼働中のサーバーにデータを復元する

  • 最初の2つの操作を実行するために必要な資格情報に物理的にアクセスできる

ファイルレベルのバックアップにrsyncを使用する

rsyncは、ファイルのディレクトリをローカルまたは別のサーバーに同期するための優れたユーティリティです。rsyncはシステム管理者によって何年も使用されてきたため、データをバックアップする目的で非常に洗練されています。著者の意見では、同期の最も優れた機能の1つは、コマンドラインからスクリプトを作成できることです。

このチュートリアルでは、rsyncについてさまざまな方法で説明します-

  • いくつかの一般的なオプションを調べて話し合う
  • ローカルバックアップを作成する
  • SSH経由でリモートバックアップを作成する
  • ローカルバックアップを復元する

rsyncはその目的にちなんで名付けられました:リモート同期であり、強力で柔軟性があります。

以下は、sshを介した基本的なrsyncリモートバックアップです。

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ 
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

次の同期により、LANを介して約2.3GBのデータが送信されました。rsyncの利点は、ファイルごとにブロックレベルで段階的に機能することです。つまり、1MBのテキストファイルで2文字だけを変更すると、次の同期で1つまたは2つのブロックだけがLANを介して転送されます。

さらに、増分機能を無効にして、CPU使用率を下げるために使用されるネットワーク帯域幅を増やすことができます。これは、1Gb専用のバックアップLANで10分ごとに複数の10MBデータベースファイルを絶えずコピーする場合に推奨される場合があります。理由は次のとおりです。これらは常に変化し、10分ごとに段階的に送信され、リモートCPUの負荷に負担がかかる可能性があります。転送の合計負荷は5分を超えないため、データベースファイル全体を同期したい場合があります。

以下は、最も一般的なスイッチですrsyncを-

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path

スイッチ アクション
-a アーカイブモードで、-r、-p、-t、-g、-lを想定しています
-d ディレクトリツリーのみを同期し、ファイルは同期しません
-r ディレクトリへの再帰
-l シンボリックリンクをシンボリックリンクとしてコピーする
-p 権限を保持する
-g グループを保存
-v 冗長出力
-z ネットワークリンクを介して圧縮
-バツ 拡張属性を保持する
-A ACLを保持する
-t タイムスタンプを保持する
-W インクリメンタルブロックではなく、ファイル全体を転送する
-u ターゲット上のファイルを上書きしないでください
- 進捗 転送の進行状況を表示する
-削除 ターゲット上の古いファイルを削除します
-最大サイズ= XXX 同期する最大ファイルサイズ

いつrsyncを使用するか

私の個人的なrsyncの好みは、ソースホストからターゲットホストにファイルをバックアップするときです。たとえば、データリカバリ用のすべてのホームディレクトリ、またはディザスタリカバリ用のオフサイトおよびクラウドへのディレクトリ。

rsyncを使用したローカルバックアップ

あるホストから別のホストにファイルを転送する方法はすでに見てきました。同じ方法を使用して、ディレクトリとファイルをローカルで同期できます。

rootユーザーのディレクトリに/ etc /の手動増分バックアップを作成しましょう。

まず、同期バックアップ用に〜/ rootからディレクトリを作成する必要があります-

[root@localhost rdc]# mkdir /root/etc_baks

次に、十分な空きディスク容量があることを確認します。

[root@localhost rdc]# du -h --summarize /etc/ 
49M    /etc/
 
[root@localhost rdc]# df -h 
Filesystem           Size     Used     Avail    Use%     Mounted on 
/dev/mapper/cl-root   43G      15G        28G    35%         /

/ etc /ディレクトリ全体を同期するのに適しています-

rsync -aAvr /etc/ /root/etc_baks/

同期された/ etc /ディレクトリ-

[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x.   3 root root      101 Feb  1 19:40 abrt
-rw-r--r--.   1 root root       16 Feb  1 19:51 adjtime
-rw-r--r--.   1 root root     1518 Jun  7  2013 aliases
-rw-r--r--.   1 root root    12288 Feb 27 19:06 aliases.db
drwxr-xr-x.   2 root root       51 Feb  1 19:41 alsa
drwxr-xr-x.   2 root root     4096 Feb 27 17:11 alternatives
-rw-------.   1 root root      541 Mar 31  2016 anacrontab
-rw-r--r--.   1 root root       55 Nov  4 12:29 asound.conf
-rw-r--r--.   1 root root        1 Nov  5 14:16 at.deny
drwxr-xr-x.   2 root root       32 Feb  1 19:40 at-spi2
--{ condensed output }--

それでは、インクリメンタルrsyncを実行しましょう-

[root@localhost etc_baks]# rsync -aAvr --progress  /etc/ /root/etc_baks/
sending incremental file list

test_incremental.txt 
   0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1145/1282)
   
sent 204620 bytes  received 2321 bytes  413882.00 bytes/sec
total size is 80245040  speedup is 387.77

[root@localhost etc_baks]#

test_incremental.txtファイルのみがコピーされました。

rsyncを使用したリモート差分バックアップ

バックアップ計画が展開されているサーバーに最初のrsync完全バックアップを実行してみましょう。この例では、実際にはMac OSXワークステーション上のフォルダをCentOSサーバーにバックアップしています。rsyncのもう1つの優れた点は、rsyncが移植されたすべてのプラットフォームで使用できることです。

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

これで、ワークステーションから、ローテーションされたディザスタリカバリメディアがオフサイトに保存されたRAID6ボリュームを実行しているサーバーにフォルダがバックアップされました。rsyncを使用すると、標準の3-2-1バックアップが得られ、1台のサーバーだけに高価な冗長ディスクアレイとローテーション差分バックアップがあります。

次に、test_file.txtという名前の新しいファイルが1つ追加された後、rsyncを使用して同じフォルダーの別のバックアップを実行しましょう。

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff 
[email protected]'s password:  
sending incremental file list 
 ./ 
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

ご覧のとおり、新しいファイルのみがrsyncを介してサーバーに配信されました。差分比較は、ファイルごとに行われました。

注意すべき点は次のとおりです。変更が加えられた唯一のファイルであるため、これは新しいファイルtest_file.txtのみをコピーします。rsyncはsshを使用します。どちらのマシンでもrootアカウントを使用する必要はありませんでした。

シンプルで強力かつ効果的なrsyncは、フォルダー全体とディレクトリ構造をバックアップするのに最適です。ただし、rsync自体はプロセスを自動化しません。ここで、ツールボックスを掘り下げて、その仕事に最適で小さくてシンプルなツールを見つける必要があります。

cronjobsを使用してrsyncバックアップを自動化するには、認証にSSHキーを使用してSSHユーザーを設定することが不可欠です。これをcronjobsと組み合わせると、rsyncを一定の間隔で自動的に実行できます。

ブロックごとのベアメタル回復画像にDDを使用する

DDは、LinuxカーネルがGNUユーティリティと出会うことの黎明期から存在しているLinuxユーティリティです。

ddは、簡単に言うと、選択したディスク領域のイメージをコピーします。次に、物理ディスクの選択したブロックをコピーする機能を提供します。したがって、バックアップがない限り、ddがディスクに書き込むと、すべてのブロックが置き換えられます。以前のデータの損失は、高額な専門家レベルのデータ回復の回復能力を超えています。

ddを使用して起動可能なシステムイメージを作成するための全体的なプロセスは次のとおりです。

  • 起動可能なLinuxディストリビューションを使用してCentOSサーバーから起動する
  • イメージ化するブータブルディスクの指定を見つけます
  • リカバリイメージを保存する場所を決定します
  • ディスクで使用されているブロックサイズを見つけます
  • ddイメージ操作を開始します

このチュートリアルでは、時間と単純さのために、CentOS仮想マシンからマスターブートレコードのISOイメージを作成します。その後、この画像をオフサイトに保存します。MBRが破損して復元する必要がある場合は、同じプロセスを起動可能なディスクまたはパーティション全体に適用できます。ただし、必要な時間とディスク容量は、このチュートリアルでは実際には少しやり過ぎです。

CentOS管理者は、テスト環境で完全に起動可能なディスク/パーティションを復元し、ベアメタル復元を実行することに習熟することをお勧めします。これにより、最終的にはマネージャーと数十人のエンドユーザーがダウンタイムをカウントする実際の状況で練習を完了する必要がある場合に、多くのプレッシャーが軽減されます。そのような場合、物事を理解するための10分間は永遠のように見え、1つの汗をかきます。

Note− ddを使用するときは、ソースボリュームとターゲットボリュームを混同しないように注意してください。バックアップの場所をブートドライブにコピーすることで、データとブート可能なサーバーを破棄できます。または、DDを使用して非常に低いレベルでデータをコピーすることにより、データを永久に破壊する可能性があります。

以下は、dd −の一般的なコマンドラインスイッチとパラメータです。

スイッチ アクション
if = コピーするファイルまたはソース内
of = アウトファイルまたはインファイルのコピー
bs 入力ブロックサイズと出力ブロックサイズの両方を設定します
obs 出力ファイルのブロックサイズを設定する
IBS 入力ファイルのブロックサイズを設定する
カウント コピーするブロック数を設定する
コンバージョン イメージング用に追加する追加オプション
Noerror エラーの処理を停止しないでください
同期 エラーまたはミスアライメントが発生した場合に、適合していない入力ブロックをパッドします

Note on block size−ddのデフォルトのブロックサイズは512バイトです。これは、低密度ハードディスクドライブの標準ブロックサイズでした。今日の高密度HDDは、1TB以上のディスクに対応できるように4096バイト(4kB)のブロックサイズに拡大されています。したがって、新しい大容量のハードディスクでddを使用する前に、ディスクブロックサイズを確認する必要があります。

このチュートリアルでは、ddを使用して本番サーバーで作業する代わりに、VMWareで実行されているCentOSインストールを使用します。また、起動可能なUSBスティックを使用する代わりに、起動可能なLinuxISOイメージを起動するようにVMWareを構成します。

まず、CentOS GnomeISOというタイトルのCentOSイメージをダウンロードする必要があります。これはほぼ3GBであり、起動可能なUSBサムドライブを作成し、トラブルシューティングやベアメタルイメージのために仮想サーバーインストールで起動するために、常にコピーを保持することをお勧めします。

他の起動可能なLinuxディストリビューションも同様に機能します。Linux Mintは、優れたハードウェアサポートと、メンテナンス用の洗練されたGUIディスクツールを備えているため、起動可能なISOに使用できます。

CentOS GNOME Liveブータブルイメージは、次の場所からダウンロードできます。 http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Linuxのブート可能イメージから起動するようにVMWareWorkstationのインストールを構成しましょう。手順はOSX上のVMWare向けです。ただし、Linux、Windows、さらにはVirtualBox上のVMWareWorkstationでも同様です。

Note− VirtualBoxやVMWareWorkstationなどの仮想デスクトップソリューションを使用することは、CentOS管理タスクを学習するためのラボシナリオを設定するための優れた方法です。複数のCentOSインストールをインストールする機能を提供します。ハードウェア構成がほとんどないため、管理に集中できません。また、変更を加える前にサーバーの状態を保存することもできます。

まず、仮想CD-ROMを構成し、仮想CentOSサーバーのインストールの代わりに起動するISOイメージを添付しましょう-

ここで、起動ディスクを設定します-

これで、起動時に、仮想マシンがCentOSブータブルISOイメージから起動し、以前に構成されたVirtualCentOSサーバー上のファイルにアクセスできるようになります。

ディスクをチェックして、MBRのコピー元を確認しましょう(要約された出力は次のとおりです)。

MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

物理ディスクの両方(sdasdb)を見つけました。それぞれのブロックサイズは512バイトです。したがって、ddコマンドを実行して、SDA1のMBRの最初の512バイトをコピーします。

これを行うための最良の方法は-

[root@mint rdc]# dd if=/dev/sda bs=512 count=1  | gzip -c >
/mnt/sdb/images/mbr.iso.gz 
1+0 records in 
1+0 records out 
512 bytes copied, 0.000171388 s, 3.0 MB/s

[root@mint rdc]# ls /mnt/sdb/ 
   mbr-iso.gz
   
[root@mint rdc]#

ちょうどそのように、マスターブートレコードの完全なイメージがあります。ブートドライブをイメージ化するのに十分なスペースがあれば、システム全体のブートイメージを簡単に作成できます。

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

CONV =同期はバイトは、物理媒体のために整列されなければならない場合に使用されます。この場合、正確な4Kアライメントが読み取られないと、ddでエラーが発生する可能性があります(たとえば、3Kしかないが、ディスク上で4Kブロックを1つ以上取得する必要があるファイル。または、読み取りエラーが発生し、 ddでファイルを読み取ることはできません。)したがって、conv = sync、noerrorを指定したddは、3Kに些細な、しかし有用なデータを4Kブロックアライメントの物理メディアにパディングします。大規模な操作を終了する可能性のあるエラーは表示されませんが。

ディスクからのデータを処理するときは、常に次のものを含めます:conv = sync、noerrorパラメーター。

これは、ディスクがTCPデータのようなストリームではないためです。それらは、特定のサイズに整列されたブロックで構成されています。たとえば、512バイトのブロックがある場合でも、300バイトしかないファイルには512バイトのディスクスペースが必要です(アクセス許可やその他のファイルシステム情報などのiノード情報用に2ブロックの場合があります)。

安全な保管のためにgzipとtarを使用する

gzipとtarは、CentOS管理者が使い慣れなければならない2つのユーティリティです。これらは、単にアーカイブを解凍する以外にも多くの目的で使用されます。

CentOSLinuxでのGnuTarの使用

Tarは、Windowsのwinrarに似たアーカイブユーティリティです。tarと略されるその名前TapeArchiveは、ユーティリティをほぼ要約しています。tarはファイルを取得し、論理的な便宜のためにアーカイブに配置します。したがって、/ etcに保存されている数十のファイルの代わりに。バックアップとストレージの利便性のために、それらをアーカイブに「タール」することができます。

tarは、アーカイブされたファイルをUnixおよびLinuxに保存するための標準として長年使用されてきました。したがって、tarをgzipまたはbzipと一緒に使用することは、各システムのアーカイブのベストプラクティスと見なされます。

以下は、tar-で使用される一般的なコマンドラインスイッチとオプションのリストです。

スイッチ アクション
-c 新しい.tarアーカイブを作成します
-C 別のディレクトリに抽出します
-j bzip2圧縮を使用
-z gzip圧縮を使用
-v 詳細なショーのアーカイブの進行状況
-t アーカイブの内容を一覧表示します
-f アーカイブのファイル名
-バツ tarアーカイブを抽出します

以下は、tarアーカイブを作成するための基本的な構文です。

tar -cvf [tar archive name]

Note on Compression mechanisms with tar− tarを使用するときは、gzipとbzip2の2つの一般的な圧縮スキームのいずれかを使用することをお勧めします。gzipファイルはCPUリソースをあまり消費しませんが、通常はサイズが大きくなります。bzip2は圧縮に時間がかかりますが、より多くのCPUリソースを使用します。ただし、最終ファイルサイズは小さくなります。

ファイル圧縮を使用する場合、アーカイブを抽出するために必要な圧縮スキームを(試行錯誤ではなく)自分自身を含むすべての人に知らせる標準のファイル拡張子を常に使用する必要があります。

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

WindowsボックスまたはWindowsで使用するためにアーカイブを抽出する必要がある場合は、.tar.tbzまたは.tar.gzを使用することをお勧めします。これは、ほとんどの3文字の単一拡張子がWindowsとWindowsのみの管理者を混乱させるためです(ただし、時には望ましい結果)

Macワークステーションからコピーしたリモートバックアップからgzip圧縮されたtarアーカイブを作成しましょう-

[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/ 
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz

Note−すべてのファイルをアーカイブに直接追加する代わりに、RemoteStuffフォルダー全体をアーカイブしました。これが最も簡単な方法です。抽出されると、ディレクトリ全体RemoteStuffが抽出され、現在の作業ディレクトリ内のすべてのファイルが./currentWorkingDirectory/RemoteStuff/として抽出されます。

次に、/ root /ホームディレクトリ内のアーカイブを抽出しましょう。

[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com

上記のように、すべてのファイルは、現在の作業ディレクトリ内の包含ディレクトリに単純に抽出されました。

[root@centos ~]# ls -l 
total 2262872 
-rw-------.   1   root   root       1752   Feb   1   19:52   anaconda-ks.cfg 
drwxr-xr-x. 137   root   root       8192   Mar   9   04:42   etc_baks 
-rw-r--r--.   1   root   root       1800   Feb   2   03:14   initial-setup-ks.cfg 
drwxr-xr-x.   6   rdc    rdc        4096   Mar  10   22:20   RemoteStuff 
-rw-r--r--.   1   root   root 2317140451   Mar  12   07:12   RemoteStuff.tgz 
-rw-r--r--.   1   root   root       9446   Feb  25   05:09   ssl.conf [root@centos ~]#

gzipを使用してファイルバックアップを圧縮する

前述のように、tarからbzip2またはgzipのいずれかを使用できます。 -j または -zコマンドラインスイッチ。gzipを使用して個々のファイルを圧縮することもできます。ただし、bzipまたはgzipを単独で使用しても、tarと組み合わせた場合ほど多くの機能は提供されません。

gzipを使用する場合、デフォルトのアクションは元のファイルを削除し、それぞれを圧縮バージョンに置き換えて.gz拡張子を追加することです。

gzipの一般的なコマンドラインスイッチは次のとおりです。

スイッチ アクション
-c アーカイブに配置した後、ファイルを保持します
-l 圧縮アーカイブの統計を取得する
-r ディレクトリ内のファイルを再帰的に圧縮します
-1から9 1から9のスケールで圧縮レベルを指定します

gzipは、一部のWindows O / S zipユーティリティのようにアーカイブベースではなく、ファイルごとに機能します。これの主な理由は、tarがすでに高度なアーカイブ機能を提供していることです。gzipは、圧縮メカニズムのみを提供するように設計されています。

したがって、gzipについて考えるときは、単一​​のファイルについて考えてください。複数のファイルについて考えるときは、tarアーカイブについて考えてください。以前のtarアーカイブでこれを調べてみましょう。

Note −経験豊富なLinuxの専門家は、tarを使用したアーカイブをtarballと呼ぶことがよくあります。

rsyncバックアップから別のtarアーカイブを作成しましょう。

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

デモの目的のために、のは、聞かせてgzipで圧縮新しく作成されたtarballを、と言うGZIP古いファイルを維持します。デフォルトでは、-cオプションを指定しないと、gzipはtarアーカイブ全体を.gzファイルに置き換えます。

[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.

gzipで-lスイッチをテストしてみましょう。

[root@centos Documents]# gzip -l RemoteStuff.tar.gz  
     compressed        uncompressed        ratio uncompressed_name 
     2317140467          2326661120        0.4% RemoteStuff.tar
     
[root@centos Documents]#

gzipWindowsZipユーティリティとどのように異なるかを示すために、テキストファイルのフォルダでgzipを実行してみましょう。

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

次に、-rオプションを使用して、ディレクトリ内のすべてのテキストファイルを再帰的に圧縮しましょう。

[root@centos Documents]# gzip -9 -r text_files/

[root@centos Documents]# ls ./text_files/
file1.txt.gz  file2.txt.gz  file3.txt.gz  file4.txt.gz  file5.txt.gz
 
[root@centos Documents]#

見る?一部の人が予想していたことではありません。元のテキストファイルはすべて削除され、それぞれが個別に圧縮されました。この動作のため、単一のファイルで作業する必要がある場合は、gzipのみを考えるのが最善です。

作業tarボール、私たちの解凍せrsynced新しいディレクトリにtarballを。

[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php

上記のように、tarballを抽出して/ tmpディレクトリに解凍しました。

[root@centos Documents]# ls /tmp 
hsperfdata_root
RemoteStuff

TarBallアーカイブを暗号化する

災害復旧の場合に、組織の他の従業員がアクセスする必要がある可能性のある安全なドキュメントを保存するためにtarballアーカイブを暗号化することは、難しい概念になる可能性があります。これを行うには、基本的に3つの方法があります。GnuPGを使用するか、opensslを使用するか、サードパーティのユーティリティを使用します。

GnuPGは主に非対称暗号化用に設計されており、パスフレーズではなくIDの関連付けを念頭に置いています。確かに、対称暗号化で使用できますが、これはGnuPGの主な強みではありません。したがって、元の人よりも多くの人がアクセスする必要がある場合(たとえば、管理者が王国のすべての鍵を活用することから保護したい場合など)、物理的なセキュリティでアーカイブを保存するためにGnuPGを割引します。

GnuPGのようなOpensslは、私たちが望むことを実行でき、CentOSに同梱されています。しかし、繰り返しになりますが、私たちが望むことを実行するように特別に設計されているわけではなく、暗号化はセキュリティコミュニティで疑問視されています。

私たちの選択はと呼ばれるユーティリティです 7zip。7zipはgzipのような圧縮ユーティリティですが、さらに多くの機能を備えています。Gnu Gzipと同様に、7zipとその標準はオープンソースコミュニティにあります。EHELリポジトリから7zipをインストールする必要があります(次の章では、拡張エンタープライズリポジトリのインストールについて詳しく説明します)。

Centosに7zipをインストールする

7zipは、EHELリポジトリがCentOSにロードされ、構成された後の簡単なインストールです。

[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
epel/x86_64/metalink
|  13 kB  00:00:00
epel
| 4.3 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB  00:00:04      
(2/2):
epel/x86_64/primary_db
| 4.6 MB  00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

そのように単純で、7zipがインストールされ、tarballアーカイブの256ビットAES暗号化ですぐに使用できます。

次に、7zを使用して、gzip圧縮されたアーカイブをパスワードで暗号化します。そのための構文は非常に単純です-

7z a -p <output filename><input filename>

どこ、 a: アーカイブに追加し、 -p: パスフレーズの暗号化とプロンプト

[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)

Creating archive: RemoteStuff.tgz.7z

Items to compress: 1

Enter password (will not be echoed):
Verify password (will not be echoed) :

Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz  RemoteStuff.tgz.7z  slapD
text_files

[root@centos Documents]#

これで、gzip圧縮されたtarballを256ビットAESで暗号化する.7zアーカイブができました。

Note− 7zipは、パスワードとカウンターのSHA-256ハッシュを使用したAES 256ビット暗号化を使用し、キーの導出のために最大512K回繰り返されます。複雑なキーを使用する場合、これは十分に安全である必要があります。

アーカイブをさらに暗号化および再圧縮するプロセスは、アーカイブが大きくなると時間がかかる場合があります。

7zipは、gzipやbzip2よりも多くの機能を備えた高度な製品です。ただし、CentOSやLinuxの世界では標準ではありません。したがって、他のユーティリティをできるだけ頻繁に使用する必要があります。

CentOS7システムは3つの方法で更新できます-

  • Manually
  • Automatically
  • 主要なセキュリティ問題について手動で更新し、自動更新を構成します

実稼働環境では、実稼働サーバー用に手動で更新することをお勧めします。または、少なくとも更新計画を確立して、管理者が業務に不可欠なサービスを保証できるようにします。

単純なセキュリティ更新により、管理者によるアップグレードと再構成が必要な一般的なアプリケーションで再帰的な問題が発生する可能性があります。したがって、開発サーバーとデスクトップで最初にテストする前に、本番環境で自動更新をスケジュールすることにうんざりしてください。

CentOS7を手動で更新する

CentOS 7を更新するには、yumコマンドについて理解しておく必要があります。yumCentOS7でパッケージリポジトリを処理するために使用されます。yumは一般的に使用されるツールです。

  • CentOS 7Linuxシステムを更新します
  • パッケージを検索する
  • パッケージをインストールする
  • パッケージに必要な依存関係を検出してインストールします

更新にyumを使用するには、CentOSサーバーがインターネットに接続されている必要があります。ほとんどの構成では、基本システムをインストールしてから、yumを使用してメインのCentOSリポジトリにパッケージ内の追加機能を照会し、システム更新を適用します。

すでにyumを使用していくつかのパッケージをインストールしています。yumを使用する場合は、常にrootユーザーとして使用する必要があります。または、rootアクセス権を持つユーザー。それでは、nanoと呼ばれる使いやすいテキストエディタを検索してインストールしましょう。

[root@centos rdc]# yum search nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.rackspace.com
 * epel: mirror.chpc.utah.edu
 * extras: repos.forethought.net 
 * updates: repos.forethought.net 
====================================================================== 
      N/S matched: nano 
======================================================================
nano.x86_64 : A small text editor
nodejs-nano.noarch : Minimalistic couchdb driver for Node.js
perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision
 Name and summary matches only, use "search all" for everything.
 
[root@centos rdc]#

それでは、nanoテキストエディタをインストールしましょう。

[root@centos rdc]# yum install nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.keystealth.org
 * epel: pubmirror1.math.uh.edu
 * extras: centos.den.host-engine.com
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================  
Package                             Arch
Version                          Repository                            Size  
================================================================================  
 Installing: 
 nano                               x86_64
 2.3.1-10.el7                    base                                  440 k
 
Transaction Summary
Install  1 Package
Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm
| 440 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : nano-2.3.1-10.el7.x86_64
1/1  
 Verifying  : nano-2.3.1-10.el7.x86_64
1/1  
Installed: 
 nano.x86_64 0:2.3.1-10.el7
 
Complete!

[root@centos rdc]#

nanoテキストエディタをインストールしました。この方法であるIMOは、Webサイトでユーティリティを検索し、インストーラーを手動で実行するよりもはるかに簡単です。また、リポジトリはデジタル署名を使用してパッケージを検証し、yumを使用して信頼できるソースからのものであることを確認します。新しいリポジトリを信頼するときに信頼性を検証するのは管理者の責任です。これが、サードパーティのリポジトリにうんざりすることがベストプラクティスと見なされる理由です。

Yumを使用してパッケージを削除することもできます。

[root@centos rdc]# yum remove nano 
Loaded plugins: fastestmirror, langpacks 
Resolving Dependencies 
--> Running transaction check 
---> Package nano.x86_64 0:2.3.1-10.el7 will be erased 
--> Finished Dependency Resolution

Dependencies Resolved

それでは、更新を確認しましょう。

[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.keystealth.org
 * epel: pubmirror1.math.uh.edu
 * extras: centos.den.host-engine.com
 * updates: repos.forethought.net
Updated Packages
NetworkManager.x86_64           1:1.4.0-17.el7_3       updates
NetworkManager-adsl.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-glib.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-libnm.x86_64     1:1.4.0-17.el7_3       updates
NetworkManager-team.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-tui.x86_64       1:1.4.0-17.el7_3       updates
NetworkManager-wifi.x86_64      1:1.4.0-17.el7_3       updates
audit.x86_64                    2.6.5-3.el7_3.1        updates
audit-libs.x86_64               2.6.5-3.el7_3.1        updates
audit-libs-python.x86_64

示されているように、インストールが保留されている数十の更新があります。実際には、自動更新をまだ構成していないため、合計で約100の更新があります。したがって、保留中のすべての更新をインストールしましょう。

[root@centos rdc]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.usc.edu
 * epel: pubmirror1.math.uh.edu
 * extras: repos.forethought.net
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update
 selinux-policy            noarch      3.13.1102.el7_3.15      updates     414 k
 selinux-policy-targeted   noarch      3.13.1102.el7_3.15      updates     6.4 M 
 systemd                   x86_64      21930.el7_3.7           updates     5.2 M 
 systemd-libs              x86_64      21930.el7_3.7           updates     369 k 
 systemd-python            x86_64      21930.el7_3.7           updates     109 k 
 systemd-sysv              x86_64      21930.el7_3.7           updates     63 k 
 tcsh                      x86_64      6.18.01-13.el7_3.1      updates     338 k 
 tzdata                    noarch      2017a1.el7              updates     443 k 
 tzdata-java               noarch      2017a1.el7              updates     182 k 
wpa_supplicant             x86_64      1:2.021.el7_3           updates     788 k  

Transaction Summary 
=============================================================================== 
  Install   2 Packages 
  Upgrade  68 Packages 
Total size: 196 M 
Total download size: 83 M 
Is this ok [y/d/N]:

「y」キーを押すと、CentOS7のアップデートが始まります。更新時にyumが実行する一般的なプロセスは次のとおりです。

  • 現在のパッケージをチェックします
  • リポジトリで更新されたパッケージを探します
  • 更新されたパッケージに必要な依存関係を計算します
  • アップデートをダウンロード
  • アップデートをインストールします

それでは、システムが最新であることを確認しましょう。

[root@centos rdc]# yum list updates 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * updates: mirror.compevo.com

[root@centos rdc]#

ご覧のとおり、更新はリストされていません。

YUMの自動更新を構成する

エンタープライズ環境では、前述のように、自動更新がインストールの推奨される方法である場合とそうでない場合があります。yumを使用して自動更新を構成する手順を見ていきましょう。

まず、yum-cronというパッケージをインストールします。

[root@centos rdc]# yum -y install yum-cron
Install  1 Package
Total download size: 61 k
Installed size: 51 k
Downloading packages:
yum-cron-3.4.3-150.el7.centos.noarch.rpm
|  61 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : yum-cron-3.4.3-150.el7.centos.noarch
1/1
  Verifying  : yum-cron-3.4.3-150.el7.centos.noarch
1/1

Installed: 
 yum-cron.noarch 0:3.4.3-150.el7.centos
 
Complete!

[root@centos rdc]#

デフォルトでは、yum-cronはアップデートのみをダウンロードし、インストールしません。更新を自動的にインストールするかどうかは、管理者にあります。最大の注意点は、一部の更新ではシステムの再起動が必要になることです。また、一部の更新では、サービスが再び動作可能になる前に構成の変更が必要になる場合があります。

依存関係を更新すると、次の状況で再帰的な問題が発生する可能性があります-

  • 特定のライブラリについては、yumが更新を推奨しています

  • ライブラリはApacheServer 2.4のみをサポートしますが、サーバー2.3があります

  • 私たちのコマースサイトは特定のバージョンのPHPに依存しています

  • ライブラリ用にインストールされたApacheの新しいバージョンでは、PHPをアップグレードする必要があります

  • 当社の本番Webアプリケーションは、新しいPHPバージョンではまだテストされていません。

Yumは、設定されていない限り、通知なしにApacheとPHPを自動的にアップグレードする場合があります。

5つのシナリオすべてが実行されると、朝の大きな頭痛の種から、ユーザーデータを公開する可能性のあるセキュリティ侵害まで、あらゆる結果が生じる可能性があります。前述の例はある種の完全な嵐ですが、そのようなシナリオを実行したくはありません。

アップデートの再起動と再構成によるダウンタイムの可能性が原因で、サービスの復元に必要な時間から収益が失われる可能性のあるシナリオにアクセスするのは、管理者の責任です。この慣行は、たとえば、数百万の顧客がいる1日あたり数百万ドルのeコマースサイトには十分に保守的ではない可能性があります。

それでは、システムアップデートを自動的にインストールするようにyum-cronを設定しましょう。

[root@centos rdc]# vim /etc/yum/yum-cron.conf
# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes

apply_updates = noapply_updates = yesに変更します。それでは、yum-cronの更新間隔を設定しましょう。

繰り返しになりますが、自動更新を使用してオンデマンドで更新をインストールするかどうかは両刃の剣である可能性があり、管理者はそれぞれの固有の状況について検討する必要があります。

Bashシェルの概要

GNU Linuxのフレーバーと同様に、シェルにはさまざまな種類があり、互換性も異なります。CentOSのデフォルトのシェルは、BashまたはBourne AgainShellとして知られています。Bashシェルは、StephenBourneによって開発されたBourneShellの現代の修正バージョンです。Bashは、KenThompsonとDennisRitchieによってBellLabsで開発されたUnixオペレーティングシステム上の元のThompsonShellの直接の代替品でした(StephenBourneはBellLabsにも採用されていました)

誰もが好きなシェルを持っており、それぞれに長所と難しさがあります。しかし、ほとんどの場合、BashはすべてのLinuxディストリビューションでデフォルトのシェルになり、最も一般的に利用可能になります。経験を積むと、誰もが自分に最適なシェルを探索して使用したいと思うでしょう。ただし、同時に、誰もがBashシェルをマスターしたいと思うでしょう。

その他のLinuxシェルには、Tcsh、Csh、Ksh、Zsh、およびFishが含まれます。

エキスパートレベルでLinuxシェルを使用するスキルを開発することは、CentOS管理者にとって非常に重要です。前述したように、Windowsとは異なり、Linuxの中心はコマンドラインオペレーティングシステムです。シェルは、管理者(またはユーザー)がオペレーティングシステムにコマンドを発行できるようにする単なるユーザーインターフェイスです。Linuxシステム管理者が航空会社のパイロットである場合、シェルを使用することは、飛行機を自動操縦から外し、より機動性の高い飛行のために手動制御をつかむことに似ています。

BashのようなLinuxシェルは、コンピュータサイエンスの用語では次のように知られています。 Command Line Interpreter。Microsoft Windowsには、DOS(元のDOSオペレーティングシステムと混同しないでください)とPowerShellと呼ばれる2つのコマンドラインインタープリターもあります。

Bashのような最新のシェルは constructsより複雑なシェルスクリプトで、一般的なタスクと複雑なタスクの両方を自動化できます。

構成には次のものが含まれます-

  • スクリプトフロー制御(ifthenおよびelse)
  • 論理比較演算(より大きい、より小さい、等しい)
  • Loops
  • Variables
  • 操作を定義するパラメーター(コマンド付きスイッチと同様)

シェルスクリプトとスクリプト言語の使用

タスクの実行について考えるとき、管理者はよく自問します。シェルスクリプト、またはPerl、Ruby、Pythonなどのスクリプト言語を使用する必要がありますか?

ここには決まったルールはありません。シェルとスクリプト言語の間には、典型的な違いしかありません。

シェル

Shellを使用すると、LinuxオペレーティングシステムでsedgrepteecatなどのLinuxコマンドやその他すべてのコマンドラインベースのユーティリティを使用できます。実際、ほとんどすべてのコマンドラインLinuxユーティリティをシェルでスクリプト化できます。

シェルを使用する良い例は、DNS解決のためにホストのリストをチェックする簡単なスクリプトです。

DNS名をチェックするための簡単なBashスクリプト-

#!/bin/bash 
for name in $(cat $1); do host $name.$2 | grep "has address" 
   done 
exit

DNS解決をテストするための小さなワードリスト-

dns 
www 
test 
dev 
mail 
rdp 
remote

google.comドメインに対する出力-

[rdc@centos ~]$  ./dns-check.sh dns-names.txt google.com
-doing dns
dns.google.com has address 172.217.6.46
-doing www
www.google.com has address 172.217.6.36
-doing test
-doing dev
-doing mail
googlemail.l.google.com has address 172.217.6.37
-doing rdp
-doing remote

[rdc@centos ~]$

シェルで単純なLinuxコマンドを利用して、単語リストからDNS名を監査する単純な5行のスクリプトを作成することができました。これは、適切に実装されたDNSライブラリを使用している場合でも、Perl、Python、またはRubyではかなりの時間がかかります。

スクリプト言語

スクリプト言語を使用すると、シェルの外部をより細かく制御できます。上記のBashスクリプトは、Linuxホストコマンドのラッパーを使用していました。もっと多くのことをして、ホストのような独自のアプリケーションをシェルの外部と相互作用させたい場合はどうなりますか?ここで、スクリプト言語を使用します。

また、高度に維持されたスクリプト言語を使用すると、ほとんどの場合、アクションがさまざまなシステムで機能することがわかります。たとえば、Python 3.5は、同じライブラリがインストールされているPython3.5を実行している他のシステムで動作します。LinuxとHP-UXの両方でBASHスクリプトを実行する場合は、そうではありません。

スクリプト言語と強力なシェルの間の境界線がぼやけることがあります。Python、Perl、またはRubyを使用してCentOSLinux管理タスクを自動化することができます。そうすることは本当にごく当たり前のことです。また、裕福なシェルスクリプト開発者は、Bashでシンプルでありながら機能的なWebサーバーデーモンを作成しました。

スクリプト言語とシェルでのタスクの自動化の経験があるCentOS管理者は、問題を解決する必要があるときにどこから始めればよいかをすばやく判断できます。シェルスクリプトを使用してプロジェクトを開始することは非常に一般的です。次に、プロジェクトがより複雑になるにつれて、スクリプト(またはコンパイル)言語に進みます。

また、プロジェクトのさまざまな部分にスクリプト言語とシェルスクリプトの両方を使用することもできます。例としては、WebサイトをスクレイプするPerlスクリプトがあります。次に、シェルスクリプトを使用して、sedawk、およびegrepを使用して解析およびフォーマットします。最後に、PHPスクリプトを使用して、WebGUIを使用してフォーマットされたデータをMySQLデータベースに挿入します。

シェルの背後にあるいくつかの理論を使用して、CentOSのBashシェルからタスクを自動化するための基本的な構成要素から始めましょう。

入出力とリダイレクト

別のコマンドへのstdoutの処理-

[rdc@centos ~]$ cat ~/output.txt | wc -l 
6039 
[rdc@centos ~]$

上記では、パイプ文字で処理するためにcat'sstoudwcに渡しました。次に、wccatからの出力を処理し、output.txtの行数を端末に出力します。パイプ文字は、次のコマンドで処理される、あるコマンドからの出力を渡す「パイプ」と考えてください。

以下は、コマンドリダイレクトを処理するときに覚えておくべき重要な概念です。

ファイル記述子 キャラクター
0 標準入力 <
1 標準出力 >>
2 標準誤差
stdoutを追加 >>
リダイレクトを割り当てる
stdoutをstdinにパイプします |

これについては、リダイレクトやリダイレクトの割り当てについてあまり話さずに、第1章で紹介しました。Linuxでターミナルを開くと、シェルが-のデフォルトのターゲットとして表示されます。

  • 標準入力<0
  • 標準出力> 1
  • 標準誤差2

これがどのように機能するか見てみましょう-

[rdc@centos ~]$ lsof -ap $BASHPID -d 0,1,2 COMMAND PID USER **FD** TYPE DEVICE SIZE/OFF NODE NAME bash 13684 rdc **0u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **1u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **2u** CHR 136,0 0t0 3 /dev/pts/0 [rdc@centos ~]$

/ dev / pts / 0は疑似端末です。CentOS Linuxはこれを見て、シリアルインターフェイスを介してプラグインされたキーボードとディスプレイを備えた実際の端末のようなオープン端末アプリケーションを考えます。ただし、ハイパーバイザーがハードウェアをオペレーティングシステムに抽象化するように、/ dev / ptsは端末をアプリケーションに抽象化します。

上記のlsofコマンドから、FD3つのファイル記述子すべてが仮想端末(0,1,2)に設定されている列。これで、コマンドを送信できます。コマンド出力、およびコマンドに関連するエラーを確認してください。

以下は、STDINおよびSTDOUTの例です。

STDOUT

[root@centosLocal centos]# echo "I am coming from Standard output or STDOUT." >
output.txt && cat output.txt
I am coming from Standard output or STDOUT. 
[root@centosLocal centos]#

stdoutstderrの両方を別々のファイルに送信することも可能です-

bash-3.2# find / -name passwd 1> good.txt 2> err.txt
bash-3.2# cat good.txt
/etc/pam.d/passwd
/etc/passwd
bash-3.2# cat err.txt 
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
bash-3.2#

ファイルシステム全体を検索すると、2つのエラーが発生しました。それぞれが後で閲覧するために別々のファイルに送信され、返された結果は別々のテキストファイルに配置されました。

stderrをテキストファイルに送信すると、アプリケーションのコンパイルなど、端末に大量のデータを出力する場合に役立ちます。これにより、端末のスクロールバック履歴から失われる可能性のあるエラーを精査できます。

STDOUTをテキストファイルに渡すときの1つの注意点は、 >> そして >。二重の「>>」はファイルに追加されますが、単数形はファイルを上書きして新しいコンテンツを書き込みます(したがって、以前のデータはすべて失われます)。

STDIN

[root@centosLocal centos]# cat < stdin.txt
Hello,
I am being read form Standard input, STDIN.

[root@centosLocal centos]#

上記のコマンドでは、テキストファイルstdin.txtcatコマンドにリダイレクトされ、その内容がSTDOUTにエコーされました。

パイプ文字「|」

パイプ文字は、最初のコマンドからの出力を受け取り、それを入力として次のコマンドに渡し、2番目のコマンドが出力に対して操作を実行できるようにします。

それでは、猫の標準出力を別のコマンドに「パイプ」してみましょう-

[root@centosLocal centos]# cat output.txt | wc -l
2
[root@centosLocal centos]#

上記のwcは、パイプから渡されたcatからの出力に対して計算を実行します。以下からの出力をフィルタリングするときにパイプコマンドが特に有用であるのgrepまたはegrepの-

[root@centosLocal centos]# egrep "^[0-9]{4}$" /usr/dicts/nums | wc -l  
9000 
[root@centosLocal centos]#

上記のコマンドでは、egrepフィルターを通過した65535からのすべての数値を含むテキストファイルから、4桁ごとの数値をwcに渡しました。

&を使用した出力のリダイレクト

出力は、を使用してリダイレクトできます &キャラクター。STDOUTとSTDERRの両方の出力を同じファイルに送信する場合は、次のように実行できます。

[root@centosLocal centos]# find / -name passwd > out.txt 2>&1
[root@centosLocal centos]# cat out.txt  
find: /dev/fd/3: Not a directory 
find: /dev/fd/4: Not a directory 
/etc/passwd

[root@centosLocal centos]#

を使用したリダイレクト &文字は次のように機能します。最初に、出力はout.txtにリダイレクトされます。次に、STDERRまたはファイル記述子2が、STDOUTと同じ場所(この場合はout.txt)に再割り当てされます。

リダイレクトは非常に便利で、大きなテキストファイルの操作、ソースコードのコンパイル、シェルスクリプトでの出力のリダイレクト、複雑なLinuxコマンドの発行時に発生する問題を解決する際に役立ちます。

強力ですが、新しいCentOS管理者にとってリダイレクトは複雑になる可能性があります。Linuxフォーラム(Stack Overflow Linuxなど)への練習、調査、および時折の質問は、高度なソリューションの解決に役立ちます。

Bashシェルコンストラクト

Bashシェルがどのように機能するかについての良いアイデアが得られたので、スクリプトを作成するために一般的に使用されるいくつかの基本的な構造を学びましょう。このセクションでは、以下について説明します。

  • Variables
  • Loops
  • Conditionals
  • ループ制御
  • ファイルの読み取りと書き込み
  • 基本的な数学演算

BASHトラブルシューティングのヒント

BASHは、専用のスクリプト言語と比較して少し注意が必要です。BASHスクリプトの最大のハングアップのいくつかは、シェルに渡されるスクリプト操作を誤ってエスケープするか、エスケープしないことによるものです。スクリプトを数回調べても期待どおりに機能しない場合は、心配しないでください。これは、BASHを使用して複雑なスクリプトを毎日作成する人にもよく見られます。

Googleをすばやく検索するか、専門家のLinuxフォーラムにサインアップして質問をすると、迅速な解決につながります。誰かが正確な問題に遭遇し、それがすでに解決されている可能性が非常に高いです。

BASHスクリプトは、管理タスクの自動化から便利なツールの作成まで、あらゆるものに対応する強力なスクリプトをすばやく作成するための優れた方法です。エキスパートレベルのBASHスクリプト開発者になるには、時間と練習が必要です。したがって、可能な限りBASHスクリプトを使用してください。これは、CentOS管理ツールボックスに含めるのに最適なツールです。

CentOSでのパッケージ管理は、端末からとグラフィカルユーザーインターフェイスからの2つの方法で実行できます。

多くの場合、CentOS管理者の時間の大部分は端末を使用します。CentOSのパッケージの更新とインストールも同じです。これを念頭に置いて、最初にターミナルでのパッケージ管理について説明し、次にCentOSが提供するグラフィカルなパッケージ管理ツールの使用について説明します。

YUMパッケージマネージャー

YUMは、CentOSのパッケージ管理用に提供されているツールです。前の章でこのトピックに簡単に触れました。この章では、CentOSのクリーンインストールから作業します。最初にインストールを完全に更新してから、アプリケーションをインストールします。

YUMは、Linuxでのソフトウェアのインストールと管理を長い道のりでもたらしました。YUMは、古いパッケージに加えて、古い依存関係を「自動的に」チェックします。これにより、ソースコードからすべてのアプリケーションをコンパイルする昔と比較して、CentOS管理者の負荷が大幅に軽減されました。

yumcheck-update

候補を更新できるパッケージをチェックします。このチュートリアルでは、パッケージをアップグレードする前にDevOpsでテストする必要のある本番アプリケーションがなく、インターネットに面している本番システムを想定しています。更新された候補をシステムにインストールしましょう。

[root@localhost rdc]# yum check-update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu
NetworkManager.x86_64                     1:1.4.0-19.el7_3              updates
NetworkManager-adsl.x86_64                1:1.4.0-19.el7_3              updates 
NetworkManager-glib.x86_64                1:1.4.0-19.el7_3              updates 
NetworkManager-libnm.x86_64               1:1.4.0-19.el7_3              updates 
NetworkManager-team.x86_64                1:1.4.0-19.el7_3              updates 
NetworkManager-tui.x86_64                 1:1.4.0-19.el7_3              updates 
NetworkManager-wifi.x86_64                1:1.4.0-19.el7_3              updates 
audit.x86_64                              2.6.5-3.el7_3.1               updates    
vim-common.x86_64                         2:7.4.160-1.el7_3.1           updates 
vim-enhanced.x86_64                       2:7.4.160-1.el7_3.1           updates 
vim-filesystem.x86_64                     2:7.4.160-1.el7_3.1           updates 
vim-minimal.x86_64                        2:7.4.160-1.el7_3.1           updates 
wpa_supplicant.x86_64                     1:2.0-21.el7_3                updates 
xfsprogs.x86_64                           4.5.0-9.el7_3                 updates

[root@localhost rdc]#

yumアップデート

これにより、更新されたすべての候補がインストールされ、CentOSのインストールが最新になります。新規インストールでは、インストールとインターネット接続速度によっては、これに少し時間がかかる場合があります。

[root@localhost rdc]# yum update

vim-minimal                        x86_64    2:7.4.160-1.el7_3.1     updates    436 k 
wpa_supplicant                     x86_64    1:2.0-21.el7_3          updates    788 k 
xfsprogs                           x86_64    4.5.0-9.el7_3           updates    895 k  

Transaction Summary 
======================================================================================
Install    2 Packages 
Upgrade  156 Packages  
Total download size: 371 M

Is this ok [y/d/N]:

YUM経由でソフトウェアをインストールする

CentOSシステムの更新に加えて、YUMパッケージマネージャーはソフトウェアをインストールするための頼りになるツールです。ネットワーク監視ツール、ビデオプレーヤー、テキストエディターなど、すべてをYUMを使用して中央リポジトリからインストールできます。

いくつかのソフトウェアユーティリティをインストールする前に、いくつかのYUMコマンドを見てみましょう。日常業務の場合、CentOS管理者によるYUMの使用の90%は、約7つのコマンドを使用します。YUMを日常的に使いこなせるレベルでの運用に慣れることを願って、それぞれを見ていきます。ただし、ほとんどのLinuxユーティリティと同様に、YUMは、マニュアルページから探索するのに常に最適な高度な機能を豊富に備えています。Linuxユーティリティでなじみのない操作を実行するための最初のステップは、常にmanyumを使用することです。

最も一般的なYUMコマンド

以下は、一般的に使用されるYUMコマンドです。

コマンド アクション
インストールされているリスト YUMを介してインストールされたパッケージを一覧表示します
すべてリストする 現在利用可能なすべてのパッケージを一覧表示します
グループリスト グループ化されたパッケージを一覧表示します
情報 パッケージに関する詳細情報を提供します
探す パッケージの説明と名前を検索します
インストール パッケージをインストールします
localinstall ローカルrpmパッケージをインストールします
削除する パッケージを削除してインストールします
すべてをきれいにする / var / cache / yumをクリーンアップしてディスクスペースを解放します
man yum すべてのLinuxコマンドと同様に、ヘルプファイル

YUMを使用してソフトウェアをインストールする

次に、というテキストベースのWebブラウザをインストールします。 Lynx。インストールする前に、まずLynxWebブラウザーを含むパッケージ名を取得する必要があります。デフォルトのCentOSリポジトリがLynxWebブラウザ用のパッケージを提供するかどうかさえ100%確信していないので、検索して見てみましょう-

[root@localhost rdc]# yum search web browser
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com 
 * updates: mirror.clarkson.edu 
=================================================================
N/S matched: web, browser
================================================================== 
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser
plug-in and Web Start implementation
elinks.x86_64 : A text-mode Web browser
firefox.i686 : Mozilla Firefox Web browser
firefox.x86_64 : Mozilla Firefox Web browser
lynx.x86_64 : A text-based Web browser

Full name and summary matches only, use "search all" for everything.
 
[root@localhost rdc]#

ご覧のとおり、CentOSはリポジトリでLynxWebブラウザを提供しています。パッケージに関する詳細情報を見てみましょう。

[root@localhost rdc]# lynx.x86_64
bash: lynx.x86_64: command not found...
[root@localhost rdc]# yum info lynx.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu
Available Packages
Name        : lynx
Arch        : x86_64
Version     : 2.8.8
Release     : 0.3.dev15.el7
Size        : 1.4 M
Repo        : base/7/x86_64
Summary     : A text-based Web browser
URL         : http://lynx.isc.org/
License     : GPLv2
Description : Lynx is a text-based Web browser. Lynx does not display any images, 
            : but it does support frames, tables, and most other HTML tags. One 
            : advantage Lynx has over graphical browsers is speed; Lynx starts and
            : exits quickly and swiftly displays web pages.
            
[root@localhost rdc]#

いいね!バージョン2.8は十分に最新なので、Lynxをインストールしましょう。

[root@localhost rdc]# yum install lynx
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu 
Resolving Dependencies
--> Running transaction check 
---> Package lynx.x86_64 0:2.8.8-0.3.dev15.el7 will be installed 
--> Finished Dependency Resolution  
Dependencies Resolved  
===============================================================================
===============================================================================
Package                          Arch
Version                       Repository                    Size 
===============================================================================
===============================================================================
Installing: 
 lynx                           x86_64
2.8.80.3.dev15.el7              base                        1.4 M

Transaction Summary
===============================================================================
===============================================================================
Install  1 Package

Total download size: 1.4 M 
Installed size: 5.4 M 
Is this ok [y/d/N]: y 
Downloading packages: 
No Presto metadata available for base
lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
| 1.4 MB  00:00:10      
Running transaction check 
Running transaction test 
Transaction test succeeded 
Running transaction 
   Installing : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1
   Verifying  : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1

Installed: 
   lynx.x86_64 0:2.8.8-0.3.dev15.el7
Complete!

[root@localhost rdc]#

次に、Lynxが実際に正しくインストールされたことを確認しましょう。

[root@localhost rdc]# yum list installed | grep -i lynx

lynx.x86_64                   2.8.8-0.3.dev15.el7              @base     
[root@localhost rdc]#

すごい!Lynxを使用して、「いいね」やきれいな写真なしでWebがどのように見えるかを見てみましょう。

[root@localhost rdc]# lynx www.tutorialpoint.in

これで、本番サーバー用のWebブラウザーができました。これは、Web上で起動されるリモートエクスプロイトを心配することなく使用できます。これは本番サーバーにとっては良いことです。

ほぼ完成しましたが、最初に開発者がアプリケーションをテストできるようにこのサーバーを設定する必要があります。したがって、彼らが彼らの仕事に必要なすべてのツールを持っていることを確認しましょう。すべてを個別にインストールすることもできますが、CentOSとYUMによってこれが大幅に高速化されました。開発グループパッケージをインストールしましょう。

[root@localhost rdc]# yum groups list 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: mirror.scalabledns.com 
 * extras: mirror.scalabledns.com 
 * updates: mirror.clarkson.edu
 
Available Groups: 
   Compatibility Libraries 
   Console Internet Tools 
   Development Tools 
   Graphical Administration Tools
   Legacy UNIX Compatibility 
   Scientific Support 
   Security Tools 
   Smart Card Support 
   System Administration Tools 
   System Management 
Done

[root@localhost rdc]#

これは、CentOSが提供するパッケージグループの小さなリストです。「開発グループ」に含まれるものを見てみましょう。

[root@localhost rdc]# yum group info "Development Tools" 
Loaded plugins: fastestmirror, langpacks 
There is no installed groups file. 
Maybe run: yum groups mark convert (see man yum) 
Loading mirror speeds from cached hostfile 
 * base: mirror.scalabledns.com 
 * extras: mirror.scalabledns.com 
 * updates: mirror.clarkson.edu
 
Group: Development Tools 
Group-Id: development 
Description: A basic development environment. 
Mandatory Packages: 
autoconf 
automake 
binutils 
bison

出力の最初の画面は上記のとおりです。このリスト全体はかなり包括的です。ただし、このグループは通常、時間が経つにつれて全体をインストールする必要があります。開発グループ全体をインストールしましょう。

[root@localhost rdc]# yum groupinstall "Development Tools"

これはより大きなインストールになります。完了すると、サーバーにはPerl、Python、C、およびC ++用のほとんどの開発ライブラリとコンパイラが含まれます。

CentOSでのグラフィカルなパッケージ管理

Gnome Desktopは、と呼ばれるグラフィカルなパッケージ管理ツールを提供します Software。使い方はかなり簡単で簡単です。CentOS用のGnomeパッケージ管理ツールであるソフトウェアは、[アプリケーション]→[システムツール]→[ソフトウェア]に移動すると見つかります。

ソフトウェアパッケージ管理ツールはグループに分かれており、管理者はインストールするパッケージを選択できます。このツールはエンドユーザーにとって使いやすさとシンプルさには優れていますが、YUMははるかに強力であり、おそらく管理者によってより多く使用されるでしょう。

以下は、ソフトウェアパッケージ管理ツールのスクリーンショットですが、実際にはシステム管理者向けに設計されたものではありません。

Logical Volume Management (LVM)Linuxが異なる物理ハードディスク全体のストレージボリュームを管理するために使用する方法です。これをRAIDと混同しないでください。ただし、RAID0またはJ-Bodと同様の概念で考えることができます。LVMを使用すると、(たとえば)それぞれ1TBの物理ディスクを3つ作成し、次に/ dev / sdbなどの論理ボリュームを約3TBにすることができます。または、1.5TBの2つの論理ボリューム、500GBの5つのボリューム、または任意の組み合わせです。1つのディスクを論理ボリュームのスナップショットに使用することもできます。

Note−論理ボリュームを使用すると、正しく構成されている場合、実際にはディスクI / Oが増加します。これは、別々のディスクにまたがるRAID0ストライピングデータと同じように機能します。

LVMを使用したボリューム管理について学習するときは、LVMの各コンポーネントが何であるかを知っていると簡単です。次の表を調べて、各コンポーネントをしっかりと把握してください。必要に応じて、Googleを使用して学習してください。論理ボリュームの各部分を理解することは、それらを管理するために重要です。

PV 物理ボリューム sda
PP 物理パーティション sda1、sda2
VG ボリュームグループ プールされた物理リソース
LV 論理ボリューム オペレーティングシステムのストレージ施設と見なされます

A physical volume/ dev / sda、/ dev / sdbとして表示されます。Linuxによって検出された物理ディスク。

A physical partitionfdiskなどのディスクユーティリティによってパーティション化されたディスクのセクションになります。ほとんどの一般的なLVMセットアップでは、物理パーティションは推奨されないことに注意してください。例:ディスク/ dev / sdaは、/ dev / sda1/ dev / sda1の2つの物理パーティションを含むようにパーティション化されています

それぞれ1TBの物理ディスクが2つある場合、2つの間にほぼ2TBのボリュームグループを作成できます。

ボリュームグループから、ボリュームグループの合計サイズを超えない任意のサイズの3つの論理ボリュームを作成できます。

従来のLinuxディスク管理ツール

CentOS 7のLVM管理用の最新かつ最も優れた機能を備えたツールに精通する前に、まずLinuxディスク管理に使用されてきた従来のツールを調べる必要があります。これらのツールは便利であり、System Storage Manager(lsblk、parted、mkfs.xfs)などの今日の高度なLVMツールでも引き続き使用できます。

ここで、システムに1つまたは2つのディスクを追加したと仮定して、Linuxによって検出されたディスクを列挙する必要があります。破壊的と見なされる操作を実行する前に、毎回ディスクを列挙することをお勧めします。lsblkディスク情報を取得するための優れたツールです。CentOSが検出するディスクを見てみましょう。

[root@localhost rdc]# lsblk
NAME         MAJ:MIN    RM    SIZE    RO    TYPE MOUNTPOINT
sda            8:0       0     20G     0        disk 
├─sda1         8:1       0      1G     0     part /boot
└─sda2         8:2       0     19G     0        part 
  ├─cl-root  253:0       0     17G     0      lvm  /
  └─cl-swap  253:1       0      2G     0      lvm  [SWAP]
    sdb       8:16       0      6G     0       disk 
    sdc       8:32       0      4G     0       disk 
    sr0       11:0       1   1024M     0       rom

ご覧のとおり、このシステムにはsda、sdb、sdcの3つのディスクがあります。

Disk sdaには動作中のCentOSインストールが含まれているため、sdaをいじくり回したくありません。このチュートリアルでは、sdbsdcの両方がシステムに追加されました。これらのディスクをCentOSで使用できるようにしましょう。

ディスクラベルを作成する

[root@localhost rdc]# parted /dev/sdb mklabel GPT
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this
   disk will be lost. Do you want to continue?
Yes/No? Yes                               
[root@localhost rdc]#

これで、1つのディスクにラベルが付けられました。sdcでも同じ方法でpartedコマンドを実行するだけです。

ディスク上にパーティションを作成する

各ディスクに1つのパーティションのみを作成します。パーティションを作成するには、partedコマンドを再度使用します。

[root@localhost rdc]# parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Warning − 0.00Bから6442MB(セクター0..12582911)のパーティションを要求しました。

管理できる最も近い場所は、17.4kBから1048kB(セクター34..2047)です。

これはまだあなたに受け入れられますか?

はい・いいえ?番号

[root@localhost rdc]# parted -a opt /dev/sdc mkpart primary ext4 0% 100%

Information − / etc / fstabを更新する必要がある場合があります。

[root@localhost rdc]# lsblk                                               
NAME        MAJ:MIN   RM    SIZE    RO    TYPE MOUNTPOINT
sda           8:0      0     20G     0        disk 
├─sda1        8:1      0      1G     0      part / boot
└─sda2        8:2      0     19G     0        part 
 ├─cl-root  253:0      0     17G     0       lvm  /
 └─cl-swap  253:1      0      2G     0       lvm  [SWAP]
sdb          8:16      0      6G     0        disk 
└─sdb1       8:17      0      6G     0        part 
 sdc         8:32      0      4G     0        disk 
└─sdc1       8:33      0      4G     0        part 
sr0          11:0      1   1024M     0        rom

[root@localhost rdc]#

lsblkの出力からわかるように、2つのパーティションがあり、それぞれがsdbとsdcにあります。

ファイルシステムを作成する

最後に、ボリュームをマウントして使用する前に、ファイルシステムを追加する必要があります。XFSファイルシステムを使用します。

root@localhost rdc]# mkfs.xfs -f /dev/sdb1
meta-data = /dev/sdb1               isize = 512    agcount = 4, agsize = 393088 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1572352, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0
[root@localhost rdc]# mkfs.xfs -f /dev/sdc1
meta-data   = /dev/sdc1             isize = 512    agcount = 4, agsize = 262016 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1048064, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0

[root@localhost rdc]#

それぞれに使用可能なファイルシステムがあることを確認しましょう。

[root@localhost rdc]# lsblk -o NAME,FSTYPE
NAME           FSTYPE
sda         
├─sda1         xfs
└─sda2         LVM2_member
 ├─cl-root     xfs
 └─cl-swap     swap
sdb         
└─sdb1         xfs
sdc         
└─sdc1         xfs
sr0

[root@localhost rdc]#

現在、それぞれがXFSファイルシステムを使用しています。それらをマウントし、マウントを確認して、それぞれにファイルをコピーしましょう。

[root@localhost rdc]# mount -o defaults /dev/sdb1 /mnt/sdb
[root@localhost rdc]# mount -o defaults /dev/sdc1 /mnt/sdc

[root@localhost ~]# touch /mnt/sdb/myFile /mnt/sdc/myFile
[root@localhost ~]# ls /mnt/sdb /mnt/sdc
 /mnt/sdb:
  myFile

 /mnt/sdc:
  myFile

この時点で、2つの使用可能なディスクがあります。ただし、手動でマウントした場合にのみ使用できます。それぞれを起動時にマウントするには、fstabファイルを編集する必要があります。また、新しいディスクへのアクセスが必要なグループにアクセス許可を設定する必要があります。

ボリュームグループと論理ボリュームの作成

CentOS 7への最大の追加の1つは、System StorageManagerまたはssmと呼ばれるユーティリティが含まれていることでした。System Storage Manager LinuxでLVMプールとストレージボリュームを管理するプロセスを大幅に簡素化します。

CentOSで単純なボリュームプールと論理ボリュームを作成するプロセスを実行します。最初のステップは、System StorageManagerをインストールすることです。

[root@localhost rdc]# yum  install system-storage-manager

ssmlistコマンドを使用してディスクを見てみましょう。

上記のように、合計3つのディスクがシステムにインストールされています。

  • /sdba1 −CentOSインストールをホストします

  • /sdb1 − / mnt / sdbにマウント

  • /sdc1 − / mnt / sdcにマウント

私たちがやりたいのは、2つのディスク(sdbとsdc)を使用してボリュームグループを作成することです。次に、3つの3GB論理ボリュームをシステムで使用できるようにします。

ボリュームグループを作成しましょう。

[root@localhost rdc]# ssm create -p NEW_POOL /dev/sdb1 /dev/sdc1

デフォルトでは、ssmはプールの10GB全体を拡張する単一の論理ボリュームを作成します。これは必要ないので、削除しましょう。

[root@localhost rdc]# ssm remove /dev/NEW_POOL/lvol001
 Do you really want to remove active logical volume NEW_POOL/lvol001? [y/n]: y
 Logical volume "lvol001" successfully removed
[root@localhost rdc]#

最後に、3つの論理ボリュームを作成しましょう。

[root@localhost rdc]# ssm create -n disk001 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk002 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk003 --fs xfs -s 3GB -p NEW_POOL

それでは、新しいボリュームを確認しましょう。

これで、2つの物理ディスクパーティションにまたがる3つの個別の論理ボリュームがで​​きました。

論理ボリュームは、CentOSLinuxに組み込まれた強力な機能です。これらの管理については、表面に触れました。マスタリングプールと論理ボリュームには、TutorialsPointからの練習と拡張学習が付属しています。今のところ、CentOSでのLVM管理の基本を学び、単一のホスト上に基本的なストライプ論理ボリュームを作成する機能を備えています。