LinuC level1 ver.10 102試験対策

2020年6月11日

シェル、スクリプト、データ管理

シェル変数のカスタマイズと使用

変数、エイリアス、関数

シェル変数環境変数
設定変数名=値export 変数名
export 変数名=値
一覧表示setenv
削除unset 変数名unset 変数名
変数に関するコマンド構文

エイリアスの設定:alias [エイリアス名=’実行内容’]
エイリアス一覧表示:alias

エイリアスを無効にして実行:\コマンド

エイリアスの削除:unalias エイリアス名

関数を定義するコマンド:function

設定function 関数名
一覧表示declare -f
set
解除unset 関数名
関数の設定

bashシェルの環境設定

全員が参照ユーザ個別で参照
ログイン時に読み込み/etc/profile~/.bash_profile
~/.bash_login
~/.profile
bash起動時に読み込み/etc/bash.bashrc~/.bashrc
ログアウト時に読み込み~/.bash_logout
bashシェルの設定ファイル
emacs, viシェルのキーバインドをEmacs風、vi風
noclobber既存ファイルへの上書きリダイレクトを無効にする
noglobワイルドカードでのファイル指定を無効にする
bashシェルのオプションと意味

bashシェルのオプション設定

オプションを有効化:set -o オプション名
オプションを無効化:set +o オプション名

簡単なスクリプトのカスタマイズと作成

シェルスクリプトの基本的な書き方

  • bash スクリプトファイル名
  • source スクリプトファイル名
  • . スクリプトファイル名
  • ./ スクリプトファイル名 (実行権限と読み取り権限が必要)
$0スクリプトファイル名
$1, $2…引数(1つ目、2つ目、、)
$@引数(指定したもの全て)
$#引数の数
$?直前の処理の成否(成功は0、失敗は0以外)
$$シェルのPID
主な特殊変数

if文の書き方

if 条件式1
then
条件1に合致した場合の処理
elif 条件式2
条件2に合致した場合の処理
else
条件に合致しなかった場合の処理
fi

-f ファイル名ファイル名
-d ディレクトリ名ディレクトリが存在
-e ファイル/ディレクトリ名ファイル/ディレクトリが存在
-r ファイル/ディレクトリ名ファイル/ディレクトリが読み取り可能
条件式と意味
値1 -eq 値2値1と値2が等しい
値1 -ne 値2値1と値2が等しくない
値1 -lt 値2値1が値2より小さい
値1 -le 値2値1が値2以下
値1 -gt 値2値1が値2より大きい
値1 -ge 値2値1が値2以上
数値の条件式
!条件式条件式を満たさない
条件式1 -a 条件式2AND
条件式1 -o 条件式2OR
論理式

四則演算の結果を出力:expr 数値1 演算子 数値2

case文

case 変数名 in
値1) 値1だった場合の処理;;

*)どの値にも合致しなかった場合の処理;;
esac

繰り返し構文

for文

for 変数名 in 値1 値2..(値リスト)
do
繰り返す処理
done

連続値を出力するコマンド:seq

while文

while 条件式
do
繰り返す処理
done

その他のシェルスクリプトの活用方法

入力された値を変数に格納:read 変数名

スクリプトを実行するコマンド:exec コマンド構文

ネットワークの基礎

インターネットプロトコルの基礎

TCP/IPの通信フロー

20FTP(データ用)
21FTP(制御用)
22SSH
23Telnet
25SMTP
53DNS
80HTTP
110POP3
143IMAP
443HTTPS
主なウェルノウンポート

ポート名とアプリケーション名との対応を設定しているファイル:/etc/services

  • TCP/IPにおいて、IPアドレスサブネットマスクが各端末に必須
  • サブネットマスクによりIPアドレスのネットワークアドレス部を特定
  • 各ネットワークには必ず2つ、ホストに割り当てられないアドレス(ネットワークアドレスブロードキャストアドレス)が存在する
  • デフォルトゲートウェイアドレスは異なるネットワークに接続する時に必要
  • デフォルトゲートウェイアドレスは、端末に割り当てられているネットワークと同一のネットワークアドレスである必要がある
クラスプライベートアドレス範囲デフォルトマスク
A10.0.0.0 ~
10.255.255.255
/8
B172.16.0.0 ~
172.31.255.255
/16
C192.168.0.0 ~
192.168.255.255
/24
プライベートアドレスの範囲
アドレス範囲用途
127.0.0.0/8ループバックアドレス
(ホスト自信を表すアドレス)
169.254.0.0/16APIPA(DHCPサーバからアドレスを取得できなかった場合に自動構成されるアドレス)
特殊な用途で使用されるアドレス範囲
スコープの種類アドレス用途
グローバル2000::/3インターネットで一意に利用。IPv4でのグローバルアドレスに相当
ユニークローカルfc00::/7組織内のネットワークで一意に利用。IPv4でのプライベートアドレスに相当
リンクローカルfe80::/10同一ネットワークで一意に利用。IPv4でのリンクローカルアドレスに相当
IPv6のアドレスグループ

基本的なネットワーク構成

ホスト名の設定

ホスト名が格納されているファイル:/etc/hostname

ホスト名を確認・設定するコマンド:hostname

IPアドレスの設定

インターフェイスの設定を確認・変更するコマンド
(サブコマンドなし):ifconfig
(サブコマンドあり):ip

addrIPアドレスに関する情報を表示・確認
routeルーティングテーブルに関する情報を表示・設定
ipのサブコマンドと説明
show インターフェイス名設定情報を表示。インターフェイス名を指定できる。
add IPアドレス/マスク
dev インターフェイス名
IPアドレスを設定
del IPアドレス/マスク
dev インターフェイス名
IPアドレスを削除
※addrのサブコマンド

インターフェイスを有効化するコマンド:ifup
インターフェイスを無効化するコマンド:ifdown

経路情報の設定

経路情報の設定・参照コマンド:route
(追加):route add -net ターゲット netmask マスク gw ゲートウェイ / default gw ゲートウェイ
(削除):route del -net ターゲット / default

基本的なネットワークの問題解決

疎通確認によるトラブルシュート

宛先となるホストと疎通確認を行うコマンド:ping

コマンドを実行すると、ICMPパケットを送信して疎通確認を行う。

0エコー応答
3宛先到達不能
8エコー要求
11時間経過
主なICMPメッセージタイプ

宛先となるホストに到達するまでの経路を出力するコマンド(2つ):traceroute 宛先、tracepath 宛先

TCP/IP通信の状態を確認

TCP/IP通信の状態を表示するコマンド:netstat

-a待機ポートも含む全ての状態の通信を表示。
-lも指定しなかった場合、確率した通信のみ表示
-l待機(LISTEN)ポートを表示
-n名前解決をせずに表示
-tTCP通信を表示
-uUDP通信を表示
-p対応するプロセスのID(PID)を表示
-rルーティングテーブルを表示
netstatコマンドのオプションと説明

ルーティングテーブルを確認するコマンド3つ:netstat -r, route, ip route

指定したポートへの接続

指定したポートへ接続するコマンド:nc
指定したポートを待ち受けするコマンド:nc -l

クライアント側のDNS設定

名前解決の処理順を定義するファイル:/etc/nsswitch.conf

処理順

  1. 端末上に存在する/etc/hostsファイルの情報を参照し、名前解決
  2. /etc/resolv.confファイルに指定されたDNSサーバに問い合わせて名前解決
SOAゾーンの権威情報
NSDNSサーバ
MXメールサーバ
Aホスト名に対応するIPv4アドレス。ホスト名を指定した名前解決(正引き)の際に利用
PTRIPアドレスに対応するホスト名。IPアドレスを指定した名前解決(逆引き)の際に利用
CNAMEホストの別名
主なDNSレコード

名前解決の検証

名前解決を検証し、簡易的な情報を出力するコマンド:host

名前解決を検証し、詳細な情報を出力するコマンド:dig

セキュリティ

セキュリティ管理業務の実施

ユーザユーザ名
パスワードハッシュかされたパスワード
最終変更日1969/12/31からの日数
変更可能最短日数0だといつでもパスワード変更可能
パスワード有効期限いつまで同じパスワードを使い続けられるか
警告日有効期限の何日まえに警告を表示するか
使用不可になるまでの日数パスワードの有効期限が経過してからアカウントが使用不可になるまでの日数
アカウント有効期限ユーザアカウントの有効期限
予約フィールド将来的に使用できるフィールドとして予約
/etc/shadowファイルの項目

パスワード情報を変更するにはshadowファイルを編集する。一般ユーザーはpasswdコマンドを介して自分のパスワードを設定できる。そのため、そのコマンドの実行ファイルはSUIDが有効になっている。

ユーザーの設定を変更するコマンド:usermod

-e 年-月-日アカウントの有効期限を設定
-Lアカウントをロック(無効化)
-Uアカウントのロックを解除
オプションと説明

パスワードの有効期限を設定できるコマンド:chage, passwd

-l有効期限情報を表示
-M 日数パスワードの有効期限
-I 日数パスワードの有効期限が切れてからアカウントを無効にするまでの日数
-E 年-月-日アカウントの有効期限を設定
chageのオプションと説明
-x 日数パスワードの有効期限を設定
-lアカウントをロック(無効化)
-uアカウントのロックを解除
passwdのオプションと説明

ファイルやポートを開いているプロセスを表示するコマンド:lsof, fuser, netstat -p

リモートホストが待機しているポートを確認するコマンド:nmap ホスト, nc -z ホスト ポート番号

利用できるリソースを制限するコマンド:ulimit

-a対象となるリソースと制限値の一覧を表示
-c ブロックサイズコアダンプファイルのサイズを制限
-n ファイル数同時に開くことができるファイル数を制限
オプションと説明

ユーザーのログイン情報の調査

現在ログイン中のユーザーを表示するコマンド:who, w

ホスト上でのログイン履歴を表示するコマンド:last

/var/run/utmpwho, w
/var/log/wtmplast
各コマンドが参照するファイル

ホストのセキュリティ設定

リモート接続するコマンド:telnet ホスト

スーパーサーバを利用する際、TCP Wraper(tcpd)によりアクセス制御の機能を実現する。

  1. /etc/hosts.allow 許可するアクセスを記述
  2. /etc/hosts.deny 拒否するアクセスを記述

xinetdの利用

/etc/xinetd.confxinetdの全般の設定
/etc/xinetd.d/ディレクトリ内のファイルxinetdで管理するプログラムの設定
zinetdの設定ファイル

SSHによりリモートホスト上に、もしくはリモートホスト上からファイルをコピーするコマンド:scp

OpenSSHクライアントの設定ファイル/etc/ssh/ssh_config
OpenSSHサーバの設定ファイル/etc/ssh/sshd_config

SSH用認証エージェントを起動し、秘密鍵を保持するコマンド:ssh-agent

鍵を追加:ssh-add ファイル

GnuPGを利用するコマンド:gpg

–gen-key鍵ペアの生成
–list-keysキーリングの内容を表示
-aインポート、エクスポートの際、ASCII情報で扱う。
規定ではバイナリ
-o ファイル名出力するファイルを指定
–export メアド指定したアドレスの鍵をエクスポート
–import ファイル名指定したファイルに含まれる鍵をインポート
–sign-key メアド鍵に署名を行う
-e指定したファイルを暗号化
-r メアド暗号化の際に使用する鍵のアドレスを指定
-b署名ファイルの作成(分離署名)
–verify署名ファイルを検証
gpgオプション