Linux-admin-quick-guide
Linux管理-CentOSの概要
ビジネスクラスのLinuxディストリビューションの中でもユニークなCentOSは、Linuxが設立されたオープンソースの性質に忠実です。 最初のLinuxカーネルは、ヘルシンキ大学(Linus Torvalds)の大学生によって開発され、Richard Stallmanによって設立および推進されたGNUユーティリティと組み合わされました。 CentOSには、今日のビジネスの世界を動かすことができる実証済みのオープンソースライセンスがあります。
CentOSは、すぐに世界で最も多産なサーバープラットフォームの1つになりました。 Linuxの管理者は、雇用を求めるとき、「CentOS Linux Experience Preferred」という言葉に出くわすはずです。 新興企業から_Fortune 10_技術巨人まで、CentOSは世界中のサーバーオペレーティングシステムの上位階層に位置付けられています。
CentOSを他のLinuxディストリビューションから際立たせているのは、以下の素晴らしい組み合わせです-
- オープンソースライセンス
- Linuxプロフェッショナルの専用ユーザーベース
- 優れたハードウェアサポート
- 堅実な安定性と信頼性
- セキュリティと更新に焦点を当てる
- 企業環境で必要なソフトウェアパッケージング標準への厳密な準拠
- {ブランク}
レッスンを開始する前に、読者は次のようなLinuxおよび管理の基礎に関する基本的な知識があることを前提としています-
- rootユーザーとは何ですか?
- ルートユーザーの力
- セキュリティグループとユーザーの基本概念
- Linuxターミナルエミュレーターの使用経験
- 基本的なネットワーキングの概念
- インタプリタ型プログラミング言語(Perl、Python、Ruby)の基本的な理解
- HTTP、LDAP、FTP、IMAP、SMTPなどのネットワークプロトコル
- コンピューターのオペレーティングシステムを構成するコア:ファイルシステム、ドライバー、およびカーン
基本的なCentOS Linuxコマンド
CentOS Linux管理者のツールを学ぶ前に、Linux管理コマンドラインの背後にある哲学に注意することが重要です。
Linuxは、「小さなタスクと正確なツールをつなぎ合わせて大きなタスクを簡素化する」というUnixの哲学に基づいて設計されました。 Linuxの根本には、多くの場合、特定の用途向けの大規模な単一目的アプリケーションはありません。 代わりに、何百もの基本的なユーティリティがあり、これらを組み合わせることで、大きなタスクを効率的に達成するための優れたパワーを提供します。
Linux哲学の例
たとえば、管理者がシステム上の現在のすべてのユーザーのリストを必要とする場合、次のチェーンコマンドを使用してすべてのシステムユーザーのリストを取得できます。 コマンドを実行すると、ユーザーはシステム上にアルファベット順にリストされます。
次のコマンドを使用すると、このリストをテキストファイルに簡単にエクスポートできます。
後日、ユーザーリストとエクスポートを比較することもできます。
大きなツールを実行するための小さなツールのこのアプローチでは、定期的に間隔を空けて結果を自動的に電子メールで送信するよりも、これらのコマンドを実行するスクリプトを作成する方が簡単です。
すべてのLinux管理者が熟練している必要がある基本的なコマンドは-
- リンク:/linux_admin/linux_admin_using_vi_vim_text_editor [vim]
- リンク:/linux_admin/linux_admin_grep_command [grep]
- リンク:/linux_admin/linux_admin_more_and_less_command [more and less]
- リンク:/linux_admin/linux_admin_tail_command [tail]
- リンク:/linux_admin/linux_admin_head_command [head]
- リンク:/linux_admin/linux_admin_wc_command [wc]
- リンク:/linux_admin/linux_admin_sort_command [sort]
- リンク:/linux_admin/linux_admin_uniq_command [uniq]
- リンク:/linux_admin/linux_admin_tee_command [tee]
- リンク:/linux_admin/linux_admin_cat_command [cat]
- リンク:/linux_admin/linux_admin_cut_command [cut]
- リンク:/linux_admin/linux_admin_sed_command [sed]
- リンク:/linux_admin/linux_admin_tr_command [tr]
- リンク:/linux_admin/linux_admin_paste_command [paste]
Linuxの世界では、管理者は毎日 filtering コマンドを使用してログを解析し、コマンド出力をフィルター処理し、対話型シェルスクリプトでアクションを実行します。 前述のように、これらのコマンドの能力は、 piping と呼ばれるプロセスを介して相互に変更する能力にあります。
次のコマンドは、CentOSメインユーザー辞書の文字aで始まる単語の数を示しています。
Linux Admin-ファイル/フォルダー管理
CentOS Linuxのディレクトリとファイルの両方に適用される許可を導入するために、次のコマンド出力を見てみましょう。
注-表示される3つの主要なオブジェクトタイプは
- _ "-" _ -プレーンファイルのダッシュ
- _ "d" _ -ディレクトリの場合
- _ "l" _ -シンボリックリンクの場合
私たちは、各ディレクトリとファイルの出力の3つのブロックに焦点を当てます-
- drwxr-xr-x:ルート:ルート
- -rw-r—r--:ルート:ルート
- drwxr-xr-x:ルート:ルート
今、これらの行をよりよく理解するために、これを分解しましょう-
d | Means the object type is a directory |
rwx | Indicates directory permissions applied to the owner |
r-x | Indicates directory permissions applied to the group |
r-x | Indicates directory permissions applied to the world |
root | The first instance, indicates the owner of the directory |
root | The second instance, indicates the group to which group permissions are applied |
owner _、 group_、および_world_の違いを理解することが重要です。 これを理解しないと、インターネットへのサービスをホストするサーバーに大きな影響を及ぼす可能性があります。
実際の例を示す前に、_directories_と_files_に適用されるアクセス許可を理解しましょう。
次の表をご覧になり、指示に従ってください。
Octal | Symbolic | Perm. | Directory |
---|---|---|---|
1 | x | Execute | Enter the directory and access files |
2 | w | Write | Delete or modify the files in a directory |
4 | r | Read | List the files within the directory |
注意-ディレクトリの読み取りのためにファイルにアクセスできる必要がある場合、_read_および_execute_パーミッションを適用するのが一般的です。 そうしないと、ユーザーはファイルの操作が困難になります。 _write_を無効のままにすると、ファイルの名前変更、削除、コピー、またはアクセス許可の変更ができなくなります。
ディレクトリとファイルへのアクセス許可の適用
アクセス許可を適用する場合、理解する必要がある2つの概念があります-
- シンボリック許可
- オクタル許可
本質的に、それぞれは同じですが、ファイル許可を参照し、割り当てる方法が異なります。 クイックガイドについては、次の表を調べて参照してください-
Read | Write | Execute | |
Octal | 4 | 2 | 1 |
Symbolic | r | w | x |
別のシナリオ:733は次のように変換されます:Owner:rwx;グループ:wx;その他:wx。
Octalメソッドを使用したアクセス許可には1つの欠点があります。 既存の許可セットは変更できません。 オブジェクトの権限セット全体を再割り当てすることのみが可能です。
今、あなたは不思議に思うかもしれません、常に許可を再割り当てすることの何が悪いのでしょうか? 実稼働Webサーバー上の_/var/www/_などの大きなディレクトリ構造を想像してください。 Otherのすべてのディレクトリで_w_または_write bit_を再帰的に削除します。 したがって、セキュリティ対策のために必要な場合にのみ、積極的に追加することを強制します。 権限セット全体を再割り当てすると、すべてのサブディレクトリに割り当てられた他のすべてのカスタム権限が削除されます。
したがって、システムの管理者とユーザーの両方に問題が発生します。 ある時点で、個人(または個人)は、すべてのディレクトリとオブジェクトのパーミッションセット全体を再割り当てすることにより、消去されたすべてのカスタムパーミッションを再割り当てする必要があります。
この場合、我々はシンボリックメソッドを使用してアクセス許可を変更したいでしょう-
上記のコマンドは「許可を上書き」しませんが、現在の許可セットを変更します。 そのため、ベストプラクティスの使用に慣れる
- 許可を割り当てるためだけの8進数
- 許可セットを変更するシンボリック
CentOS管理者は、_Octal_パーミッションと_Symbolic_パーミッションの両方に習熟していることが重要です。パーミッションは、データとオペレーティングシステム全体の整合性にとって重要です。 アクセス許可が正しくない場合、最終結果は機密データとなり、オペレーティングシステム全体が危険にさらされます。
それがカバーされているので、パーミッションとオブジェクトの所有者/メンバーを変更するためのいくつかのコマンドを見てみましょう-
- chmod
- チャウン
- chgrp
- 仮面
chmod:ファイルモード許可ビットの変更
Command | Action |
---|---|
-c | Like verbose, but will only report the changes made |
-v | Verbose, outputsthe diagnostics for every request made |
-R | Recursively applies the operation on files and directories |
chmodにより、_octal_または_symbolic_許可セットを使用してディレクトリとファイルの許可を変更できます。 これを使用して、割り当てを変更し、ディレクトリをアップロードします。
chown:ファイルの所有者とグループの変更
Command | Action |
---|---|
-c | Like verbose, but will only report the changes made |
-v | Verbose, outputsthe diagnostics for every request made |
-R | Recursively applies the operation on files and directories |
_chown_は、所有するユーザーとオブジェクトのグループの両方を変更できます。 ただし、両方を同時に変更する必要がない限り、_chgrp_の使用は通常グループに使用されます。
chgrp:ファイルまたはディレクトリのグループ所有権の変更
Command | Action |
---|---|
-c | Like verbose, but will only report the changes |
-v | Verbose, outputs the diagnostics for every request made |
-R | Recursively, applies the operations on file and directories |
chgrpは、グループ所有者を指定された所有者に変更します。
実世界の練習
所有グループが_students_グループになるように、_/var/www/students/_内のすべてのサブディレクトリの割り当てを変更しましょう。 次に、_students_のルートを教授グループに割り当てます。 後で、博士を作ります _students_ディレクトリの所有者であるTerry Thomasは、学校のすべてのコンピューターサイエンスアカデミアを担当する任務を負っています。
ご覧のとおり、作成されたディレクトリはかなり未加工のままです。
管理者として、私たちは_root_資格情報をだれにも公開したくありません。 しかし同時に、ユーザーが仕事を行えるようにする必要があります。 だから博士を許可しましょう Terry Thomasは、ファイル構造をさらに制御し、学生ができることを制限します。
現在、各ディレクトリとサブディレクトリの所有者は_drterryt_で、所有グループは_professors_です。 _assignments_ディレクトリは学生が割り当てられた課題を提出するためのものであるため、_students_グループから_files_をリストおよび変更する機能を削除しましょう。
学生は課題を_assignments_ディレクトリにコピーできます。 ただし、ディレクトリの内容を一覧表示したり、現在のファイルをコピーしたり、_assignments_ディレクトリ内のファイルを変更したりすることはできません。 したがって、学生は完了した課題を提出することができます。 CentOSファイルシステムは、割り当てが有効になったときの日付スタンプを提供します。
_assignments_ディレクトリの所有者として-
ディレクトリの所有者は、ファイルをリストしたり、ファイルを変更および削除したりできます。
umaskコマンド:ファイルおよびディレクトリのアクセス許可のデフォルトモードを作成時に提供する
_umask_は、ファイルとディレクトリの作成時にデフォルトのモードを提供する重要なコマンドです。
_umask_パーミッションは、単項否定論理を使用します。
Permission | Operation |
---|---|
0 | Read, write, execute |
1 | Read and write |
2 | Read and execute |
3 | Read only |
4 | Read and execute |
5 | Write only |
6 | Execute only |
7 | No permissions |
では、現在のユーザーの_umask_を変更して、新しいファイルとディレクトリを作成しましょう。
ご覧のとおり、新しく作成されたファイルは以前よりも少し制限が厳しくなります。
ユーザーの_umask_はどちらかで変更する必要があります-
- /etc/profile * 〜/bashrc
通常、CentOSのデフォルトの_umask_は問題ありません。 デフォルトの_0022_で問題が発生するのは、通常、異なるグループに属する異なる部門がプロジェクトで協力する必要がある場合です。
CentOSオペレーティングシステムの操作と設計のバランスを取るために、ここでシステム管理者の役割が入ります。
Linux Admin-ユーザー管理
_user_管理を議論するとき、理解する3つの重要な用語があります-
- ユーザー
- グループ
- 許可
ファイルとフォルダーに適用される詳細なアクセス許可については既に説明しました。 この章では、ユーザーとグループについて説明します。
CentOSユーザー
CentOSでは、2種類のアカウントがあります-
- システムアカウント-デーモンまたはその他のソフトウェアに使用されます。
- インタラクティブアカウント-通常、システムリソースにアクセスするためにユーザーに割り当てられます。
2つのユーザータイプの主な違いは-
- *システムアカウント*は、ファイルとディレクトリにアクセスするためにデーモンによって使用されます。 これらは通常、シェルまたは物理的なコンソールログインを介した対話型ログインを許可されません。
- *インタラクティブアカウント*は、シェルまたは物理コンソールログインからコンピューティングリソースにアクセスするためにエンドユーザーによって使用されます。
このユーザーの基本的な理解を踏まえて、会計部門のボブ・ジョーンズの新しいユーザーを作成しましょう。 adduser コマンドを使用して、新しいユーザーを追加します。
以下は、いくつかの adduser 共通スイッチです-
Switch | Action |
---|---|
-c | Adds comment to the user account |
-m | Creates user home directory in default location, if nonexistent |
-g | Default group to assign the user |
-n | Does not create a private group for the user, usually a group with username |
-M | Does not create a home directory |
-s | Default shell other than/bin/bash |
-u | Specifies UID (otherwise assigned by the system) |
-G | Additional groups to assign the user to |
新しいユーザーを作成するときは、次のように_-c、-m、-g、-n_スイッチを使用します-
次に、新しいユーザーが作成されたかどうかを確認しましょう-
今、私たちはpasswdコマンドを使用して新しいアカウントを有効にする必要があります-
ユーザーアカウントが有効になっていないため、ユーザーはシステムにログインできません。
ユーザーアカウントを無効にする
システムでアカウントを無効にする方法はいくつかあります。 これらは、/etc/passwdファイルを手動で編集することから始まります。 または、passwd_コマンドと* '- l _ *スイッチを使用します。 どちらの方法にも大きな欠点が1つあります。ユーザーが_ssh_アクセス権を持ち、認証にRSAキーを使用する場合、この方法を使用してログインできます。
次に、_chage_コマンドを使用して、パスワードの有効期限を前の日付に変更します。 また、無効にした理由をアカウントに書き留めておくこともできます。
グループを管理する
Linuxでグループを管理すると、管理者がコンテナー内のユーザーを結合して、すべてのグループメンバーに適用できる権限セットを適用するのが便利になります。 たとえば、経理部門のすべてのユーザーが同じファイルにアクセスする必要がある場合があります。 したがって、会計ユーザーを追加して、会計グループを作成します。
ほとんどの場合、特別な権限を必要とするものはすべてグループで行う必要があります。 このアプローチは、通常、1人のユーザーだけに特別な許可を適用するよりも時間を節約します。 たとえば、Sallyはレポートを担当しており、Sallyのみがレポートのために特定のファイルにアクセスする必要があります。 しかし、サリーがいつか病気になり、ボブが報告した場合はどうなりますか? または、レポートの必要性が高まりますか? グループが作成されると、管理者は一度だけそれをする必要があります。 ユーザーの追加は、ニーズの変化または拡大に応じて適用されます。
以下は、グループの管理に使用されるいくつかの一般的なコマンドです-
chgrp
groupadd
グループ
usermod
会計グループの人々がファイルを保存し、ファイル用のディレクトリを作成するためのディレクトリを作成しましょう。
次に、_group_ownership_を_accounting_グループに与えましょう。
これで、アカウンティンググループの全員が_/home/accounting_に対する_read_および_execute_権限を持ちます。 書き込み権限も必要になります。
_accounting group_は機密文書を処理する可能性があるため、_other_または_world_にいくつかの制限付きアクセス許可を適用する必要があります。
Switch | Action |
---|---|
-g | Specifies a GID for the group |
-K | Overrides specs for GID in/etc/login.defs |
-o | Allows overriding non-unique group id disallowance |
-p | Group password, allowing the users to activate themselves |
secretという新しいグループを作成しましょう。 グループにパスワードを追加し、ユーザーが既知のパスワードで自分自身を追加できるようにします。
実際には、グループのパスワードはあまり使用されません。 セカンダリグループは適切であり、他のユーザー間でパスワードを共有することはセキュリティ上の優れた慣行ではありません。
一般的な_usermod_スイッチは次のとおりです。
Switch | Action |
---|---|
-a | Appends, adds user to supplementary groups, only with the -G option |
-c | Comment, updatesthe user comment value |
-d | Home directory, updates the user’s home directory |
-G | Groups, adds or removesthe secondary user groups |
-g | Group, default primary group of the user |
Linux Admin-クォータ管理
CentOSディスククォータは両方とも有効にできます。ディスク容量を超える前に、システム管理者に警告し、ユーザーへのディスクストレージアクセスを拒否します。 ディスクがいっぱいになると、ディスクの内容に応じて、システム全体が回復するまで悲鳴を上げることがあります。
CentOS Linuxでクォータ管理を有効にするのは、基本的に4つのステップのプロセスです-
- *ステップ1 *-/etc/fstabでグループとユーザーのクォータ管理を有効にします。
- *ステップ2 *-ファイルシステムを再マウントします。
- *ステップ3 *-クォータデータベースを作成し、ディスク使用量テーブルを生成します。
- *ステップ4 *-クォータポリシーを割り当てます。
===/etc/fstabでクォータ管理を有効にします
まず、/etc/fstab filenをバックアップします-
現在、現在の作業ディレクトリに_known working_/etc/fstabのコピーがあります。
ユーザーまたはグループにクォータが適用されるボリュームまたはラベルの_/etc/fstab_のオプションセクションで、次の変更を行いました。
- usrquota
- grpquota
ご覧のとおり、 _ xfs_ ファイルシステムを使用しています。 xfsを使用する場合、追加の手動手順が必要です。 /home は/と同じディスク上にあります。 さらに調査すると、カーネルレベルのマウントオプションである_noquota_に/が設定されていることがわかります。 カーネルブートオプションを再構成する必要があります。
XFSファイルシステムのカーネルブートオプションの再構成
このステップは、2つの条件下でのみ必要です-
- クォータを有効にしているディスク/パーティションがxfsファイルシステムを使用している場合
- カーネルがブート時にnoquotaパラメーターを/etc/fstabに渡すとき
- ステップ1 *-/etc/default/grubのバックアップを作成します。
- ステップ2 *-_/etc/default/grub_を変更します。
これがデフォルトのファイルです。
私たちは次の行を変更したい-
to
注-これらの変更を逐語的にコピーすることが重要です。 grub.cfgを再構成した後、構成でエラーが発生した場合、システムの起動に失敗します。 非実動システムでチュートリアルのこの部分を試してください。
- ステップ3 *-作業中のgrub.cfgをバックアップします
新しい_grub.cfg_を作成します
リブート
すべての変更が正確だった場合、_xfs_ファイルシステムにクォータを追加できるようにする必要はありません。
_usrquota_および_grpquota_パラメーターをgrub経由で渡しました。
ここで、/etc/fstab_を再度編集して、同じ物理ディスク/homeon_から/を含めます。
それでは、クォータデータベースを有効にしましょう。
クォータが有効になっていることを確認してください。
ファイルシステムを再マウントする
パーティションまたはディスクがアクティブに起動されたパーティションから分離されている場合、再起動せずに再マウントできます。 ルートディレクトリ/で起動されたディスク/パーティションにクォータが設定されている場合、オペレーティングシステムの再起動が必要になる場合があります。 再マウントを強制して変更を適用すると、ファイルシステムを再マウントする必要が異なる場合があります。
ご覧のとおり、LVMボリュームが使用されています。 したがって、再起動するのは簡単です。 これにより、/home_が再マウントされ、/etc/fstab_構成の変更がアクティブな構成にロードされます。
クォータデータベースファイルを作成する
CentOSは/homeのディスククォータを操作できるようになりました。 フルクォータのサポートを有効にするには、 quotacheck コマンドを実行する必要があります。
quotacheckは2つのファイルを作成します-
- aquota.user
- aquota.group
これらは、クォータが有効なディスク/パーティションのクォータ情報を保存するために使用されます。
一般的なquotacheckスイッチは次のとおりです。
Switch | Action |
---|---|
-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 |
ユーザーごとにクォータ制限を追加する
このために、edquotaコマンドを使用し、その後にユーザー名を続けます-
各列を見てみましょう。
- ファイルシステム-適用されるユーザーのファイルシステムのクォータです
- blocks -ユーザーが各ファイルシステムで現在使用しているブロック数
- soft -ソフト制限のブロックを設定します。 ソフト制限により、ユーザーは所定の期間のクォータを保持できます
- hard -ハード制限のブロックを設定します。 ハード制限は、総許容クォータです
- inodes -ユーザーが現在使用しているiノードの数
- soft -ソフトiノードの制限
- hard -ハードiノードの制限
ユーザーとして現在のクォータを確認するには-
以下は、ハードクォータの制限を超えたときにユーザーに表示されるエラーです。
ご覧のとおり、このユーザーのディスククォータ内にあります。 ソフト制限警告を設定しましょう。 これにより、ユーザーはクォータ制限が切れる前に事前に通知されます。 経験から、エンドユーザーが仕事を始めると、実際に仕事を始めるためにファイルを消去するのに45分を費やす必要があると、エンドユーザーから苦情が寄せられます。
管理者は、 repquota コマンドでクォータの使用状況を確認できます。
ご覧のとおり、ユーザーcentosはハードブロッククォータを超えているため、_/home_のディスクスペースを使用できなくなりました。
-+は、ファイルシステムでハードクォータを超えたことを示します。
クォータを計画するときは、少し計算する必要があります。 管理者が知っておく必要があるのは:システム上に何人のユーザーがいるのか? ユーザー/グループ間でどのくらいの空き領域を割り当てる必要がありますか? ファイルシステム上のブロックを構成するバイト数は?
空きディスク領域に関連するブロックの観点からクォータを定義します。最悪のシナリオであるファイルシステムに空き領域の「安全な」バッファを残すことをお勧めします。すべてのクォータを同時に超過します。 これは特に、システムがログを書き込むために使用するパーティションで発生します。
Systemdサービスの開始と停止
initシステムとしての_systemd_は、Linuxカーネルの起動後にステータスの変更が必要なサービスとデーモンの両方を管理するために使用されます。 ステータスの変更により、サービス状態の開始、停止、リロード、および調整が適用されます。
まず、サーバーで現在実行されているsystemdのバージョンを確認しましょう。
CentOSバージョン7では、この執筆時点で完全に更新されたsystemdバージョン219が現在の安定バージョンです。
_systemd-analyze_を使用して、最後のサーバーの起動時間を分析することもできます
システムの起動時間が遅い場合は、_systemd-analyze blame_コマンドを使用できます。
_systemd_を使用する場合、_units_の概念を理解することが重要です。 *ユニット*は、_systemd_が解釈方法を知っているリソースです。 ユニットは次のように12種類に分類されます-
- 。サービス
- 。ソケット
- 。デバイス
- 。マウント
- .automount
- 。スワップ
- 。ターゲット
- 。パス
- 。タイマー
- .snapshot
- 。スライス
- 。範囲
ほとんどの場合、ユニットサービスとして.serviceを使用します。 他のタイプについてさらに調査することをお勧めします。 systemd_サービスの開始と停止には.service_ユニットのみが適用されるため。
各_unit_は、次のいずれかにあるファイルで定義されます-
- /lib/systemd/system -ベースユニットファイル
- /etc/systemd/system -実行時に変更されたユニットファイル
systemctlを使用してサービスを管理する
_systemd_を使用するには、_systemctl_コマンドに精通する必要があります。 以下は、_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 @. |
基本的なsystemctlの使用法
ボックスで実行されているすべてのサービスを簡単に確認します。
サービスを停止する
最初に、bluetoothサービスを停止します。
ご覧のとおり、bluetoothサービスは非アクティブになっています。
Bluetoothサービスを再度開始するには。
注-.service_が暗示されているため、bluetooth.serviceを指定しませんでした。 処理しているサービスに_unit type_を追加することを考えるのは良い習慣です。 したがって、ここからは、。service_拡張子を使用して、サービスユニットの操作に取り組んでいることを明確にします。
サービスで実行できる主なアクションは次のとおりです-
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 |
上記のアクションは、主に次のシナリオで使用されます-
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. |
サービスのステータスを確認するには-
_networking_サービスの現在のステータスを表示します。 私たちはネットワーキングに関連するすべてのサービスを見たい場合は、使用することができます-
サービスを管理する sysinit メソッドに精通している人にとっては、_systemd_に移行することが重要です。 _systemd_は、Linuxでデーモンサービスを開始および停止する新しい方法です。
Linux Admin-systemctlを使用したリソース管理
- システム化されたユニットを構成する
- systemd untisのステータスを取得します
- サービスの開始と停止
- ランタイムなどのsystemdサービスを有効/無効にします。
_systemctl_のコマンド構文は非常に基本的ですが、スイッチとオプションが絡む可能性があります。 CentOS Linuxの管理に必要な_systemctl_の最も重要な機能を紹介します。
以下は、_systemctl_で使用される一般的なコマンドです-
- 開始
- stop
- 再起動
- リロードする
- 状態
- アクティブです
- リスト単位
- 有効にする
- 無効にする
- cat
- show
systemctlで_start 、 stop 、 reload 、 restart 、 enable 、 disable_について既に説明しました。 それでは、残りの一般的に使用されるコマンドを見ていきましょう。
状態
その最も単純な形式では、statusコマンドを使用して、全体としてシステムの状態を確認することができます-
上記の出力は要約されています。 実際には、_systemctl status_は約100行のツリー化されたプロセスステータスを出力します。
ファイアウォールサービスのステータスを確認したいとしましょう-
ご覧のとおり、ファイアウォールサービスは現在アクティブであり、4時間以上使用されています。
リスト単位
list-unitsコマンドを使用すると、特定のタイプのすべてのユニットをリストできます。 _systemd_によって管理されているソケットを確認しましょう-
それでは、現在実行中のサービスを確認しましょう-
アクティブです
_is-active_コマンドは、ユニットのステータス情報を返すように設計されたsystemctlコマンドの例です。
cat
_cat_は、めったに使用されないコマンドの1つです。 シェルでcatを使用してユニットファイルへのパスを入力する代わりに、_systemctl cat_を使用します。
_systemd_と_systemctl_の両方をさらに詳しく調べたので、それらを使用して_cgroups_または_control groups_のリソースを管理しましょう。
Linux Admin-crgoupsによるリソース管理
_cgroups_またはコントロールグループはLinuxカーネルの機能であり、管理者はサービスおよびグループ化のためにシステムリソースを割り当てたり制限したりできます。
実行中のアクティブな_control groups_をリストするには、次の_ps_コマンドを使用できます-
CentOS 6.Xの時点でのリソース管理は、_systemd init_実装で再定義されました。 サービスのリソース管理を考えるとき、主に注目すべきは_cgroups_です。 cgroups は、機能性とシンプルさの両方で_systemd_で進歩しました。
リソース管理におけるcgroupの目標は、1つのサービスがシステム全体をダウンさせることはできないことです。 または、単一のサービスプロセス(おそらく不十分に記述されたPHPスクリプト)が、リソースを消費しすぎてサーバー機能を損なうことはありません。
_cgroups_は、以下のリソースのユニットのリソース制御を許可します-
- CPU -CPUを集中的に使用するタスクを、他のそれほど集中的ではないタスクとして制限しない
- メモリ-サービスが消費できるメモリ量を制限する
- ディスク-ディスクI/Oを制限する
- CPU時間:**
より低いCPU優先度を必要とするタスクは、カスタム構成のCPUスライスを持つことができます。
たとえば、次の2つのサービスを見てみましょう。
ポライトCPUサービス1
邪悪なCPUサービス2
より低いCPU優先度を使用してポライトサービスを設定しましょう-
ご覧のように、通常のシステムアイドル時間の間、両方の不正プロセスはまだCPUサイクルを使用しています。 ただし、タイムスライスが少なく設定されているのは、CPU時間の使用量が少ないことです。 これを念頭に置いて、より短いタイムスライスを使用すると、重要なタスクがシステムリソースにアクセスしやすくなることがわかります。
各リソースのサービスを設定するには、_set-property_メソッドは次のパラメータを定義します-
CPU Slices | CPUShares |
Memory Limit | MemoryLimit |
Soft Memory Limit | MemorySoftLimit |
Block IO Weight | BlockIOWeight |
Block Device Limit (specified in/volume/path) ) | BlockIODeviceWeight |
Read IO | BlockIOReadBandwidth |
Disk Write IO | BlockIOReadBandwidth |
ほとんどの場合、サービスは_CPU use 、 Memory limits_、および_Read/Write IO_によって制限されます。
それぞれを変更した後、systemdをリロードしてサービスを再起動する必要があります-
CentOS LinuxでCGroupsを構成する
CentOS Linuxでカスタムcgroupを作成するには、最初にサービスをインストールして構成する必要があります。
- ステップ1 *-libcgroupをインストールします(まだインストールされていない場合)。
ご覧のとおり、デフォルトでCentOS 7には_everything_インストーラーでlibcgroupがインストールされています。 最小インストーラーを使用するには、_libcgroup_ユーティリティーと依存関係をインストールする必要があります。
- ステップ2 *-cgconfigサービスを開始して有効にします。
Linux Admin-プロセス管理
以下は、Process Managementで使用される一般的なコマンドです。bg、fg、nohup、ps、pstree、top、kill、killall、free、uptime、nice。
プロセスを操作する
クイックノート:LinuxでのPIDの処理
Linuxでは、実行中のすべてのプロセスにPIDまたはプロセスID番号が付与されます。 この_PID_は、CentOSが特定のプロセスを識別する方法です。 前述したように、_systemd_は、CentOSで最初に開始され、PIDが1のプロセスです。
ご覧のとおり、_pgrep_コマンドはsystemdの現在のPIDを返します。
CentOSの基本的なCentOSプロセスとジョブ管理
Linuxでプロセスを操作する場合、コマンドラインで基本的なフォアグラウンド処理とバックグラウンド処理がどのように実行されるかを知ることが重要です。
- fg -プロセスをフォアグラウンドにします
- bg -プロセスをバックグラウンドに移動します
- jobs -シェルに接続されている現在のプロセスのリスト
- ctrl + z -現在のプロセスをスリープさせるためのCtrl + zキーの組み合わせ
- &-バックグラウンドでプロセスを開始します
シェルコマンド_sleep_の使用を開始しましょう。 sleep は、指定された時間だけスリープします:sleep。
今、最初の仕事を手前に持って行きましょう-
フォローしている場合、フォアグラウンドジョブがシェルでスタックしていることに気付くでしょう。 次に、プロセスをスリープ状態にしてから、バックグラウンドで再度有効にします。
- Ctrl + Zを押す
- bg 1と入力して、最初のジョブをバックグラウンドに送信して開始します。
ノープ
シェルまたはターミナルから作業する場合、デフォルトでは、シェルが閉じられるか、ユーザーがログアウトすると、シェルに接続されているすべてのプロセスとジョブが終了することに注意してください。 _nohup_を使用している場合、ユーザーがログアウトするか、プロセスが接続されているシェルを閉じると、プロセスは引き続き実行されます。
psコマンド
上記のコマンドでは、_python_インタープリターを使用するすべてのプロセスが表示されます。 また、文字列_python_を探すgrepコマンドも結果に含まれていました。
以下は、_ps_で使用される最も一般的なコマンドラインスイッチです。
Switch | Action |
---|---|
a | Excludes constraints of only the reporting processes for the current user |
x | Shows processes not attached to a tty or shell |
w | Formats wide output display of the output |
e | Shows environment after the command |
-e | Selects all processes |
-o | User-defined formatted output |
-u | Shows all processes by a specific user |
-C | Shows all processes by name or process id |
--sort | Sorts the processes by definition |
_nobody_ユーザーが使用中のすべてのプロセスを表示するには-
_firewalld_プロセスに関するすべての情報を表示するには-
どのプロセスが最もメモリを消費しているかを見てみましょう-
ユーザーの中心と形式ごとにすべてのプロセスを確認し、カスタム出力を表示します-
pstreeコマンド
_pstree_からの合計出力は100行を超えることがあります。 通常、_ps_はより有用な情報を提供します。
topコマンド
topの実行中に使用される一般的な_hot keys_(_hot keys_は、シェルでtopが実行されているときにキーを押すことによりアクセスされます)。
Command | Action |
---|---|
b | Enables/disables bold highlighting on top menu |
z | Cycles the color scheme |
l | Cycles the load average heading |
m | Cycles the memory average heading |
t | Task information heading |
h | Help menu |
Shift+F | Customizes sorting and display fields |
以下は、_top_の一般的なコマンドラインスイッチです。
Command | Action |
---|---|
-o | Sorts by column (can prepend with - or + to sort ascending or descending) |
-u | Shows only processes from a specified user |
-d | Updates the delay time of top |
-O | Returns a list of columns which top can apply sorting |
_Shift + F_を使用して表示される上部の並べ替えオプション画面。 この画面では、_top_表示および並べ替えオプションをカスタマイズできます。
top、ユーザー_rdc_のプロセスを表示し、メモリ使用量でソート-
有効なトップフィールドの表示(凝縮)-
killコマンド
- SIGTERM は、カーネルがプロセスに停止する必要があることを知らせるために暗示されています。 _SIGTERM_は、プロセスが正常に終了し、安全な終了操作を実行する機会を提供します。
- SIGHUP ほとんどのデーモンは、_SIGHUP_を送信すると再起動します。 これは、構成ファイルに変更が加えられたときにプロセスでよく使用されます。
- SIGKILL は、_SIGTERM_がプロセスのシャットダウンを要求するのと同等であるためです。 カーネルには、要求に準拠しないプロセスを終了するオプションが必要です。 プロセスがハングすると、_SIGKILL_オプションを使用してプロセスを明示的にシャットダウンします。
kill_で送信できるすべてのシグナルのリストについては、- l_オプションを使用できます-
_SIGHUP_を使用してシステムを再起動します。
無料のコマンド
素敵なコマンド
まず、topを使用して、現在実行中のプロセスの良さを確認します。
_NI_で表される_NICE_列に注目します。 nicenessの範囲は、-20から正の19までの範囲です。 -20は最高の優先度を表します。
renice
_renice_を使用すると、すでに実行されているプロセスの現在の優先順位を変更できます。
上記のコマンドは、ping processコマンドの優先度を下げます。
Linux Admin-ファイアウォールのセットアップ
_firewalld_は、CentOS上のiptablesのデフォルトのフロントエンドコントローラーです。 _firewalld_フロントエンドには、生のiptablesよりも2つの主な利点があります-
- チェーンとルールを抽象化するゾーンを簡単に構成して実装します。 *ルールセットは動的です。つまり、設定が変更および/または変更されても、ステートフル接続は中断されません。
_firewalld_はiptablesのラッパーであり、代わりではないことに注意してください。 カスタムのiptablesコマンドは_firewalld_で使用できますが、ファイアウォールの機能を壊さないようにfirewalldを使用することをお勧めします。
まず、_firewalld_が開始され、有効になっていることを確認しましょう。
firewalldはアクティブ(起動時に開始)であり、現在実行中です。 非アクティブまたは開始されていない場合は、使用できます-
firewalldサービスが設定されたので、それが動作していることを確認しましょう。
firewalldサービスが完全に機能していることがわかります。
Firewalldは、_zones_の概念で動作します。 ゾーンは、ネットワークマネージャーを介してネットワークインターフェイスに適用されます。 これについては、_ネットワークの構成_で説明します。 ただし、現在のところ、デフォルトでは、デフォルトゾーンを変更すると、デフォルト状態の「デフォルトゾーン」に残っているネットワークアダプタが変更されます。
_firewalld_ですぐに使用できる各ゾーンを簡単に見てみましょう。
Sr.No. | Zone & Description |
---|---|
1 |
低信頼レベル。 すべての着信接続とパケットはドロップされ、ステートフルネスを介して発信接続のみが可能です |
2 |
block 着信接続には、要求が禁止されていることを開始者に知らせるicmpメッセージが返信されます |
3 |
public すべてのネットワークが制限されています。 ただし、選択した着信接続は明示的に許可できます |
4 |
external NAT用にfirewalldを構成します。 内部ネットワークはプライベートのままですが、到達可能です |
5 |
dmz 特定の着信接続のみが許可されます。 DMZ分離のシステムに使用 |
6 |
work デフォルトでは、システムが安全な作業環境にあると想定して、ネットワーク上のより多くのコンピューターを信頼します |
7 |
hone デフォルトでは、より多くのサービスがフィルタリングされていません。 システムがNFS、SAMBA、SSDPなどのサービスが使用されるホームネットワーク上にあると仮定します |
8 |
trusted ネットワーク上のすべてのマシンは信頼されています。 ほとんどの着信接続は自由に許可されます。 これは、インターネットに公開されるインターフェース用ではありません |
使用する最も一般的なゾーンは、public、drop、work、およびhomeです。
各共通ゾーンが使用されるいくつかのシナリオは次のとおりです-
- public -管理者が使用する最も一般的なゾーンです。 これにより、カスタム設定を適用し、LANでの操作に関するRFC仕様を順守することができます。
- ドロップ-ドロップを使用するタイミングの良い例は、セキュリティ会議、パブリックWiFi、またはインターネットに直接接続されたインターフェイスです。 dropは、ICMPプローブを含むすべての未承諾リクエストが悪質であると想定します。 したがって、州外の要求は応答を受け取りません。 ドロップの欠点は、厳密なRFC準拠を必要とする特定の状況でアプリケーションの機能を損なう可能性があることです。
- work -半セキュアな企業LAN上にいます。 すべてのトラフィックが中程度に安全であると想定できる場合。 これは、それがWiFiではなく、IDS、IPS、および物理セキュリティまたは802.1xが適切に実装されていることを意味します。 また、LANを使用している人々に精通している必要があります。
- home -自宅のLANにいます。 すべてのシステムとLAN上のユーザーに対して個人的に責任を負います。 LAN上のすべてのマシンを知っていて、どれも侵害されていません。 多くの場合、信頼できる個人間でメディアを共有するための新しいサービスが提供され、セキュリティのために余分な時間をかける必要はありません。
ゾーンとネットワークインターフェイスは、1対多のレベルで機能します。 1つのネットワークインターフェイスには、一度に1つのゾーンしか適用できません。 一方、ゾーンは多くのインターフェイスに同時に適用できます。
利用可能なゾーンと、現在適用されているゾーンを見てみましょう。
firewalldにカスタマイズされたルールを追加する準備はできましたか?
最初に、外部からポートスキャナーに対して、ボックスがどのように見えるかを見てみましょう。
ポート80への着信要求を許可しましょう。
最初に、デフォルトとして適用されているゾーンを確認します。
次に、ポート80を許可するルールを現在のデフォルトゾーンに設定します。
ここで、ポート80接続を許可した後、ボックスをチェックしましょう。
現在、80までの未承諾トラフィックが許可されています。
デフォルトゾーンを_drop_に入れて、ポートスキャンがどうなるかを見てみましょう。
次に、より安全なゾーンでネットワークインターフェースを使用してホストをスキャンします。
現在、すべてが外部からフィルタリングされています。
以下に示すように、_drop_にある場合、ホストはICMP ping要求にも応答しません。
デフォルトのゾーンを_public_に再度設定してみましょう。
_public_の現在のフィルタリングルールセットを確認しましょう。
設定されているように、ポート80のフィルタールールは実行コンフィギュレーションのコンテキスト内にのみあります。 つまり、システムが再起動されるか、firewalldサービスが再起動されると、ルールは破棄されます。
すぐに_httpd_デーモンを設定するので、変更を永続的にしましょう-
これで、パブリックゾーンのポート80ルールは、再起動およびサービスの再起動後も保持されます。
以下は、_firewall-cmd_で適用される一般的なfirewalldコマンドです。
Command | Action |
---|---|
firewall-cmd --get-zones | Lists all zones that can be applied to an interface |
firewall-cmd —status | Returns the currents status of the firewalld service |
firewall-cmd --get-default-zone | Gets the current default zone |
firewall-cmd --set-default-zone=<zone> | Sets the default zone into the current context |
firewall-cmd --get-active-zone | Gets the current zones in context as applied to an interface |
firewall-cmd --zone=<zone> --list-all | Lists the configuration of supplied zone |
firewall-cmd --zone=<zone> --addport=<port/transport protocol> | Applies a port rule to the zone filter |
--permanent | Makes changes to the zone persistent. Flag is used inline with modification commands |
これらは、_firewalld_の管理と設定の基本概念です。
CentOSでホストベースのファイアウォールサービスを構成することは、より高度なネットワークシナリオでは複雑なタスクになる可能性があります。 CentOSでの_firewalld_およびiptablesの高度な使用法と設定は、チュートリアル全体を使用できます。 ただし、日常的なタスクの大部分を完了するのに十分なはずの基本事項を示しました。
CentOS LinuxでPHPを構成する
PHPは、今日使用されている最も多機能なWeb言語の1つです。 CentOSに_LAMP_ Stackをインストールすることは、すべてのシステム管理者が実行する必要があるものであり、ほとんどの場合、後で実行する必要があります。
従来のLAMPスタックは、(L)inux(A)pache(M)ySQL(P)HPで構成されています。
CentOSの_LAMP Stack_には3つの主要なコンポーネントがあります-
- Webサーバー
- Web開発プラットフォーム/言語
- データベースサーバー
注意-_LAMP Stack_という用語には、PostgreSQL、MariaDB、Perl、Python、Ruby、NGINX Webserverなどのテクノロジーも含まれます。
このチュートリアルでは、CentOS GNU Linuxの従来の_LAMP Stack_(Apache Webサーバー、MySQLデータベースサーバー、およびPHP)を使用します。
実際にMariaDBを使用します。 MySQL構成ファイル、データベース、およびテーブルはMariaDBに対して透過的です。 MariaDBは、MySQLではなく標準のCentOSリポジトリに含まれるようになりました。 これは、OracleがMySQLの開発を引き継いだため、ライセンスとオープンソースのコンプライアンスの制限によるものです。
最初に行う必要があるのは、Apacheのインストールです。
_httpd_サービスを設定しましょう。
次に、firewalldを介してWebサーバーにアクセスできるようにします。
nmapサービスプローブで確認できるように、Apache WebサーバーはCentOSホストでリクエストをリッスンして応答しています。
MySQLデータベースサーバーをインストールする
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サービスを開始して有効にしましょう。
注-Apacheとは異なり、ホストベースのファイアウォール(firewalld)を介したMariaDBへの接続は有効にしません。 データベースサーバーを使用する場合、リモートソケットアクセスが特に必要でない限り、ローカルソケット接続のみを許可することがセキュリティのベストプラクティスと見なされます。
MariaDBサーバーが接続を受け入れていることを確認しましょう。
ご覧のとおり、MariaDBはポート3306 tcpでリッスンしています。 ホストベースのファイアウォール(firewalld)は、ポート3306への着信接続をブロックします。
PHPのインストールと構成
一般的な互換性のために、次の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
これは、/var/www/html/のApache webrootにあるシンプルなphpファイルです。
ページの所有グループを、httpデーモンが実行されているシステムユーザーに変更しましょう。
ncatを介して手動で要求された場合。
PHPとLAMPは非常に人気のあるWebプログラミングテクノロジーです。 LAMPのインストールと構成は、CentOS管理者としてのニーズのリストに必ず掲載されます。 使いやすいCentOSパッケージは、ソースコードからApache、MySQL、およびPHPをコンパイルするのに多大な労力を費やしました。
CentOS LinuxでPythonをセットアップする
Pythonは、Linux(およびその他のオペレーティングシステム)でのスクリプトアプリケーションのコーディングの世界にプロ意識をもたらした、広く使用されているインタープリター言語です。 Perlがかつて業界標準であった場合、Pythonは多くの点でPerlを上回りました。
PythonとPerlの長所は次のとおりです-
- 洗練の急速な進展
- 言語に標準的なライブラリ
- コードの可読性は言語定義で考慮されます
- GUIサポートからWeb開発まで、あらゆるものに対応する多くのプロフェッショナルフレームワーク
PythonはPerlができることなら何でもできますが、多くの場合、より良い方法でできます。 PerlはまだLinux管理者のツールボックスの中でその位置を占めていますが、スキルセットとして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のインストールが完全に更新されていることを確認し、いくつかのビルドユーティリティをインストールします。
- ステップ1 *-CentOSを更新します。
- ステップ2 *-ビルドユーティリティをインストールします。
- ステップ3 *-必要なパッケージをインストールします。
次に、現在のPython 2.Xおよび3.Xをソースからインストールする必要があります。
- 圧縮アーカイブをダウンロードする
- ファイルを抽出する
- ソースコードをコンパイルする
_/usr/src/_にPythonインストールごとにビルドディレクトリを作成することから始めましょう
では、それぞれのソースtarballをダウンロードしましょう-
次に、アーカイブからそれぞれを抽出する必要があります。
- ステップ1 *-xz-libsをインストールし、tarballを抽出します。
- ステップ2 *-各tarballからインストーラーを展開します。
- ステップ3 *-各ディレクトリを入力し、configureスクリプトを実行します。
注- altinstall を使用し、インストールしないようにしてください。 これにより、CentOSとPythonの開発バージョンが分離されます。 そうしないと、CentOSの機能が破損する可能性があります。
コンパイルプロセスが開始されます。 コーヒー1杯を手に取り、完了するまで15分間休憩します。 Pythonに必要なすべての依存関係をインストールしたため、コンパイルプロセスはエラーなしで完了します。
Pythonの最新の2.Xバージョンがインストールされていることを確認しましょう。
注-Python 2.Xの開発環境を指すシェバン行の前に付ける必要があります。
そのように、バージョン2.Xと3.Xには別々のPythonインストールがあります。 ここから、それぞれと pip や virtualenv などのユーティリティを使用して、Python環境の管理とパッケージのインストールの負担をさらに軽減できます。
CentOS LinuxでRubyを構成する
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 ++
- パッチ
- 読み込まれた行
- readline-devel
- libyaml-devel
- libffi-devel
- openssl-devel
- make
- bzzip2
- autoconf
- オートメイク
- libtool
- バイソン
- curl
- sqlite-devel
これらのパッケージのほとんどは、CentOSのインストール時に選択したオプションと役割に応じて、すでにインストールされている場合があります。 依存関係を必要とするパッケージをインストールする際の頭痛の種が減るので、不明な点をすべてインストールすることをお勧めします。
方法1:動的Ruby開発環境のrbenv
今_Ruby_を使用するユーザーとして-
ruby-buildは_rbenv_にインストール機能を提供します-
注意-_install.sh_を実行する前に、rootまたは管理ユーザーに切り替える必要があります
シェルをrbenvに設定し、正しいオプションをインストールしたことを確認しましょう。
いくつかの便利なrbenvコマンドは-
Commands | Action |
---|---|
local | Sets or shows the local application-specific Ruby version |
global | Sets or shows the global Ruby version |
shell | Sets or shows the shell-specific Ruby version |
install | Installs a Ruby version using ruby-build |
uninstall | Uninstalls a specific Ruby version |
rehash | Rehashes rbenv shims (run this after installing executables) |
version | Shows the current Ruby version and its origin |
versions | Lists all Ruby versions available to rbenv |
which | Displays the full path to an executable |
whence | Lists all Ruby versions that contain the given executable |
今Rubyをインストールしましょう-
コンパイルが完了した後-
現在、Ruby 2.Xブランチの更新された動作バージョンを備えた動作するRuby環境があります。
方法2:CentOSパッケージからRubyをインストールする
これが最も簡単な方法です。 ただし、CentOSからパッケージ化されたバージョンとgemによって制限される場合があります。 深刻な開発作業のために、_rbenv_メソッドを使用してRubyをインストールすることを強くお勧めします。
Ruby、必要な開発パッケージ、およびいくつかの一般的なgemをインストールします。
残念ながら、Rubyのやや古いバージョンが残っています。
Linux Admin-CentOS Linux用のPerlのセットアップ
PHPの最大の利点は、PHP、Python、またはRubyに対するPerlの最大の利点です。 Perlのこの哲学は、常に物事が正しい方法で行われることを意味するわけではありません。 ただし、Linuxの管理タスクでは、Perlはスクリプト言語の重要な選択肢と見なされます。
PythonやRubyに対するPerlの利点は次のとおりです-
- 強力なテキスト処理
- Perlを使用すると、スクリプトをすばやく作成できます(通常、Perlスクリプトは、PythonまたはRubyの同等のものよりも数十行短くなります)
- Perlは何でもできます(ほぼ)
Perlのいくつかの欠点は次のとおりです-
- 構文はわかりにくい場合があります
- Perlのコーディングスタイルはユニークで、コラボレーションが行き詰まる可能性があります
- Perlは実際にはオブジェクト指向ではありません
- 通常、Perlを使用する場合の標準化とベストプラクティスについてはあまり考慮されていません。
Perl、Python、またはPHPのいずれを使用するかを決定するとき。次の質問をする必要があります-
- このアプリケーションにバージョン管理が必要になることはありますか?
- 他の人はコードを変更する必要がありますか?
- 他の人はこのアプリケーションを使用する必要がありますか? *このアプリケーションを別のマシンまたはCPUアーキテクチャで使用することはありますか?
上記のすべてに対する答えが「いいえ」の場合、Perlが適切な選択であり、最終結果の観点から物事をスピードアップする可能性があります。
これで、CentOSサーバーを最新バージョンのPerlを使用するように構成しましょう。
Perlをインストールする前に、Perlのサポートを理解する必要があります。 公式には、Perlは最後の2つの安定バージョンとしてのみサポートされています。 そのため、開発環境をCentOSバージョンから分離しておく必要があります。
分離の理由は、誰かがPerlのツールをCentOSコミュニティにリリースした場合、CentOSに同梱されているPerlで動作するように修正される可能性が高いからです。 ただし、開発目的で最新バージョンをインストールする必要もあります。 Pythonと同様、CentOSは、最先端ではなく信頼性に重点を置いたPerlを出荷しています。
CentOS 7でのPerlの現在のバージョンを確認しましょう。
現在、Perl 5.16.3を実行しています。 このドキュメントの執筆時点での最新バージョンは、_perl-5.24.0_です。
コードで最新のPerlモジュールを使用できるように、バージョンをアップグレードすることは間違いありません。 幸いなことに、Perl環境を維持し、CentOSバージョンのPerlを分離した状態に保つための優れたツールがあります。* perlbrew *と呼ばれます。
Perl Brewをインストールしましょう。
Perl Brewがインストールされたので、Perlの最新バージョン用の環境を作りましょう。
最初に、perlbrewインストールをブートストラップするために、現在インストールされているバージョンのPerlが必要になります。 したがって、CentOSリポジトリからいくつかの必要なPerlモジュールを取得しましょう。
注-利用可能な場合は、CentOS Perlのインストールで、CPANに対してCPANを常に使用する必要があります。
- *ステップ1 *-CentOS Perl Make
- Makerモジュールをインストールします。
- ステップ2 *-perlの最新バージョンをインストールします。
Perlのインストール用に選択したオプションは次のとおりです-
- n -テストなし
- j4 -インストールルーチン用に4つのスレッドを並行して実行します(クアッドコアCPUを使用しています)
- threads -Perlのスレッドサポートを有効にする
インストールが正常に実行されたら、最新のPerl環境に切り替えましょう。
perlbrew環境のコンテキスト内で実行されているperlバージョンを印刷する単純なperlスクリプト-
perlをインストールしたら、perl brewのcpanmでcpanモジュールをロードできます-
では、_cpanm_インストーラーを使用して、perl brewの現在のPerlバージョン5.24.1でLWPモジュールを作成しましょう。
- ステップ1 *-現在のPerlバージョンのコンテキストに切り替えます。
アクティブ化されたperlとしてperl-5.24.1でサブシェルが起動されます。 「終了」を実行して終了します。
- ステップ2 *-LWPユーザーエージェントPerlモジュールをインストールします。
- ステップ3 *-新しいCPANモジュールを使用してPerl環境をテストしましょう。
そこにあります! Perl Brewを使用すると、perl環境を簡単に分離でき、Perlを使用する場合のベストプラクティスと見なすことができます。
Open LDAPのインストールと構成
LDAPをCentOSにDirectory Server Agent、Directory System Agent、またはDSA(これらの頭字語はすべて同一)として展開することは、NDSでディレクトリツリー構造を使用する古いNovell Netwareインストールに似ています。
LDAPの簡単な歴史
LDAPは基本的に、エンタープライズリソースを使用してX.500ディレクトリにアクセスする効率的な方法として作成されました。 X.500とLDAPは両方とも同じ特性を共有しているため、LDAPクライアントはいくつかのヘルパーでX.500ディレクトリにアクセスできます。 LDAPには、 slapd という独自のディレクトリサーバーもあります。 _LDAP_と_DAP_の主な違いは、軽量バージョンはTCP上で動作するように設計されていることです。
_DAP_は完全なOSIモデルを使用します。 今日のネットワークにおけるインターネット、TCP/IP、およびイーサネットの出現により、特定のレガシーコンピューティングモデル以外のDAPとネイティブX.500エンタープライズディレクトリの両方を使用したディレクトリサービスの移植に遭遇することはほとんどありません。
CentOS Linuxのopenldapで使用される主なコンポーネントは次のとおりです-
openldap | LDAP support libraries |
---|---|
openldap-server | LDAP server |
openldap-clients | LDAP client utlities |
openldap-devel | Development libraries for OpenLDAP |
compay-openldap | OpenLDAP shared libraries |
slapd | Directory server daemon of OpenLDAP |
slurpd | Used for LDAP replication across an enterprise domain |
注-エンタープライズに名前を付けるときは、 。local TLDを使用することをお勧めします。 .net_または.com_を使用すると、オンラインドメインインフラストラクチャと内部ドメインインフラストラクチャを分離するときに問題が発生する可能性があります。 外部操作と内部操作の両方に_acme.com_を使用している企業の追加作業を想像してください。 したがって、_acme.com_または_acme.net_と呼ばれるインターネットリソースを用意するのが賢明です。 次に、ローカルネットワーキングエンタープライズリソースは_acme.local_として示されます。 これにはDNSレコードの構成が必要になりますが、単純さ、雄弁さ、セキュリティが犠牲になります。
CentOSにOpen LDAPをインストールする
_YUM_からopenldap、openldap-servers、openldap-clients、migrationstoolsをインストールします。
さて、_slapd_サービスを開始して有効にしましょう-
この時点で、openldap_構造が/etc/openldap_にあることを確認しましょう。
次に、slapdサービスが実行されていることを確認します。
次に、_Open LDAP_インストールを設定しましょう。
システム_ldap_ユーザーが作成されていることを確認してください。
LDAP資格情報を生成します。
slappasswdからの出力を保存する必要があります
Open LDAPを構成する
- ステップ1 *-ドメインのLDAPを構成し、管理ユーザーを追加します。
最初に、openLDAP環境をセットアップします。 以下は、_ldapmodify_コマンドで使用するテンプレートです。
ldapmodifyコマンドを使用して、/etc/openldap/slapd.d/cn = config/olcDatabase = \ {1} monitor.ldifを変更します。
変更されたLDAP構成を確認しましょう。
ご覧のとおり、LDAPエンタープライズの変更は成功しました。
次に、OpenLDAPの自己署名SSL証明書を作成します。 これにより、エンタープライズサーバーとクライアント間の通信が保護されます。
- ステップ2 *-OpenLDAPの自己署名証明書を作成します。
_openssl_を使用して、自己署名SSL証明書を作成します。 OpenLDAPとの通信を保護する手順については、次の章「opensslでLDAP SSL証明書を作成する」に進んでください。 その後、SSL証明書が設定されると、OpenLDAPエンタープライズ設定が完了します。
- ステップ3 *-証明書で安全な通信を使用するようにOpenLDAPを設定します。
次の情報を使用して_vim_で_certs.ldif_ファイルを作成します-
次に、再度_ldapmodify_コマンドを使用して、変更をOpenLDAP構成にマージします。
最後に、OpenLADP構成をテストしましょう。
- ステップ4 *-slapdデータベースをセットアップします。
OpenLDAPスキーマを更新します。
cosineおよびnis LDAPスキーマを追加します。
最後に、エンタープライズスキーマを作成し、現在のOpenLDAP設定に追加します。
以下は、vmnet._local_と呼ばれるドメインと_ldapadm_と呼ばれるLDAP管理者に対するものです。
最後に、これを現在のOpenLDAPスキーマにインポートします。
- ステップ5 *-OpenLDAPエンタープライズユーザーを設定します。
_vim_またはお好みのテキストエディターを開き、次の形式をコピーします。 これは、「vmnet.local」LDAPドメインの「entacct」という名前のユーザーのセットアップです。
保存された上記のファイルをOpenLdapスキーマにインポートします。
ユーザーがLDAP Enterpriseにアクセスする前に、次のようにパスワードを割り当てる必要があります-
最後に、エンタープライズアカウントにログインする前に、_OpenLDAP_エントリを確認しましょう。
/etc/passwd_や/etc/groups_などをOpenLDAP認証に変換するには、移行ツールを使用する必要があります。 これらは_migrationtools_パッケージに含まれています。 次に、_/usr/share/migrationtools_にインストールします。
- ステップ6 *-最後に、リクエストを処理できるように、slapdサービスへのアクセスを許可する必要があります。
LDAPクライアントアクセスを構成する
LDAPクライアントアクセスを設定するには、クライアントにopenldap、open-ldapクライアント、およびnss_ldapのパッケージが必要です。
クライアントシステムのLDAP認証の構成は少し簡単です。
- ステップ1 *-依存パッケージのインストール-
- ステップ2 *-_authconfig_を使用してLDAP認証を設定します。
- ステップ3 *-nslcdサービスを再起動します。
Linux Admin-SSL証明書を作成する
TLSとSSLの背景
TLSはソケットレイヤーセキュリティの新しい標準であり、SSLを進めています。 TLSは、SSLを進化させる他のセキュリティおよびプロトコルラッパー機能により、より優れた暗号化標準を提供します。 多くの場合、TLSとSSLという用語は同じ意味で使用されます。 ただし、プロのCentOS管理者として、それぞれの違いと履歴に注意することが重要です。
_SSL_はバージョン3.0になります。 SSLは、Netscapeの下で業界標準として開発および推進されました。 NetscapeがAOL(90年代にアメリカオンラインとも呼ばれたISPとして人気)に買収された後、AOLはSSLのセキュリティ改善に必要な変更を実際に促進しませんでした。
バージョン3.1では、_SSL_テクノロジーがオープンシステム標準に移行し、_TLS_に変更されました。 _SSL_の著作権はまだAOLが所有しているため、新しい用語が作成されました: TLS-Transport Layer Security 。 したがって、_TLS_は実際には_SSL_とは異なることを認識することが重要です。 特に、古い_SSL_テクノロジーにはセキュリティの問題があり、一部は今日では廃止されていると考えられているためです。
注意-このチュートリアルでは、3.1以降のテクノロジについて話すときに_TLS_という用語を使用します。 次に、SSLテクノロジー3.0以前に固有のコメントを作成するときに_SSL_を使用します。
SSL vs 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つは、「認証」として知られる、パーティーの所有者を確認します。 2つ目は、このネイティブ機能を持たない上位レベルのプロトコル(ftp、http、電子メールプロトコルなど)のトランスポート層で*エンドツーエンド暗号化*を提供します。
1つ目は、_パーティが誰であるかを検証する_ことであり、エンドツーエンド暗号化としてセキュリティにとって重要です。 消費者が支払いを受けることを許可されていないWebサイトへの暗号化された接続を持っている場合、財務データは依然としてリスクにさらされています。 これは、すべてのフィッシングサイトが持つことのできないものです。適切に署名されたTLS証明書は、Webサイトオペレーターが信頼できるCAからのものであることを確認します。
適切に署名された証明書を持っていないことを回避する方法は2つしかありません:自己署名証明書に対するWebブラウザの信頼をユーザーに許可するか、ユーザーが技術に詳しくなく、信頼できる証明書の重要性を知らないことを望みます機関(またはCA)。
このチュートリアルでは、「自己署名証明書」と呼ばれるものを使用します。 つまり、このWebサイトにアクセスするすべてのWebブラウザーでこの証明書にトラステッドステータスを明示的に与えることなく、ユーザーがサイトにアクセスすることを妨げるエラーが表示されます。 次に、自己署名証明書を使用してサイトにアクセスする前に、ユーザーにいくつかのアクションを実行させます。 セキュリティのために、これは良いことです。
opensslのインストールと構成
_openssl_は、TLSのオープンソース実装の標準です。 _openssl_は、Linux、BSDディストリビューション、OS Xなどのシステムで使用され、Windowsもサポートします。
opensslは、トランスポート層セキュリティを提供し、開発者向けの_Authentication_および_end-to-end encryption_の詳細なプログラミングを抽象化するため、重要です。 これが、TLSを使用するほぼすべてのオープンソースアプリケーションでopensslが使用される理由です。 また、Linuxのすべての最新バージョンにデフォルトでインストールされます。
デフォルトでは、_openssl_は少なくともバージョン5以降のCentOSにインストールする必要があります。 念のため、YUM経由で_openssl_をインストールしてみましょう。 YUMはパッケージが既にインストールされているかどうかを知らせるのに十分なインテリジェントであるため、インストールを実行します。 互換性の理由でCentOSの古いバージョンを実行している場合、_yum -y install_を実行すると、opensslが半最新のハートブリード脆弱性に対して確実に更新されます。
インストーラーを実行すると、実際に_openssl_の更新があることがわかりました。
OpenLDAPの自己署名証明書を作成する
これは、以前の_OpenLDAP_インストール用に自己署名を作成する方法です。
自己署名OpenLDAP証明書を作成します。
これで、OpenLDAP証明書は_/etc/openldap/certs/_に配置されます。
ご覧のとおり、証明書とキーの両方が_/etc/openldap/certs/_ディレクトリにインストールされています。 最後に、それぞれが現在rootユーザーによって所有されているため、それぞれのパーミッションを変更する必要があります。
Apache Webサーバーの自己署名証明書を作成する
このチュートリアルでは、Apacheがすでにインストールされていると仮定します。 別のチュートリアル(CentOSファイアウォールの構成)でApacheをインストールしました。今後のチュートリアルでは、Apacheの高度なインストールに進みます。 そのため、Apacheをまだインストールしていない場合は、フォローしてください。
次の手順を使用してApache HTTPdをインストールできたら-
- ステップ1 *-Apache httpdサーバーのmod_sslをインストールします。
最初にmod_sslでApacheを設定する必要があります。 YUMパッケージマネージャーを使用すると、これは非常に簡単です-
次に、Apacheデーモンをリロードして、Apacheが新しい構成を使用するようにします。
この時点で、ApacheはローカルホストでTLS接続をサポートするように構成されています。
- ステップ2 *-自己署名SSL証明書を作成します。
最初に、プライベートTLSキーディレクトリを設定しましょう。
注-ルートのみがこのディレクトリへの読み取り/書き込みアクセス権を持っていることを確認してください。 ワールドリード/ライトアクセスでは、秘密鍵を使用して盗聴されたトラフィックを解読できます。
証明書とキーファイルを生成します。
注-登録済みのドメイン名がない場合は、サーバーのパブリックIPアドレスを使用できます。
私たちの証明書を見てみましょう-
_openssl_コマンドで使用した各オプションの説明は次のとおりです-
Command | Action |
---|---|
req -X509 | Use X.509 CSR management PKI standard for key management. |
-nodes | Do not secure our certificate with a passphrase. Apache must be able to use the certificate without interruption of a passphrase. |
-days 2555 | Tells the validity of the certificate to 7 years or 2555 days. Time period can be adjusted as needed. |
-newkey rsa:2048 | Specified to generate both key and certificate using RSA at 2048 bits in length. |
次に、クライアントとPFSをネゴシエートするためのDiffie-Helimanグループを作成します。
これには5〜15分かかります。
次に、Perfect Forward Secrecy構成を証明書に追加します。
キーと証明書ファイルを使用するようにApacheを構成する
_/etc/httpd/conf.d/ssl.conf_に変更を加えます-
_ssl.conf_に次の変更を加えます。 ただし、その前に元のファイルをバックアップする必要があります。 _vi_や_emcas_などの高度なテキストエディターで運用サーバーに変更を加える場合、編集を行う前に構成ファイルを常にバックアップすることをお勧めします。
ssl.confの動作確認済みのコピーをホームフォルダーのルートにコピーした後、編集を続けましょう。
- 見つける
- 次のようにDocumentRootとServerNameの両方を編集します。
次に、次の行をコメントアウトします。
SSLプロトコル
次に、Apacheに証明書と秘密/公開キーのペアの場所を知らせます。
自己署名証明書ファイルへのパスを指定します
最後に、ポート443を介した_https_へのインバウンド接続を許可する必要があります。
Apache WebサーバーCentOS 7をインストールする
この章では、Apache HTTPサーバーがどのように存在したかについての背景について少し学び、CentOS Linux 7に最新の安定バージョンをインストールします。
Apache WebServerの簡単な歴史
Apacheは、古くから存在しているWebサーバーです。 実際、http自体の存在とほぼ同じ長さです!
Apacheは、NCSAとしても知られる国立スーパーコンピューティングアプリケーションセンターのかなり小さなプロジェクトとして始まりました。 90年代半ばには、「httpd」と呼ばれ、インターネット上で最も人気のあるWebサーバープラットフォームであり、市場シェアの約90%以上を占めていました。
現時点では、単純なプロジェクトでした。 熟練したI.T. Webマスターとして知られるスタッフは、WebサーバープラットフォームとWebサーバーソフトウェア、フロントエンドとバックエンドの両方のサイト開発の維持を担当していました。 httpdの中核は、プラグインまたは拡張機能として知られるカスタムモジュールを使用する機能でした。 ウェブマスターは、コアサーバーソフトウェアにパッチを作成するのに十分なスキルも備えていました。
90年代半ばの後半、httpdのシニア開発者およびプロジェクトマネージャーは、NCSAを離れて他のことをしました。 これにより、最も人気のあるWebデーモンが停滞状態になりました。
httpdの使用は非常に広範であったため、経験豊富なhttpdウェブマスターのグループは、httpdの将来を要求するサミットを求めました。 現在の安定したリリースに最適な拡張機能とパッチを調整して適用することが決定されました。 その後、現在のHTTPサーバーの祖父が誕生し、Apache HTTPサーバーと命名されました。
小さな既知の歴史的事実-アパッチは、アメリカ先住民の部族の戦士にちなんで命名されていません。 実際、それはひねりを加えて命名され、命名されました。多くの才能のあるコンピューター科学者による多くの修正(またはパッチ)から作られています:パッチ*または *Apache 。
CentOS Linux 7に現在の安定バージョンをインストールする
- ステップ1 *-yumを介してhttpdをインストールします。
この時点で、Apache HTTPサーバーはyumを介してインストールされます。
- ステップ2 *-httpdのニーズに固有のhttpd.confファイルを編集します。
デフォルトのApacheインストールでは、Apacheの構成ファイルの名前は_httpd.conf_で、_/etc/httpd/_にあります。 それで、_vim_で開きましょう。
_vim_で開かれた_httpd.conf_の最初の数行-
CentOSインストールでHTTPポート80からのHTTPリクエストを処理できるように、次の変更を行います。
リスニングホストとポート
ここから、特定のポートまたはIPアドレスでリッスンするようにApacheを変更します。 たとえば、8080などの代替ポートでhttpdサービスを実行する場合。 または、個別のIPアドレスを持つ複数のインターフェイスでWebサーバーを構成している場合。
聴く
ApacheがすべてのリッスンデーモンをすべてのIPアドレスにアタッチしないようにします。 これは、IPv6またはIPv4トラフィックのみの指定を停止するのに役立ちます。 または、マルチホームホスト上のすべてのネットワークインターフェイスにバインドすることもできます。
DocumentRoot
「ドキュメントルート」は、Apacheがサーバーにアクセスしたときにリクエストを処理するためのインデックスファイルを探すデフォルトのディレクトリです。http://ww38.yoursite.com/[http://www.yoursite.com/]が取得しますドキュメントルートからインデックスファイルを提供します。
- ステップ3 *-httpdサービスを開始して有効にします。
- ステップ4 *-ポート80要求へのアクセスを許可するようにファイアウォールを構成します。
Linux Admin-CentOS 7でのMySQLセットアップ
Maria DBで使用するためにCentOSを構成するときに簡単に触れたように、CentOS _7 yum_リポジトリにはネイティブMySQLパッケージはありません。 これを説明するには、MySQLがホストするリポジトリを追加する必要があります。
CentOS LinuxでのMariaDBとMySQL
注意すべきことの1つは、MySQLがMariaDBとは異なるベース依存関係のセットを必要とすることです。 また、MySQLを使用すると、CentOSの概念と哲学、つまり信頼性を最大限に高めるように設計された製品パッケージが破壊されます。
したがって、MariaとMySQLのどちらを使用するかを決定する際には、2つのオプションを検討する必要があります。現在のDBスキーマはMariaで機能しますか? MariaにMySQLをインストールすると、どのような利点がありますか?
Mariaコンポーネントは、MySQL構造に対して完全に透過的であり、ライセンスが改善されて効率が向上しています。 説得力のある理由がない限り、MariaDBを使用するようにCentOSを構成することをお勧めします。
CentOSでMariaを支持する最大の理由は次のとおりです-
- ほとんどの人がMariaDBを使用します。 問題が発生した場合、Mariaのサポートがさらに受けられます。
- CentOSはMariaと一緒に実行するように設計されています。 したがって、マリアはより良い安定性を提供します。
- MariaはCentOSで公式にサポートされています。
MySQLリポジトリをダウンロードして追加する
MySQLリポジトリをダウンロードしてインストールします-
http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
- ステップ1 *-リポジトリをダウンロードします。
リポジトリは、簡単にインストールできるようにrpmパッケージに便利にパッケージ化されています。 _wget_でダウンロードできます-
- ステップ2 *-YUMからMySQLをインストールします。
_yum_パッケージマネージャーを使用して_MySQL_をインストールできるようになりました-
- ステップ3 *-MySQLデーモンサービスを開始して有効にします。
- ステップ4 *-MySQLサービスが稼働していることを確認します。
注-ファイアウォールルールは許可しません。* Unixドメインソケット*を使用するようにMySQLを構成することは一般的です。 これにより、LAMPスタックのWebサーバーのみがローカルでMySQLデータベースにアクセスできるようになり、データベースソフトウェアでの攻撃ベクトルの完全な次元が取り出されます。
Postfix MTAおよびIMAP/POP3をセットアップする
CentOS 7サーバーから電子メールを送信するには、最新のMail Transfer Agent(MTA)を構成するためのセットアップが必要です。 Mail Transfer Agentは、SMTPを介してシステムユーザーまたは企業のインターネットドメインに送信メールを送信するデーモンです。
このチュートリアルでは、デーモンをローカルで使用するための設定プロセスのみを説明しています。 業務用にMTAをセットアップするための高度な構成については詳しく説明しません。 これには、DNS、ブラックリストに登録されていない静的なルーティング可能なIPアドレスの取得、高度なセキュリティとサービス設定の構成などが含まれますが、これらに限定されません。 要するに、このチュートリアルは基本的な設定に慣れるためのものです。 インターネットに面したホストのMTA設定にはこのチュートリアルを使用しないでください。
セキュリティと管理の容易さの両方に焦点を合わせて、このチュートリアルのMTAとして Postfix を選択しました。 CentOSの古いバージョンにインストールされているデフォルトのMTAは、_Sendmail_です。 Sendmail はすばらしいMTAです。 ただし、著者の謙虚な意見では、PostfixはMTAに関する次の注意事項に対処するときに最適な場所を見つけます。 CentOSの最新バージョンでは、PostfixはデフォルトのMTAとしてSendmailに取って代わりました。
Postfixは、広く使用され、よく文書化されたMTAです。 積極的に維持および開発されています。 最小限の構成を念頭に置いて(これは単なるメールです)、システムリソースを使用して効率的です(これも単なるメールです)。
- ステップ1 *-YUMパッケージマネージャーからPostfixをインストールします。
- ステップ2 *-Postfix設定ファイルを設定します。
Postfix設定ファイルは_/etc/postfix/main.cf_にあります
単純なPostfix構成では、特定のホストに対して、ホスト名、ドメイン、発信元、inet_interfaces、および宛先を構成する必要があります。
ホスト名の設定-ホスト名は、Postfixホストの完全修飾ドメイン名です。 OpenLDAPの章では、CentOSボックスに「_vmnet.local_ドメイン上のcentos」という名前を付けました。 この章ではそれを守りましょう。
ドメインの設定-上記のように、このチュートリアルで使用するドメインは_vmnet.local_です
オリジンの設定-単一のサーバーとドメインのセットアップでは、次のセクションのコメントを外してデフォルトのPostfix変数を残すだけです。
ネットワークインターフェースを設定します-単一のネットワークインターフェースと、そのインターフェースに関連付けられているすべてのプロトコルとIPアドレスでPostfixをリッスンしたままにします。 これは、Postfixのデフォルト設定を有効にしておくだけで実行できます。
- ステップ3 *-PostfixのSASLサポートを設定します。
SASL認証のサポートがない場合、Postfixはローカルユーザーからのメールの送信のみを許可します。 または、ユーザーがローカルドメインから電子メールを送信すると、_relaying denied_エラーが発生します。
注- SASL または Simple Application Security Layer Framework は、さまざまなアプリケーション層プロトコル間でさまざまな手法をサポートする認証用に設計されたフレームワークです。 認証メカニズムをアプリケーション層プロトコルに任せる代わりに、SASL開発者(および消費者)は、組み込みの利便性またはより安全な認証(安全なサービスへのアクセスと言えば)を持たない可能性のある高レベルのプロトコルに現在の認証プロトコルを活用します。
「cyrus-sasl *パッケージをインストールする
SASL認証用に_/etc/postfix/main.cf_を設定します
_main.conf_のSASLオプション
- ステップ4 *-着信SMTPサービスを許可するようにFirewallDを構成します。
次に、CentOSホストがポート25(SMTP)で要求を許可して応答していることを確認します。
ご覧のとおり、SMTPはリッスンしており、デーモンは内部LANからの要求に応答しています。
Dovecot IMAPおよびPOP3サーバーをインストールする
Dovecotは、小規模から大規模の組織の着信メールのニーズを処理するよう設計された安全なIMAPおよびPOP3サーバーです。 CentOSで多用されているため、CentOSおよびMTA SASLプロバイダーの受信メールサーバーをインストールおよび構成する例としてDovecotを使用します。
前述したように、DNSのMXレコードを構成したり、サービスがドメインのメールを処理できるようにする安全なルールを作成したりすることはありません。 したがって、これらのサービスをインターネットに接続しているホスト上に設定するだけで、SPFレコードのないセキュリティホールを活用する余地を残すことができます。
- ステップ1 *-Dovecotをインストールします。
- ステップ2 *-dovecotを設定します。
dovecotのメイン設定ファイルは_/etc/dovecot.conf_にあります。 最初にメインの構成ファイルをバックアップします。 編集を行う前に、常に構成ファイルをバックアップすることをお勧めします。 このようにして、id(たとえば)改行はテキストエディターによって破壊され、何年もの変更が失われます。 現在のバックアップを運用環境にコピーするので、元に戻すのは簡単です。
_dovecot_のプロトコルとデーモンサービスを有効にする
ここで、dovecotデーモンを有効にして起動時にリッスンする必要があります-
Dovecotが指定されたポートでローカルにリッスンしていることを確認しましょう:imap、pop3、imapセキュア、およびpop3セキュア。
ご覧のとおり、_dovecot_は、指定されたポートでIPv4およびIPv4をリッスンしています。
POP3 | 110 |
POP3s | 995 |
IMAP | 143 |
IMAPs | 993 |
次に、ファイアウォールルールを作成する必要があります。
着信メールサーバーは、POP3 _、 POP3s 、 IMAP_、および_IMAPs_の要求をLAN上のホストに受け入れています。
Linux管理-匿名FTPのインストール
CentOSにFTPをインストールする前に、その使用とセキュリティについて少し学ぶ必要があります。 FTP は、コンピューターシステム間でファイルを転送するための非常に効率的で洗練されたプロトコルです。 FTPは数十年間使用され、洗練されてきました。 遅延のあるネットワーク上でファイルを効率的に転送する場合、または高速で転送する場合は、FTPが最適です。 SAMBAまたはSMBよりも優れています。
ただし、FTPにはいくつかのセキュリティ上の問題があります。 実際、いくつかの深刻なセキュリティ問題。 FTPは、非常に弱いプレーンテキスト認証方法を使用します。 このため、認証されたセッションは、ログインおよび転送セッションのエンドツーエンド暗号化にTLSが使用されるsFTPまたはFTPSに依存する必要があります。
上記の警告により、プレーンな古いFTPは今日でもビジネス環境で使用されています。 主な用途は、匿名FTPファイルリポジトリです。 これは、ファイルをダウンロードまたはアップロードするために認証が保証されない状況です。 匿名FTPの使用例は次のとおりです-
- 大規模なソフトウェア会社は依然として匿名FTPリポジトリを使用しており、インターネットユーザーはシェアウェアとパッチをダウンロードできます。
- インターネットユーザーが公開ドキュメントをアップロードおよびダウンロードできるようにします。
- 一部のアプリケーションは、暗号化されたアーカイブログまたは構成ファイルをFTP経由でリポジトリに自動的に送信します。
したがって、CentOS管理者として、FTPをインストールおよび構成できることは、依然として設計されたスキルです。
- ステップ1 *-YUMパッケージマネージャーでvsFTPdをインストールします。
- ステップ2 *-systemctlで起動時にvsFTPを開始するように設定します。
- ステップ3 *-FTP制御および転送セッションを許可するようにFirewallDを構成します。
FTPデーモンが実行されていることを確認してください。
- ステップ4 *-匿名アクセス用のvsFTPDを構成します。
ルートFTPディレクトリを作成する
FTPルートの所有者とグループを_ftp_に変更します
この場合、ルートFTPツリー全体に対する読み取り/書き込みアクセス権をユーザーに付与しました。
_/etc/vsftpd/vsftpd.conf "_を構成します
_vsftp.conf_ファイルの次のディレクティブを変更します。
- _anon_mkdir_write_enable = YES_のコメントを解除して、匿名アップロードを有効にします
- chownはシステム_ftp_ユーザーが所有するファイルをアップロードしました + chown_uploads = YES + chown_username = ftp
- vsftpが使用するシステムユーザーをftpユーザーに変更します:nopriv_user = ftp
- ユーザーがサインインする前に読み取るカスタムバナーを設定します。 + ftpd_banner = Anonymous FTP Repoへようこそ。 すべての接続が監視および記録されます。
- IPv4接続のみを設定しましょう- + listen = YES + listen_ipv6 = NO
ここで、変更を適用するには、vsftpサービスを再起動または_HUP_する必要があります。
FTPホストに接続して、FTPデーモンが応答していることを確認しましょう。
Linux Admin-CentOSのトラフィック監視
CentOSトラフィックモニタリングの拡張機能を追加できるサードパーティ製ツールがいくつかあります。 このチュートリアルでは、メインのCentOSディストリビューションリポジトリとFedora EPELリポジトリにパッケージ化されているものに焦点を当てます。
管理者(何らかの理由で)がメインのCentOSリポジトリにツールのみを残している状況は常に存在します。 説明されているほとんどのユーティリティは、物理アクセスのシェルを持つ管理者が使用するように設計されています。 アクセス可能なweb-guiでトラフィックを監視する場合、ntop-ngやNagiosなどのサードパーティのユーティリティを使用するのが最善の選択肢です(そのような機能を最初から再作成するのではなく)。
構成可能な両方のweb-guiソリューションのさらなる調査については、調査を開始するためのいくつかのリンクを以下に示します。
LAN/WANシナリオのトラフィック監視
ナギオス
Nagiosは古くから存在しているため、試され、テストされています。 ある時点では、それはすべて無料でオープンソースでしたが、その後、エンタープライズの洗練の必要性をサポートするために、有料のライセンスモデルを備えたエンタープライズソリューションに進化しました。 したがって、Nagiosでロールアウトを計画する前に、オープンソースのライセンスバージョンがニーズを満たしていることを確認するか、企業予算を念頭に置いて支出を計画してください。
オープンソースのNagiosトラフィック監視ソフトウェアのほとんどは、https://www.nagios.org/[https://www.nagios.org]で見つけることができます。
Nagiousの要約された歴史については、公式のNagios Historyページをご覧ください:https://www.nagios.org/about/history/
web-guiを介した帯域幅とトラフィックの監視を可能にするもう1つの優れたツールは、_ntopng_と呼ばれます。 _ntopng_はUnixユーティリティntopに似ており、LANまたはWAN全体のデータを収集できます。 管理、構成、およびチャート作成用のWeb GUIを提供すると、IT部門全体で使いやすくなります。
Nagiousと同様に、ntopngにはオープンソースと有料の両方のエンタープライズバージョンがあります。 _ntopng_の詳細については、Webサイトhttp://www.ntop.org/をご覧ください。
Fedora EPELリポジトリのインストール─Enterprise Linux用の追加パッケージ
トラフィックの監視に必要なツールにアクセスするには、EPELリポジトリを使用するようにCentOSシステムを構成する必要があります。
EPELリポジトリは、CentOSによって公式に維持またはサポートされていません。 ただし、CentOS、Fedora Core、Red Hat Linux Enterpriseのいずれにも含まれていないEnterprise Linuxの専門家が一般的に使用するパッケージに対処するため、Fedora Coreボランティアのグループによって管理されています。
注意-
EPELリポジトリはCentOSの公式ではないため、一般的な依存関係がある本番サーバーの互換性と機能を損なう可能性があります。 そのことを念頭に置いて、システムの重要なボックスに展開する前に、本番と同じサービスを実行する非本番サーバーで常にテストすることをお勧めします。
実際、CentOSで他のサードパーティリポジトリよりもEHELリポジトリを使用する最大の利点は、バイナリが汚染されていないことを確認できることです。 信頼できないソースのリポジトリを使用しないことをお勧めします。
以上のことから、公式のEPELリポジトリはCentOSで非常に一般的であるため、YUMを介して簡単にインストールできます。
EPELリポジトリをインストールしたら、更新します。
この時点で、EPELリポジトリを構成し、使用する準備ができているはずです。 インターフェースの帯域幅監視のために_nload_をインストールすることから始めましょう。
このチュートリアルで焦点を当てるツールは次のとおりです-
- nload
- ntop
- ifstst
- iftop
- vnstat
- 純豚
- ワイヤーシャーク
- TCPダンプ
- トレースルート
これらはすべて、Linux Enterprisesでトラフィックを監視するための標準です。 単純なものから高度なものまでの各範囲の使用法なので、WiresharkやTCP Dumpなどのツールについて簡単に説明します。
nloadをインストールして使用する
EPOSリポジトリをCentOSにインストールして構成すると、_nload_をインストールして使用できるようになります。 このユーティリティは、インターフェイスごとの帯域幅をリアルタイムでグラフ化するように設計されています。
他のほとんどの基本インストールと同様に、_nload_はYUMパッケージマネージャーを介してインストールされます。
これで_nload_がインストールされ、それを使用するのは非常に簡単です。
_nload_は、指定されたインターフェイスを監視します。 この場合、enp0s5は、ネットワークトラフィックの負荷と総帯域幅使用量のために、ターミナルからリアルタイムでイーサネットインターフェイスになります。
ご覧のように、_nload_は、指定されたインターフェイスからの着信データと発信データの両方をチャート化し、ハッシュマーク「#」でデータフローの物理表現を提供します。
描かれたスクリーンショットは、いくつかのバックグラウンドデーモントラフィックでロードされている単純なWebページのものです。
_nload_の一般的なコマンドラインスイッチは-
Command | Action |
---|---|
-a | Time period |
-t | Time update interval in milliseconds, the default is 500 |
-u | Sets display of traffic measurement h |
-U | Sets total in/out traffic measurement units same options as -u |
nloadの標準構文は次のとおりです-
インターフェイスが指定されていない場合、_nload_は最初のイーサネットインターフェイスを自動的に取得します。 メガバイト単位の合計データ入出力とメガビット単位の現在のデータ転送速度を測定してみましょう。
現在のインターフェースに出入りするデータはメガビット/秒で測定され、各「Ttl」行は、合計データの出入りをメガバイトで表示します。
_nload_は、管理者がインターフェイスを通過したデータの量と、指定されたインターフェイスに現在出入りするデータの量を確認するのに役立ちます。
nloadを閉じずに他のインターフェイスを表示するには、左右の矢印キーを使用します。 これにより、システムで使用可能なすべてのインターフェイスが循環します。
_-m_スイッチを使用して複数のインターフェイスを同時に監視することが可能です-
load 2つのインターフェイスを同時に監視(loおよびenp0s5)-
Linux管理-ログ管理
systemdは、CentOS Linuxのシステムロギングの管理方法を変更しました。 システム上のすべてのデーモンがログエントリをソートおよびフィルタリングする主な方法として_tail_や_grep_などのツールを使用するよりも、個々の場所にログを配置する代わりに、 journald はシステムログの分析に単一の管理ポイントをもたらしました。
_systemd_ロギングの背後にある主なコンポーネントは、journal、jounralctl、およびjournald.confです。
_journald_はメインのロギングデーモンであり、_journald.conf_を編集することで構成されますが、_journalctl_は_journald_によって記録されたイベントの分析に使用されます。
_journald_によって記録されるイベントには、カーネルイベント、ユーザープロセス、およびデーモンサービスが含まれます。
正しいシステムタイムゾーンを設定する
_journalctl_を使用する前に、システム時刻が正しい時刻に設定されていることを確認する必要があります。 これを行うには、_timedatectl_を使用します。
現在のシステム時刻を確認しましょう。
現在、システムは現地時間帯に対応しています。 システムがそうでない場合、正しいタイムゾーンを設定しましょう。 設定を変更すると、CentOSは現在のタイムゾーンからのタイムゾーンオフセットを自動的に計算し、システムクロックをすぐに調整します。
_timedatectl_を使用してすべてのタイムゾーンを一覧表示します-
これは、_timedatectl list-timezones_からの競合する出力です。 特定のローカルタイムゾーンを見つけるために、grepコマンドを使用することができます-
CentOSで使用されるラベルは通常、スペースではなくアンダースコアを使用した国/地域です(New_York対 "New York")。
今、私たちのタイムゾーンを設定しましょう-
システムクロックは自動的に時刻を調整する必要があります。
journalctlを使用してログを分析する
_journalctl_を使用する場合の一般的なコマンドラインスイッチ-
Switch | Action |
---|---|
-k | Lists only kernel messages |
-u | Lists by specific unit (httpd, sshd, etc…) |
-b | Boots the label offset |
-o | Logs the output format |
-p | Filters by log type (either name or number) |
-F | Fieldname or fieldnamevalue |
--utc | Time in UTC offset |
--since | Filter by timeframe |
ブートログを調べる
最初に、CentOS Linuxのブートログを調べて構成します。 最初に気付くのは、CentOSはデフォルトでは、再起動後も持続するブートログを保存しないことです。
再起動インスタンスごとに起動ログを確認するには、次のコマンドを発行できます-
システムを再起動すると、別のエントリが表示されます。
さて、最後のブートロギングインスタンスを調べてみましょう-
上記は、最後のブートからの要約された出力です。 また、数時間、数日、数週間、数か月、さらには年単位でブートログを参照することもできます。 ただし、デフォルトではCentOSは永続的なブートログを保存しません。 ブートログを永続的に保存できるようにするには、いくつかの構成変更を行う必要があります-
- ブートログの中央ストレージポイントを作成する
- 新しいログフォルダーに適切なアクセス許可を付与する
- 永続的なロギング用にjournald.confを構成する
永続的なブートログのブート場所の構成
journald_が永続的なブートログを保存する最初の場所は/var/log/journal_です。 これはデフォルトでは存在しないため、作成しましょう-
今、ディレクトリに_journald_デーモンへの適切なアクセス許可を与えましょう-
最後に、journald_に永続的なブートログを保存するように指示します。 _vim_または好みのテキストエディターで、/etc/systemd/jounrald.conf "_を開きます。
関心のある行は、Storage = _です。 最初にコメント#_を削除してから、上記のように Storage = persistent に変更します。 CentOSシステムを保存して再起動し、_journalctl list-boots_を実行するときに複数のエントリがあるように注意してください。
注-VPSプロバイダーからのような_machine-id_が絶えず変化すると、永続的なブートログの保存時に_journald_が失敗する可能性があります。 このようなシナリオには多くの回避策があります。 もっともらしいVPS回避策を見つけた人からの信頼できるアドバイスに従うよりも、CentOS管理フォーラムに投稿された現在の修正を熟読することをお勧めします。
特定のブートログを調べるには、_journald --list-boots_を使用して各オフセットを取得する必要があります。 したがって、2番目のブートログを確認するために使用します-
ブートログオフセットが指定されていない_-b_のデフォルトは、最後のリブート後、常に現在のブートログになります。
ログタイプ別にログを分析する
_journald_からのイベントには番号が付けられ、7つの異なるタイプに分類されます-
したがって、すべての警告を表示する場合は、_journalctl_を介して次のコマンドを発行できます-
上記は、システム上の過去4日間のすべての警告を示しています。
systemdでログを表示および閲覧する新しい方法は、慣れるのにほとんど練習や調査を必要としません。 ただし、さまざまな出力形式と、すべてのパッケージ化されたデーモンログをユニバーサルにする特別な注意事項があるため、受け入れる価値があります。 _journald_は、従来のログ分析方法よりも優れた柔軟性と効率性を提供します。
Linux Admin-バックアップと復元
標準バックアップ計画を展開するためのCentOS固有の方法を検討する前に、まず標準レベルのバックアップポリシーの一般的な考慮事項について説明しましょう。 最初に慣れたいのは、* 3-2-1バックアップルール*です。
3-2-1バックアップ戦略
業界全体で、3-2-1バックアップモデルという用語をよく耳にします。 これは、バックアップ計画を実施する際の非常に優れたアプローチです。 3-2-1は次のように定義されます。 3 データのコピー。たとえば、作業コピーがある場合があります。 rsyncを使用した冗長性のために設計されたCentOSサーバーに置かれたコピー。ローテーションされたオフサイトUSBバックアップは、バックアップサーバー上のデータから作成されます。 2 さまざまなバックアップメディア。 この場合、実際には3つの異なるバックアップメディアがあります。ラップトップまたはワークステーションのSSD上の作業コピー、RADI6アレイ上のCentOSサーバーデータ、およびUSBドライブに配置されたオフサイトバックアップです。 1 オフサイトのデータのコピー。 USBドライブを毎晩オフサイトで回転させています。 別の最新のアプローチは、クラウドバックアッププロバイダーです。
システム回復
_ベアメタルリストアプラン_は、CentOS管理者がすべてのデータを無傷で重要なシステムをオンラインにするために設計した単純なプランです。 100%のシステム障害と過去のすべてのシステムハードウェアの損失を想定した場合、管理者は、ユーザーデータを損なわずにダウンタイムを最小限に抑えてアップタイムを達成する計画を立てる必要があります。 Linuxで使用されるモノリシックカーネルは、システムイメージを使用したベアメタルリストアをWindowsよりもはるかに簡単にします。 Windowsがマイクロカーネルアーキテクチャを使用している場合。
通常、完全なデータの復元とベアメタルの復元は、主要な運用サーバーの稼働中の構成された運用ディスクイメージ、3-2-1ルールに準拠したユーザーデータの冗長バックアップなどの方法の組み合わせによって実現されます。 信頼できる会社の従業員へのアクセスが制限された、安全で耐火性の金庫に保存される可能性のある機密ファイルもあります。
ネイティブCentOSツールを使用したマルチフェーズ_ベアメタルリストア_および_データリカバリプラン_は、
- dd構成済みサーバーの実動ディスクイメージを作成および復元する
- すべてのユーザーデータの増分バックアップを作成するrsync
- tarおよびgzipを使用して、ファイルの暗号化されたバックアップを管理者からのパスワードとメモとともに保存します。 通常、これはUSBドライブに配置し、暗号化して、シニアマネージャーがアクセスできる金庫にロックすることができます。 また、これにより、現在の管理者が宝くじに当選し、日当たりの良い島に姿を消した場合に、他の誰かが重要なセキュリティ資格情報を知ることができます。
システムがハードウェア障害または災害のためにクラッシュした場合、以下は操作を復元するさまざまなフェーズになります-
- 構成されたベアメタルイメージを使用して動作するサーバーを構築する
- バックアップから作業サーバーにデータを復元する
- 最初の2つの操作を実行するために必要な資格情報に物理的にアクセスできる
ファイルレベルのバックアップにrsyncを使用する
_rsync_は、ファイルのディレクトリをローカルまたは別のサーバーに同期するための優れたユーティリティです。 _rsync_はシステム管理者によって長年使用されてきたため、データのバックアップを目的として非常に洗練されています。 著者の意見では、_sync_の最も優れた機能の1つは、コマンドラインからスクリプトを作成できることです。
このチュートリアルでは、さまざまな方法でrsyncについて説明します-
いくつかの一般的なオプションについて調べて話し合う
ローカルバックアップを作成する
SSH経由でリモートバックアップを作成する
ローカルバックアップを復元する
以下は、sshを介した基本的な_rsync_リモートバックアップです-
次の同期により、約2.3GBのデータがLAN経由で送信されました。 rsyncの利点は、ファイルごとにブロックレベルで段階的に機能することです。 つまり、1MBのテキストファイルで2文字だけを変更すると、次の同期で1つまたは2つのブロックのみがLANを介して転送されます。
さらに、CPU使用率を下げるために使用するネットワーク帯域幅を増やすために、インクリメンタル機能を無効にすることができます。 これは、1Gb専用のバックアップランで10分ごとに複数の10MBデータベースファイルを絶えずコピーする場合に推奨されます。 理由は次のとおりです。これらは常に変化し、10分ごとに徐々に送信され、リモートCPUの負荷に負担をかける可能性があります。 合計転送負荷は5分を超えないため、データベースファイル全体を同期することもできます。
以下は、_rsync_を使用した最も一般的なスイッチです-
Switch | Action |
---|---|
-a | Archive mode and assumes -r, -p, -t, -g, -l |
-d | Sync only directory tree, no files |
-r | Recursive into directory |
-l | Copy symlinks as symlinks |
-p | Preserve permissions |
-g | Preserve group |
-v | Verbose output |
-z | Compress over network link |
-X | Preserve extended attributes |
-A | Preserve ACLs |
-t | Preserve timestamps |
-W | Transfer whole file, not incremental blocks |
-u | Do not overwrite files on target |
--progress | Show transfer progress |
--delete | Delete older files on target |
--max-size = XXX | Max file size to sync |
rsyncを使用する場合
_rsync_の個人的な好みは、ソースホストからターゲットホストにファイルをバックアップするときです。 たとえば、データ復旧のためのすべてのホームディレクトリ、または災害復旧のためのオフサイトおよびクラウドへのアクセス。
rsyncを使用したローカルバックアップ
あるホストから別のホストにファイルを転送する方法はすでに見ました。 同じ方法を使用して、ディレクトリとファイルをローカルで同期できます。
rootユーザーのディレクトリで_/etc/_の手動増分バックアップを作成しましょう。
最初に、同期バックアップ用に〜/rootからディレクトリを作成する必要があります-
次に、十分な空きディスク領域があることを確認します。
/etc/ディレクトリ全体を同期するのに適しています-
同期された/etc/ディレクトリ-
今、インクリメンタルrsyncをやってみましょう-
_test_incremental.txt_ファイルのみがコピーされました。
rsyncを使用したリモート差分バックアップ
バックアップ計画が展開されたサーバーに、最初のrsync完全バックアップを実行しましょう。 この例では、実際にMac OS Xワークステーション上のフォルダーをCentOSサーバーにバックアップしています。 _rsync_のもう1つの優れた側面は、rsyncが移植されたどのプラットフォームでも使用できることです。
これで、ワークステーションのフォルダを、オフサイトに保存されたディザスタリカバリメディアが回転するRAID6ボリュームを実行しているサーバーにバックアップしました。 rsyncを使用すると、標準の3-2-1バックアップが得られ、高価な冗長ディスクアレイとローテーションされた差分バックアップを備えたサーバーが1台だけになりました。
_test_file.txt_という名前の新しいファイルが1つ追加された後、rsyncを使用して同じフォルダーの別のバックアップを実行しましょう。
ご覧のとおり、_rsync_を介して新しいファイルのみがサーバーに配信されました。 差分比較はファイルごとに行われました。
注意すべき点がいくつかあります:これは、変更された唯一のファイルであるため、新しいファイルtest_file.txtのみをコピーします。 rsyncはsshを使用します。 どちらのマシンでもルートアカウントを使用する必要はありませんでした。
シンプルで強力かつ効果的な_rsync_は、フォルダ全体およびディレクトリ構造のバックアップに最適です。 ただし、_rsync_自体はプロセスを自動化しません。 ここで、ツールボックスを掘り下げて、仕事に最適な、小さくてシンプルなツールを見つける必要があります。
_cronjobs_を使用してrsyncバックアップを自動化するには、SSHユーザーを認証用のSSHキーを使用してセットアップすることが不可欠です。 これとcronjobsの組み合わせにより、rsyncを一定の間隔で自動的に実行できます。
ブロックごとのベアメタルリカバリイメージにDDを使用する
DDは、GNU Utilitiesを満たすLinuxカーネルのkernel明期から存在するLinuxユーティリティです。
_dd_は、最も簡単な用語で、選択したディスク領域のイメージをコピーします。 次に、物理ディスクの選択したブロックをコピーする機能を提供します。 したがって、バックアップがない限り、ddがディスクに書き込むと、すべてのブロックが置き換えられます。 以前のデータの損失は、高レベルのプロレベルのデータリカバリでさえ、リカバリ機能を超えています。
_dd_でブート可能なシステムイメージを作成するためのプロセス全体は次のとおりです-
- ブート可能なLinuxディストリビューションでCentOSサーバーからブートします
- イメージングするブート可能ディスクの指定を見つけます
- リカバリイメージを保存する場所を決定する
- ディスクで使用されているブロックサイズを見つける
- ddイメージ操作を開始します
このチュートリアルでは、時間と簡略化のために、CentOS仮想マシンからマスターブートレコードのISOイメージを作成します。 その後、この画像をオフサイトに保存します。 MBRが破損して復元する必要がある場合、同じプロセスをブート可能なディスクまたはパーティション全体に適用できます。 ただし、必要な時間とディスク容量は、このチュートリアルでは実際より少し過剰になります。
CentOS管理者は、テスト環境で完全に起動可能なディスク/パーティションの復元に習熟し、ベアメタル復元を実行することをお勧めします。 マネージャーと数十人のエンドユーザーがダウンタイムを数えている現実の状況で、最終的に練習を完了する必要がある場合、これは多くのプレッシャーを取り除きます。 そのような場合、物事を10分間理解することは永遠のように思え、汗をかきます。
注意-ddを使用するときは、ソースボリュームとターゲットボリュームを混同しないようにしてください。 バックアップ場所をブートドライブにコピーすることにより、データとブート可能なサーバーを破壊できます。 または、非常に低いレベルのデータをDDでコピーすることにより、データを永久に破壊する可能性があります。
以下は、_dd_の一般的なコマンドラインスイッチとパラメーターです-
Switch | Action |
---|---|
if= | In file or source to be copied |
of= | Out file or the copy of the in file |
bs | Set both input and output block size |
obs | Set output file block size |
ibs | Set input file block size |
count | Set the number of blocks to copy |
conv | Extra options to add for imaging |
Noerror | Do not stop processing an error |
sync | Pads unfitted input blocks in the event of error or misalignment |
ブロックサイズに関する注意-ddのデフォルトのブロックサイズは512バイトです。 これは、低密度のハードディスクドライブの標準ブロックサイズでした。 今日の高密度HDDは4096バイト(4kB)のブロックサイズに増加し、1TB以上のディスクに対応しています。 したがって、新しい大容量のハードディスクでddを使用する前に、ディスクブロックサイズを確認する必要があります。
このチュートリアルでは、_dd_を使用して運用サーバーで作業する代わりに、VMWareで実行されているCentOSインストールを使用します。 また、起動可能なUSBスティックを使用する代わりに、起動可能なLinux ISOイメージを起動するようにVMWareを構成します。
まず、_CentOS Gnome ISO_というタイトルの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ブート可能イメージからブートするようにVMWare Workstationインストールを構成しましょう。 手順は、OS X上のVMWare用です。 ただし、Linux、Windows、さらにはVirtual Box上のVMWare Workstationでも同様です。
注-Virtual BoxやVMWare Workstationなどの仮想デスクトップソリューションを使用すると、CentOS管理タスクを学習するためのラボシナリオを設定するのに最適な方法です。 複数のCentOSインストールをインストールする機能を提供します。実際にはハードウェア構成がなく、管理に集中できます。また、変更を行う前にサーバーの状態を保存することもできます。
まず、仮想CD-ROMを構成し、仮想CentOSサーバーのインストールの代わりにISOイメージをブートに添付します-
今、起動ディスクを設定します-
これで、起動時に仮想マシンがCentOSのブート可能なISOイメージから起動し、以前に構成された仮想CentOSサーバー上のファイルにアクセスできるようになります。
ディスクをチェックして、MBRのコピー元を確認します(圧縮された出力は次のとおりです)。
_sda_と_sdb_の両方の物理ディスクを見つけました。 各ブロックのサイズは512バイトです。 そのため、ここで_dd_コマンドを実行して、SDA1上のMBRの最初の512バイトをコピーします。
これを行うための最良の方法は-
このように、マスターブートレコードの完全なイメージがあります。 ブートドライブのイメージを作成するのに十分なスペースがあれば、完全なシステムブートイメージを簡単に作成できます-
_conv = sync_は、物理メディアのバイトを揃える必要がある場合に使用されます。 この場合、正確な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つのユーティリティです。 これらは、単にアーカイブを解凍するだけでなく、はるかに多くの目的で使用されます。
CentOS LinuxでGnu Tarを使用する
Tarは、Windowsの_winrar_に似たアーカイブユーティリティです。 その名前_Tape Archive_は_tar_と略され、ユーティリティをほとんどまとめています。 _tar_はファイルを取得し、論理的な利便性のためにアーカイブに配置します。 したがって、/etcに保存されている多数のファイルの代わりに。 バックアップとストレージの利便性のために、それらをアーカイブに「tar」するだけで済みます。
_tar_は、長年にわたってUnixおよびLinuxでアーカイブファイルを保存するための標準でした。 したがって、_gzip_または_bzip_とともにtarを使用することは、各システムのアーカイブのベストプラクティスと見なされます。
以下は、tarで使用される一般的なコマンドラインスイッチとオプションのリストです-
Switch | Action |
---|---|
-c | Creates a new .tar archive |
-C | Extracts to a different directory |
-j | Uses bzip2 compression |
-z | Uses gzip compression |
-v | Verbose show archiving progress |
-t | Lists archive contents |
-f | File name of the archive |
-x | Extracts tar archive |
以下は、_tar_アーカイブを作成するための基本的な構文です。
- tarを使用した圧縮メカニズムに関する注意*-tarを使用する場合は、gzipとbzip2の2つの一般的な圧縮スキームのいずれかに固執することをお勧めします。 gzipファイルはより少ないCPUリソースを消費しますが、通常はサイズが大きくなります。 bzip2は圧縮に時間がかかりますが、より多くのCPUリソースを使用します。ただし、最終ファイルサイズは小さくなります。
ファイル圧縮を使用するときは、標準のファイル拡張子を常に使用して、アーカイブを抽出するために必要な圧縮スキームを(試行錯誤による推測とは対照的に)自分自身を含む全員に知らせたいと思います。
bzip2 | .tbz |
bzip2 | .tar.tbz |
bzip2 | .tb2 |
gzip | .tar.gz |
gzip | .tgz |
Windowsボックスで、またはWindowsで使用するためにアーカイブを抽出する必要がある場合は、ほとんどの3文字の単一拡張子がWindowsとWindowsのみの管理者を混乱させるため、。tar.tbz_または.tar.gz_を使用することをお勧めします(ただし、それは時々望ましい結果です)
Macワークステーションからコピーしたリモートバックアップから_gzipped_ tarアーカイブを作成しましょう-
注意-すべてのファイルをアーカイブに直接追加する代わりに、フォルダー全体を_RemoteStuff_アーカイブしました。 これが最も簡単な方法です。 単純に、抽出時にディレクトリ_RemoteStuff_が抽出され、現在の作業ディレクトリ内のすべてのファイルが_./currentWorkingDirectory/RemoteStuff/_として抽出されます。
では、_/root/_ホームディレクトリ内のアーカイブを展開しましょう。
上記のように、すべてのファイルは、現在の作業ディレクトリ内の格納ディレクトリに単純に抽出されました。
gzipを使用してファイルバックアップを圧縮する
前述のとおり、-j *または *-z コマンドラインスイッチを使用して、tarからbzip2またはgzipを使用できます。 gzipを使用して個々のファイルを圧縮することもできます。 ただし、bzipまたはgzipを単独で使用しても、_tar_と組み合わせた場合ほど多くの機能は提供されません。
_gzip_を使用する場合、デフォルトのアクションは元のファイルを削除し、それぞれを.gz拡張子を追加した圧縮バージョンに置き換えます。
gzipの一般的なコマンドラインスイッチは次のとおりです-
Switch | Action |
---|---|
-c | Keeps files after placing into the archive |
-l | Get statistics for the compressed archive |
-r | Recursively compresses files in the directories |
-1 thru 9 | Specifies the compression level on a scale of 1 thru 9 |
いくつかのWindows O/S zipユーティリティのようなアーカイブ単位ではなく、ファイル単位で多かれ少なかれ_gzip_が機能します。 この主な理由は、_tar_がすでに高度なアーカイブ機能を提供しているためです。 _gzip_は、圧縮メカニズムのみを提供するように設計されています。
したがって、_gzip_を考えるときは、単一のファイルを考えてください。 複数のファイルを考えるときは、_tar_アーカイブを考えてください。 これを以前の_tar_アーカイブで調べてみましょう。
注-熟練したLinuxの専門家は、tarアーカイブをtarballと呼ぶことがよくあります。
_rsync_バックアップから別の_tar_アーカイブを作成しましょう。
デモンストレーションのために、新しく作成したtarballを_gzip_し、gzip_に古いファイルを保持するように指示します。 デフォルトでは、- c_オプションなしで、gzipはtarアーカイブ全体を_.gz_ファイルに置き換えます。
gzip_を使用して-l_スイッチをテストしてみましょう。
_gzip_がWindows Zipユーティリティとどのように異なるかを示すために、テキストファイルのフォルダーでgzipを実行してみましょう。
次に、-rオプションを使用して、ディレクトリ内のすべてのテキストファイルを再帰的に圧縮します。
See? 予想していたものではありません。 元のテキストファイルはすべて削除され、それぞれが個別に圧縮されました。 この動作のため、単一ファイルで作業する必要がある場合は、_gzip_のみを考えるのが最善です。
tarballs_を使用して、_rsynced tarballを新しいディレクトリに抽出しましょう。
上記のように、tarballを/tmpディレクトリに解凍して解凍しました。
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に読み込まれて設定されると、簡単にインストールできます。
簡単なことですが、7zipがインストールされており、tarballアーカイブ用に256ビットAES暗号化ですぐに使用できます。
7zを使用して、gzip圧縮されたアーカイブをパスワードで暗号化します。 そうするための構文は非常に簡単です-
ここで、* a:アーカイブに追加し、-p:*暗号化してパスフレーズを要求します
これで、gzip圧縮されたtarballを256ビットAESで暗号化する.7zアーカイブができました。
注意-7zipは、パスワードとカウンターのSHA-256ハッシュを使用したAES 256ビット暗号化を使用し、キーの導出のために最大512K回繰り返されます。 複雑なキーが使用される場合、これは十分に安全でなければなりません。
アーカイブの暗号化と再圧縮のプロセスは、より大きなアーカイブではさらに時間がかかる場合があります。
7zipは、gzipやbzip2よりも多くの機能を備えた高度な製品です。 ただし、CentOSまたはLinuxの世界では標準ではありません。 したがって、他のユーティリティはできるだけ頻繁に使用する必要があります。
Linux Admin-システムアップデート
CentOS 7システムは3つの方法で更新できます-
- 手動で
- 自動的に *重大なセキュリティ問題のために手動で更新し、自動更新を構成します
実稼働環境では、実稼働サーバー用に手動で更新することをお勧めします。 または、少なくとも更新計画を確立して、管理者が業務に不可欠なサービスを保証できるようにします。
単純なセキュリティ更新プログラムは、管理者によるアップグレードと再構成を必要とする一般的なアプリケーションで再帰的な問題を引き起こす可能性があります。 そのため、最初に開発サーバーとデスクトップでテストする前に、実稼働環境で自動更新をスケジュールすることに疲れてください。
CentOS 7を手動で更新する
CentOS 7を更新するには、_yum_コマンドに慣れる必要があります。* yum *は、CentOS 7でパッケージリポジトリを処理するために使用されます。 _yum_は一般的に使用されるツールです-
- CentOS 7 Linuxシステムを更新する
- パッケージを検索
- パッケージをインストールする *パッケージに必要な依存関係を検出してインストールする
_yum_を更新に使用するには、CentOSサーバーをインターネットに接続する必要があります。 ほとんどの構成では、ベースシステムをインストールし、_yum_を使用して、メインCentOSリポジトリにパッケージの追加機能を照会し、システムアップデートを適用します。
すでにいくつかのパッケージをインストールするために_yum_を利用しています。 _yum_を使用する場合は、常にrootユーザーとして行う必要があります。 または、rootアクセス権を持つユーザー。 _nano_と呼ばれる使いやすいテキストエディターを検索してインストールしましょう。
それでは、_nano_テキストエディタをインストールしましょう。
nanoテキストエディターをインストールしました。 この方法、IMOは、Webサイトでユーティリティを検索し、インストーラーを手動で実行するよりもはるかに簡単です。 また、リポジトリはデジタル署名を使用してパッケージを検証し、yumで信頼できるソースからのものであることを保証します。 新しいリポジトリを信頼するときに信頼性を検証するのは管理者の責任です。 これが、サードパーティのリポジトリにうんざりすることがベストプラクティスと見なされる理由です。
Yumはパッケージの削除にも使用できます。
それでは、更新を確認しましょう。
示されているように、数十のアップデートがインストール待ちです。 実際には、自動更新をまだ構成していないため、合計で約100の更新があります。 したがって、保留中の更新をすべてインストールしましょう。
「y」キーを押すと、CentOS 7の更新が開始されます。 更新時に_yum_が通過する一般的なプロセスは-
- 現在のパッケージを確認します
- リポジトリで更新されたパッケージを検索します
- 更新されたパッケージに必要な依存関係を計算します
- アップデートをダウンロードする *更新プログラムをインストールします
さて、システムが最新であることを確認しましょう-
ご覧のとおり、更新はリストされていません。
YUMの自動更新を構成する
エンタープライズ環境では、前述のように、自動更新が推奨されるインストール方法である場合とそうでない場合があります。 yumを使用して自動更新を設定する手順を見ていきましょう。
最初に、_yum-cron_というパッケージをインストールします。
デフォルトでは、_yum-cron_はアップデートのみをダウンロードし、インストールはしません。 更新プログラムを自動的にインストールするかどうかは管理者が判断します。 最大の注意点は、一部のアップデートではシステムの再起動が必要になることです。 また、一部の更新では、サービスが再び動作する前に構成の変更が必要になる場合があります。
依存関係を更新すると、次の状況で再帰的な問題が発生する可能性があります-
- 特定のライブラリのyumによる更新が推奨されます
- ライブラリはApache Server 2.4のみをサポートしますが、サーバー2.3があります
- コマースサイトは特定のバージョンのPHPに依存しています
- ライブラリ用にインストールされた新しいバージョンのApacheでは、PHPのアップグレードが必要です
- 本番Webアプリケーションは、新しいPHPバージョンではまだテストされていません
Yumは、設定されていない限り、ApacheとPHPを予告なく自動的にアップグレードする場合があります。
5つのシナリオすべてが実行された場合、午前中の大きな頭痛から、ユーザーデータが公開される可能性のあるセキュリティ侵害に至るまで、何でも起こります。 前述の例は完全な種類の嵐ですが、このようなシナリオを展開することは望ましくありません。
更新の再起動および再構成によるダウンタイムが原因でサービスを復元するために必要な時間から収益が失われる可能性があるシナリオにアクセスするのは、管理者次第です。 たとえば、数百万の顧客を抱える1日あたり数百万ドルのeコマースサイトでは、この手法は十分に保守的ではありません。
では、_yum-cron_を設定して、システムアップデートを自動的にインストールします。
_apply_updates = no_を_apply_updates = yes_に変更します。 _yum-cron_の更新間隔を設定しましょう。
繰り返しますが、自動更新を使用して更新をオンデマンドでインストールするかどうかは両刃の剣である可能性があり、一意の状況ごとに管理者が考慮する必要があります。
Linux Admin-シェルスクリプト
Bash Shellの概要
GNU Linuxのフレーバーと同様に、シェルには多くの種類があり、互換性も異なります。 CentOSのデフォルトシェルは、BashまたはBourne Againシェルと呼ばれます。 Bashシェルは、Stephen Bourneによって開発されたBourne Shellの現代の修正版です。 Bashは、ケントンプソンとデニスリッチーによってベルラボで開発されたUnixオペレーティングシステム上のオリジナルのトンプソンシェルの直接の代替品でした(スティーブンボーンもベルラボで採用されました)
誰もがお気に入りのシェルを持ち、それぞれに長所と困難があります。 しかし、ほとんどの場合、BashはすべてのLinuxディストリビューションでデフォルトのシェルになり、最も一般的に利用可能になります。 経験があれば、誰もが自分に最適なシェルを探索して使用したいと思うでしょう。 しかし同時に、誰もがBashシェルをマスターしたいと思うでしょう。
その他のLinuxシェルには、Tcsh、Csh、Ksh、Zsh、およびFishが含まれます。
CentOS管理者にとって、エキスパートレベルでLinuxシェルを使用するスキルを開発することは非常に重要です。 前述したように、Windowsとは異なり、Linuxの中心はコマンドラインオペレーティングシステムです。 シェルは、管理者(またはユーザー)がオペレーティングシステムにコマンドを発行できるようにする単なるユーザーインターフェイスです。 Linuxシステム管理者が航空会社のパイロットである場合、シェルを使用することは、自動操縦から飛行機を離陸し、より操縦しやすい飛行のために手動制御をつかむことに似ています。
BashのようなLinuxシェルは、コンピューターサイエンス用語では「コマンドラインインタープリター」として知られています。 Microsoft Windowsには、DOS(元のDOSオペレーティングシステムと混同しないでください)およびPowerShellという2つのコマンドラインインタープリターもあります。
Bashのような最新のシェルは、より複雑な_shellスクリプト_が一般的なタスクと複雑なタスクの両方を自動化できるようにする*構造*を提供します。
コンストラクトには-
- スクリプトフロー制御(ifthenおよびelse)
- 論理比較演算(より大きい、より小さい、等しい)
- ループ
- 変数
- 操作を定義するパラメーター(コマンド付きスイッチに似ています)
シェルスクリプトとスクリプト言語の使用
多くの場合、タスクの実行について考えるとき、管理者は次のことを自問します。シェルスクリプトまたはPerl、Ruby、Pythonなどのスクリプト言語を使用する必要がありますか?
ここには決まったルールはありません。 シェルとスクリプト言語の典型的な違いのみがあります。
シェル
シェルを使用すると、sed _、 grep 、 tee 、 cat_などのLinuxコマンド、およびLinuxオペレーティングシステム上の他のすべてのコマンドラインベースのユーティリティを使用できます。 実際、ほとんどすべてのコマンドラインLinuxユーティリティをシェルでスクリプト化できます。
シェルを使用するすばらしい例は、DNS解決のためにホストのリストをチェックする簡単なスクリプトです。
DNS名を確認する単純なBashスクリプト-
DNS解決をテストする小さなワードリスト-
google.comドメインに対する出力-
シェルで単純なLinuxコマンドを利用して、単語リストからDNS名を監査する単純な5行のスクリプトを作成できました。 うまく実装されたDNSライブラリを使用していても、Perl、Python、またはRubyでこれにはかなりの時間がかかりました。
スクリプト言語
スクリプト言語は、シェルの外部でより多くの制御を提供します。 上記のBashスクリプトは、Linux _host_コマンドのラッパーを使用しました。 シェルの外部と対話するために、もっと多くのことをして、_host_のような独自のアプリケーションを作成したい場合はどうでしょうか これは、スクリプト言語を使用する場所です。
また、高度に維持されたスクリプト言語を使用すると、ほとんどの場合、アクションが異なるシステム間で機能することがわかります。 たとえば、Python 3.5は、同じライブラリがインストールされたPython 3.5を実行している他のシステムで動作します。 そうではありません。LinuxとHP-UXの両方でBASHスクリプトを実行する場合。
スクリプト言語と強力なシェルの間の境界線があいまいになる場合があります。 Python、Perl、またはRubyを使用してCentOS Linux管理タスクを自動化することができます。 そうすることは実際に非常に一般的です。 また、豊かなシェルスクリプト開発者は、Bashでシンプルですが機能するWebサーバーデーモンを作成しました。
スクリプト言語とシェルでのタスクの自動化の経験により、CentOS管理者は問題を解決する必要があるときにどこから開始するかを迅速に決定できます。 シェルスクリプトを使用してプロジェクトを開始することは非常に一般的です。 次に、プロジェクトが複雑になるにつれて、スクリプト(またはコンパイル済み)言語に進みます。
また、プロジェクトのさまざまな部分にスクリプト言語とシェルスクリプトの両方を使用してもかまいません。 例としては、WebサイトをスクレイピングするPerlスクリプトがあります。 次に、シェルスクリプトを使用して、sed _、 awk_、および_egrep_を解析およびフォーマットします。 最後に、PHPスクリプトを使用して、Web GUIを使用してMySQLデータベースにフォーマット済みデータを挿入します。
シェルの背後にある理論を使って、CentOSのBashシェルからのタスクを自動化する基本的な構成要素から始めましょう。
入力出力とリダイレクト
別のコマンドへの標準出力の処理-
上記では、_cat_sstoud_を_wc_に渡して、_pipe_文字で処理しています。 _wc_は_cat_からの出力を処理し、output.txtの行カウントを端末に出力しました。 _pipe_文字は、次のコマンドで処理される1つのコマンドからの出力を渡す「パイプ」と考えてください。
以下は、コマンドのリダイレクトを扱うときに覚えておくべき重要な概念です-
Number | File descriptor | Character |
---|---|---|
0 | standard input | < |
1 | standard output | > |
2 | standard error | |
append stdout | >> | |
assign redirection | & | |
pipe stdout into stdin |
これを第1章で紹介しましたが、リダイレクトについてはあまり説明せず、リダイレクトを割り当てることもしませんでした。 Linuxでターミナルを開くと、シェルはデフォルトのターゲットとして表示されます-
- 標準入力<0
- 標準出力> 1 *標準エラー2
これがどのように機能するか見てみましょう-
/dev/pts/0_は疑似ターミナルです。 CentOS Linuxはこれを見て、シリアルインターフェースを介してプラグインされたキーボードとディスプレイを備えた実際の端末のようなオープンターミナルアプリケーションを考えます。 ただし、ハイパーバイザーがハードウェアをオペレーティングシステムに抽象化するように、/dev/pts_は端末をアプリケーションに抽象化します。
上記の_lsof_コマンドから、 FD 列の下に3つのファイル記述子すべてが仮想端末(0,1,2)に設定されていることがわかります。 これで、コマンドを送信したり、コマンドの出力を確認したり、コマンドに関連するエラーを確認したりできます。
以下はSTDINとSTDOUTの例です-
標準出力
_stdout_と_stderr_の両方を別々のファイルに送信することも可能です-
ファイルシステム全体を検索するときに、2つのエラーが発生しました。 後で閲覧するためにそれぞれを個別のファイルに送信し、返された結果は個別のテキストファイルに配置しました。
_stderr_をテキストファイルに送信することは、アプリケーションのコンパイルなど、端末に大量のデータを出力することを行う場合に役立ちます。 これにより、端末のスクロールバック履歴から失われる可能性のあるエラーの閲覧が可能になります。
STDOUTをテキストファイルに渡すときの注意点の1つは、 >> と*> *の違いです。 二重の「>>」はファイルに追加されますが、単数形はファイルを上書きし、新しい内容を書き込みます(したがって、以前のデータはすべて失われます)。
STDIN
上記のコマンドでは、テキストファイル_stdin.txt_が_cat_コマンドにリダイレクトされ、その内容が_STDOUT_にエコーされました。
パイプ文字「|」
パイプ文字は、最初のコマンドからの出力を取得し、それを次のコマンドへの入力として渡し、2番目のコマンドが出力に対して操作を実行できるようにします。
さて、別のコマンドに猫の標準出力を「パイプ」しましょう-
上記の_wc_は、パイプから渡された_cat_からの出力に対して計算を実行します。 pipeコマンドは、_grep_または_egrep_からの出力をフィルタリングする場合に特に便利です-
上記のコマンドでは、_egrep_フィルターを介して渡された65535のすべての数値を含むテキストファイルから、_wc_に4桁ごとの数値を渡しました。
&による出力のリダイレクト
- &*文字を使用して、出力をリダイレクトできます。 私たちは同じファイルにSTDOUTとSTDERRの両方の出力を向けたい場合、それは次のように達成することができます-
- &*文字を使用したリダイレクトは次のように機能します。最初に、出力は_out.txt_にリダイレクトされます。 次に、STDERRまたはファイル記述子2がSTDOUTと同じ場所(この場合は_out.txt_)に再割り当てされます。
リダイレクトは非常に便利で、大きなテキストファイルの操作、ソースコードのコンパイル、シェルスクリプトでの出力のリダイレクト、複雑なLinuxコマンドの発行などの問題を解決するのに役立ちます。
強力な一方で、リダイレクトは新しいCentOS管理者にとって複雑になる可能性があります。 Linuxフォーラム(Stack Overflow Linuxなど)への実践、調査、および時々の質問は、高度なソリューションの解決に役立ちます。
Bashシェルコンストラクト
_Bash shell_がどのように機能するのかがよくわかったので、スクリプトを作成するために一般的に使用されるいくつかの基本的な構造を学びましょう。 このセクションでは、探索します-
- リンク:/linux_admin/linux_admin_variables [変数]
- リンク:/linux_admin/linux_admin_loops [ループ]
- リンク:/linux_admin/linux_admin_conditionals [条件付き]
- リンク:/linux_admin/linux_admin_loop_control [ループ制御]
- リンク:/linux_admin/linux_admin_reading_and_writing_to_files [ファイルの読み取りと書き込み]
- リンク:/linux_admin/linux_admin_basic_math_operations [基本的な数学演算]
BASHトラブルシューティングのヒント
BASHは、専用のスクリプト言語に比べて少し注意が必要です。 BASHスクリプトの最大のハングアップのいくつかは、シェルに渡されるスクリプト操作が誤ってエスケープされたり、エスケープされなかったりすることです。 スクリプトを数回見て、期待どおりに機能しない場合は、心配しないでください。 これは、BASHを使用して複雑なスクリプトを毎日作成する人でも一般的です。
Googleをすばやく検索するか、専門のLinuxフォーラムにサインアップして質問すると、迅速な解決につながります。 誰かが正確な問題に遭遇した可能性が非常に高く、すでに解決されています。
BASHスクリプティングは、管理タスクの自動化から便利なツールの作成に至るまで、すべての強力なスクリプトをすばやく作成するための優れた方法です。 エキスパートレベルのBASHスクリプト開発者になるには、時間と練習が必要です。 したがって、可能な限りBASHスクリプトを使用してください。これは、CentOS管理ツールボックスに含めるのに最適なツールです。
Linux Admin-パッケージ管理
CentOSのパッケージ管理は、端末からとグラフィカルユーザーインターフェイスからの2つの方法で実行できます。
多くの場合、CentOS管理者の時間の大半は端末を使用します。 CentOSのパッケージの更新とインストールも同じです。 このことを念頭に置いて、まずターミナルでパッケージ管理を調査し、次にCentOSが提供するグラフィカルパッケージ管理ツールを使用します。
YUMパッケージマネージャー
_YUM_は、CentOSのパッケージ管理用に提供されるツールです。 前の章でこのトピックに簡単に触れました。 この章では、CentOSのクリーンインストールから作業を行います。 最初にインストールを完全に更新してから、アプリケーションをインストールします。
_YUM_は、Linuxでのソフトウェアのインストールと管理を大いに促進しました。 _YUM_は、期限切れのパッケージに加えて、期限切れの依存関係を「自動的に」チェックします。 これにより、すべてのアプリケーションをソースコードからコンパイルする昔のように、CentOS管理者の負担が大幅に軽減されました。
yum check-update
候補を更新できるパッケージを確認します。 このチュートリアルでは、パッケージをアップグレードする前にDevOpsでテストする必要がある本番アプリケーションのないインターネットに直面する本番システムを想定します。 更新された候補をシステムにインストールしましょう。
ヤムアップデート
これにより、更新されたすべての候補がインストールされ、CentOSが最新の状態になります。 新規インストールの場合、インストールとインターネット接続速度によっては、これに少し時間がかかる場合があります。
YUM経由でソフトウェアをインストールする
CentOSシステムの更新に加えて、YUMパッケージマネージャーは、ソフトウェアをインストールするための重要なツールです。 ネットワーク監視ツール、ビデオプレーヤー、テキストエディターなどはすべて、_YUM_を使用して中央リポジトリからインストールできます。
いくつかのソフトウェアユーティリティをインストールする前に、いくつかの_YUM_コマンドを見てみましょう。 毎日の作業では、CentOS管理者によるYUMの使用の90%が約7つのコマンドで行われます。 YUMを日常的に使用するのに十分なレベルで操作することに慣れることを期待して、それぞれについて説明します。 ただし、ほとんどのLinuxユーティリティと同様に、YUMには豊富な高度な機能が用意されており、マニュアルページからいつでも探索できます。 _man yum_を使用することは、Linuxユーティリティでなじみのない操作を実行する最初のステップです。
最も一般的なYUMコマンド
一般的に使用されるYUMコマンドは次のとおりです。
Command | Action |
---|---|
list installed | Lists packages installed via YUM |
list all | Lists all currently available packages |
group list | Lists grouped packages |
info | Provides detailed information about a package |
search | Searches package descriptions and names |
install | Installs a package |
localinstall | Installs a local rpm package |
remove | Removes and installs package |
clean all | Cleans/var/cache/yum to free disk-space |
man yum | Like all linux commands, the help file |
YUMを使用したソフトウェアのインストール
ここで、 Lynx というテキストベースのWebブラウザーをインストールします。 インストールの前に、まずLynx Webブラウザーを含むパッケージ名を取得する必要があります。 デフォルトのCentOSリポジトリがLynx Webブラウザ用のパッケージを提供していることを100%も確信していないので、検索して見てみましょう-
CentOSは、リポジトリにLynx Webブラウザーを提供しています。 パッケージについてもう少し情報を見てみましょう。
いいね! バージョン2.8は十分に最新なので、Lynxをインストールしましょう。
次に、Lynxが実際に正しくインストールされたことを確認しましょう。
すばらしいです! Lynxを使用して、「いいね」やきれいな写真なしでWebがどのように見えるかを見てみましょう。
すばらしいです。現在、実稼働サーバー用のWebブラウザーがあり、Web経由で起動されるリモートエクスプロイトにあまり心配することなく使用できます。 これは実稼働サーバーに適しています。
ほぼ完了しましたが、最初にこのサーバーを開発者がアプリケーションをテストできるように設定する必要があります。 したがって、彼らが彼らの仕事に必要なすべてのツールを持っていることを確認しましょう。 すべてを個別にインストールすることもできますが、CentOSとYUMを使用すると、これがはるかに高速になります。 _Development Group Package_をインストールしましょう。
これは、CentOSが提供するパッケージグループの小さなリストです。 「開発グループ」に含まれるものを見てみましょう。
出力の最初の画面は上記のとおりです。 このリスト全体はかなり包括的なものです。 ただし、このグループは通常、時間が経つにつれて完全にインストールされる必要があります。 開発グループ全体をインストールしましょう。
これはより大きなインストールになります。 完了すると、サーバーにはPerl、Python、C、およびC ++用のほとんどの開発ライブラリとコンパイラが含まれます。
CentOSのグラフィカルパッケージ管理
Gnome Desktopは、 Software と呼ばれるグラフィカルパッケージ管理ツールを提供します。 使い方は非常に簡単で簡単です。 CentOS用のGnomeパッケージ管理ツールであるソフトウェアは、アプリケーション→システムツール→ソフトウェアに移動して見つけることができます。
ソフトウェアパッケージ管理ツールはグループに分割され、管理者はインストールするパッケージを選択できます。 このツールは、エンドユーザーの使いやすさとシンプルさには優れていますが、YUMははるかに強力であり、おそらく管理者により多く使用されるでしょう。
以下はソフトウェアパッケージ管理ツールのスクリーンショットであり、実際にはシステム管理者向けには設計されていません。
Linux Admin-ボリューム管理
- 論理ボリューム管理(LVM)*は、さまざまな物理ハードディスク間でストレージボリュームを管理するためにLinuxで使用される方法です。 これはRAIDと混同しないでください。 ただし、RAID 0またはJ-Bodと同様の概念で考えることができます。 LVMを使用すると、(たとえば)それぞれ1TBの3つの物理ディスクを使用し、次に/dev/sdbなどの約3TBの論理ボリュームを使用できます。 または、1.5TBの2つの論理ボリューム、500GBの5つのボリューム、または任意の組み合わせです。 論理ボリュームのスナップショットに1つのディスクを使用することもできます。
注意-論理ボリュームを使用すると、正しく構成されている場合、実際にディスクI/Oが増加します。 これは、RAID 0が別々のディスクにデータをストライピングするのと同じように機能します。
LVMを使用したボリューム管理について学習するとき、LVMの各コンポーネントが何であるかを知っていれば簡単です。 次の表を調べて、各コンポーネントをしっかりと把握してください。 必要な場合は、Googleを使用して勉強してください。 論理ボリュームの各部分を理解することは、それらを管理するために重要です。
PV | Physical Volume | sda |
PP | Physical Partition | sda1 , sda2 |
VG | Volume Group | Pooled physical resources |
LV | Logical Volume | Seen as a storage facility to the operating system |
- 物理ボリューム*は/dev/sda、/dev/sdbとして認識されます。 Linuxによって検出される物理ディスク。
- 物理パーティション*は、fdiskなどのディスクユーティリティによってパーティション分割されたディスクのセクションです。 ほとんどの一般的なLVMセットアップでは、物理パーティションは推奨されません。 例:ディスク/dev/sdaは、2つの物理パーティション_/dev/sda1_および_/dev/sda1_を含むようにパーティション分割されています
それぞれ1TBの物理ディスクが2つある場合、2つの中にほぼ2TBの_ボリュームグループ_を作成できます。
ボリュームグループから、3つの_論理ボリューム_を作成できます。それぞれは、ボリュームグループの合計サイズを超えない任意のサイズです。
従来のLinuxディスク管理ツール
CentOS 7のLVM管理用の最新かつ最高の機能を備えたツールに慣れる前に、まずLinuxディスク管理に使用されてきた従来のツールを詳しく調べる必要があります。 これらのツールは便利であり、System Storage Manager(lsblk、parted、mkfs.xfs)などの今日の高度なLVMツールで引き続き使用できます。
ここで、システムに1つまたは2つのディスクを追加したと仮定すると、Linuxによって検出されたディスクを列挙する必要があります。 破壊的と見なされる操作を実行する前に、常にディスクを列挙することをお勧めします。 lsblk はディスク情報を取得するための素晴らしいツールです。 CentOSが検出するディスクを見てみましょう。
ご覧のとおり、このシステムにはsda、sdb、sdcの3つのディスクがあります。
Disk sdaには動作中のCentOSインストールが含まれているため、sdaをいじりたくありません。 このチュートリアルでは、_sdb_と_sdc_の両方がシステムに追加されました。 これらのディスクをCentOSで使用できるようにしましょう。
ディスクラベルを作成する
これで、1つのディスクにラベルが付けられました。 _sdc_で同じ方法で_parted_コマンドを実行するだけです。
ディスクにパーティションを作成する
各ディスクに単一のパーティションのみを作成します。 パーティションを作成するには、_parted_コマンドを再度使用します。
警告-0.00Bから6442MB(セクター0..12582911)のパーティションを要求しました。
私たちが管理できる最も近い場所は17.4kB〜1048kB(セクター34..2047)です。
これはまだ受け入れられますか?
はい・いいえ? NO
情報-/etc/fstabの更新が必要な場合があります。
lsblkの出力からわかるように、2つのパーティションがあり、それぞれがsdbとsdcにあります。
ファイルシステムを作成する
最後に、ボリュームをマウントして使用する前に、ファイルシステムを追加する必要があります。 XFSファイルシステムを使用します。
それぞれに使用可能なファイルシステムがあることを確認してみましょう。
現在、それぞれがXFSファイルシステムを使用しています。 それらをマウントし、マウントを確認して、それぞれにファイルをコピーしましょう。
この時点で2つの使用可能なディスクがあります。 ただし、手動でマウントした場合にのみ使用できます。 ブート時にそれぞれをマウントするには、_fstab_ファイルを編集する必要があります。 また、新しいディスクへのアクセスを必要とするグループにアクセス許可を設定する必要があります。
ボリュームグループと論理ボリュームを作成する
CentOS 7に追加された最大の機能の1つは、_System Storage Manager_または_ssm_というユーティリティが追加されたことです。 System Storage Manager は、Linux上のLVMプールとストレージボリュームの管理プロセスを大幅に簡素化します。
CentOSでシンプルボリュームプールと論理ボリュームを作成するプロセスを実行します。 最初のステップは、System Storage Managerのインストールです。
_ssm list_コマンドを使用してディスクを見てみましょう。
上記のように、合計3つのディスクがシステムにインストールされています。
- /sdba1 -CentOSインストールをホストします
- /sdb1 -/mnt/sdbにマウント
- /sdc1 -/mnt/sdcにマウント
2つのディスク(sdbとsdc)を使用して_Volume Group_を作成します。 次に、3つの3GB論理ボリュームをシステムで使用できるようにします。
ボリュームグループを作成しましょう。
デフォルトでは、_ssm_はプールの10GB全体を拡張する単一の論理ボリュームを作成します。 これは必要ないので、これを削除しましょう。
最後に、3つの論理ボリュームを作成しましょう。
それでは、新しいボリュームを確認しましょう。
これで、2つの物理ディスクパーティションにまたがる3つの個別の論理ボリュームができました。
論理ボリュームは、CentOS Linuxに組み込まれた強力な機能です。 これらの管理の表面に触れました。 マスタリングプールと論理ボリュームには、Tutorials Pointの練習と拡張学習が付属しています。 ここまでは、CentOSでのLVM管理の基本を学び、単一のホストで基本的なストライプ化論理ボリュームを作成する機能を備えています。