LPIC-1 試験勉強メモ その 6

LPIC-1 試験勉強メモ その 6
目次

シェルとスクリプト

ログインシェル

ユーザーがログインした時に最初に起動するシェルのこと。 それ以外のタイミングで起動するシェルを非ログインシェルと呼ぶ。

ログインシェルは /etc/passwd の第 7 フィールドに記載している。

ログインシェル起動時

起動時にロードする設定ファイルは次の通り。

  1. /etc/profile
  2. ~/.bash_profile
  3. ~/.bash_login
  4. ~/.profile

非ログインシェルの場合は ~/.bashrc のみ読み込む。

コマンド結果の格納

  • $() で囲んで代入
  • バッククォート (`) で囲んで代入
  • $(()) で算術演算

シェル関数

シェル内部で実行される一連の処理。子プロセスを生成しない。

function 関数名() { コマンド }

エイリアス

alias コマンド

エイリアスを登録する。

alias エイリアス名='登録文字列'

unalias コマンド

エイリアスを解除する。

unalias エイリアス名

特殊シェル変数

シェル変数名説明
$$シェルの PID
$?最後に実行したコマンドの終了値 (コマンド成功時は 0、それ以外の場合は失敗)
$#引数の個数
$*区切り文字で区切られたすべての引数
$0実行ファイル名
$1, $2…1 番目の引数、2 番目の引数

シェルスクリプト

先頭にコマンドを解釈するインタープリターのパスを記述する。

  • #!/bin/sh: Bourne シェル
  • #!/bin/bash: bash
  • #!/usr/bin/perl: perl
  • #!/usr/bin/python: python

コマンドか source コマンドで実行中のシェルないでスクリプトを実行する。

  • . スクリプト名
  • source スクリプト名

スクリプト条件式

if 構文
if コマンド 1
  コマンド 2
fi
test 構文
test 条件式
[] 構文
[条件式]
条件式のオプション
  • -d ファイル名: ファイルが存在し、ディレクトリファイルなら真
  • -e ファイル名: ファイルが存在すれば真
  • -f ファイル名: ファイルが存在し、通常ファイルなら真
  • -x ファイル名: ファイルが存在し、実行可能ファイルなら真
  • -n 文字列: 文字列の長さが 0 より大きければ真
  • -z 文字列: 文字列の長さが 0 であれば真
  • 文字列 1 = 文字列 2: 文字列 1 と文字列 2 が等しければ真
  • 文字列 1 != 文字列 2: 文字列 1 と文字列 2 が等しくなければ真
  • 整数 1 -eq 整数 2: 整数 1 と整数 2 が等しければ真
  • 整数 1 -ge 整数 2: 整数 1 が整数 2 より大きいか等しければ真
  • 整数 1 -gt 整数 2: 整数 1 が整数 2 より大きければ真
  • 整数 1 -le 整数 2: 整数 1 が整数 2 より小さいか等しければ真
  • 整数 1 -lt 整数 2: 整数 1 が整数 2 より小さければ真
  • 整数 1 -ne 整数 2: 整数 1 と整数 2 が等しくなければ真

for 構文

for シェル変数 in 値のリスト
do
  コマンド
done

while 構文

while コマンド 1
do
  コマンド 2
done

read コマンド

終了の文字列が来るまで読み込み、区切り文字で分割して変数が足りなければ残り全てを 1 つの引数とする。

read 文字列 <<< 終了

seq コマンド

指定した整数を終了値とし、初期値から増分ずつ増やす。

seq 終了値
seq 初期値 終了値
seq 初期値 増分 終了値

X Windows System

Linux で GUI を提供する。 X サーバー (xorg) とクライアントとして gnome-terminal、xeyes、xclock がある。

GUI

SysV init でランレベル 5 を実行すると GUI になる。

SysV init

  • 起動するディスプレイマネージャーは prefdm に記載のもの。
  • DISPLAYMANAGER 変数

systemd

systemd [enable|disable] [xdm|gdm|kdm]

ディスプレイマネージャー

グラフィカルな GUI を表示する。ログイン画面の表示とユーザー認証を行う。

  • xdm: X11
  • gdm: gnome
  • kdm: KDE、のちに sddm
  • lightdm: 軽量ディスプレイマネージャー

ウィンドウマネージャー

ウィンドウのオープン、クローズ、移動、リサイズを管理する。

ディスプレイマネージャー

  • Xorg
  • gnome-session
ディスプレイマネージャーウィンドウマネージャー
GNOMEgdmmetacity, mutter
KDEkdm, sddmkwin
X Windows Systemxdmtwm

WayLand

X に変わるディスプレイサーバーで、wayland プロトコルを利用する。

xdpyinfo コマンド

X サーバーの情報を表示する。

wxininfo コマンド

クリックした特定のウィンドウの情報を表示する。

xwd コマンド

スクリーンやウィンドウのイメージをファイルで保存する。

xlsclients コマンド

スクリーンに表示されるアプリの一覧を表示する。

xorg.conf の設定セクション

  • ServerLayout: InputDevice や Screen の識別名など、全体のレイアウトを記述する
  • Files: フォントのパスなど、ファイルパス名を記述する
  • InputDevice: キーボードやマウスなど、入力デバイスを記述する
  • Device: ビデオカードのドライバ名などデバイスを記述する
  • Monitor: 垂直、水平周波数などモニタ情報を記述する
  • Screen: 解像度、色深度など、スクリーンのコンフィグレーションを記述する

DISPLAY 変数

サーバー名:ディスプレイ番号:スクリーン番号
  • ディスプレイ番号: 異なる仮想ディスプレイを使うときは数字を変える
  • スクリーン番号: 0 から 1 番目のスクリーンやモニターを指す

ネットワーク越しにディスプレイにプログラムを表示する方法

  1. DISPLAY で送り先の X サーバーを指定する
  2. xhost コマンドでリクエストを許可する

xhost コマンド

ホスト名を指定してアクセスの許可を設定する。 ホスト名を指定しない場合はすべてのホストを許可する。 セキュリティリスクがあるので、ssh ポートフォワーディングなどの対策をする必要がある。

xhost [[+|-] ホスト名のリスト]
  • +: 許可
  • -: 拒否
X11 ポート転送

リモート実行したアプリのウィンドウをローカルに表示する。 /etc/ssh/sshd_config で次のように設定する。

  • X11 Forwarding yes
  • Forward X11 yes

XDMCP (X Display Manager Control Protocol)

X サーバーがネットワークを介してディスプレイマネージャーに接続するためのプロトコル

VNC (Virtual Network Computing)

RFB (Remote Frame Buffer) プロトコルでリモートマシンを GUI 操作する。 通信は ssh で保護される。

  • VNC サーバー: tigervnc-server
  • VNC クライアント: vinagre

RDP (Remote Desktop Protocol)

Windows との接続に使う。rdesktop コマンドを使う。

SPICE (Simple Protocol for Independent Computing Environments)

VM のコンソールをローカルで表示する。 qemu-kvm に標準で組み込まれている。 virt-manager、virt-viewer、remote-viewer でアクセスする。

アクセシビリティ機能

提供プログラム

  • GNOME 2: gok
  • GNOME 3: libcaribou を利用した GNOME Shell オンスクリーンキーボード

種類

  • スティッキーキー: 同時押しを順番にする
  • スローキー: 長押しを有効にする
  • バウンスキー: 素早く複数回押した時に入力を無効にする
  • トグルキー: CapsLock と NumLock を切り替え時にピープ音を発する
  • リピートキー: 長押しすると連続入力をする
  • マウスキー: 十字キーでマウスカーソルを移動する

ユーザーアカウントの管理

ユーザーの作成

useradd コマンド

ユーザーを新規に作成する。各ファイルに必要な情報を記述する。 オプションのデフォルト値は /etc/default/useradd に記載される。

  • -c: コメントの指定
  • -d: ホームディレクトリの指定
  • -e: アカウント失効日の指定
  • -f: パスワードが失効してからアカウントが使えなくなるまでの日数
  • -g: 1 次グループの指定
  • -G: 2 次グループの指定
  • -k: skel ディレクトリの指定
  • -m: ホームディレクトリを作成する (/etc/login.defs で CREAE_HOME yes であれば既定で作成)
  • -M: ホームディレクトリを作成しない
  • -s: ログリンシェルの指定
  • -u: UID の指定
  • -D: デフォルトの表示あるいは設定

USERGROUPS_ENAB 変数が Yes であればグループ名とユーザー名が同じ名前になる。 ユーザー情報が記載されるのは次のファイル。

  • /etc/passwd: ユーザー情報の一覧
  • /etc/shadow: ユーザーパスワード情報の一覧
  • /etc/group: グループ情報の一覧
  • /etc/gshadow: グループパスワード情報の一覧

UID が 500 未満のものはデーモンやディレクトリや所有者用のシステムアカウント。

パスワード

/etc/passwd の第 2 フィールドが x か !! の時はパスワードが未設定の状態。

  • /etc/passwd rw-r--r--: 一般ユーザーでも読み取りは可能
  • /etc/shadow r--------: root 以外は読み書きできない

/etc/passwd

ユーザー名:パスワード:ユーザー ID:グループ ID:コメント:ホームディレクトリ:ログインシェル

/etc/shadow

  1. ログイン名
  2. 暗号化パスワード
  3. 最終パスワード変更日
  4. パスワード変更可能期間
  5. パスワード変更期日
  6. パスワード切れ警告日
  7. パスワード切れ使用不可日
  8. アカウント使用不可日
  9. 予約フィールド

/etc/pamd/system-auth 内の暗号化アルゴリズムを変更した際は何もしなくてもいい。 優先順位に従って順番にアルゴリズムの評価を実施する。

/skel

/etc/skel ディレクトリ配下の構成は新規ユーザー追加 (ユーザープロビジョニング) 時に自動コピーされる。

usermod コマンド

ユーザー情報を変更する。

  • -L: ユーザーをロックする
  • -G: グループを変更する

userdel コマンド

ユーザーを削除する。

  • -r, –remove: ホームディレクトリを削除する
  • -f, –force: ユーザーがログインしていても強制的に削除する

groups コマンド

ユーザーが所属しているグループを表示する。

groups [ユーザー名]

groupadd コマンド

グループを追加する。

groupadd [-g GID] グループ名
  • -g: GID を指定

groupdel コマンド

グループを削除する。root のみ実行可能。

getent コマンド

データベースの内容を表示する。 キーを指定しない場合はすべてのエントリーを表示する。

getent データベース名 キー名

change コマンド

アカウント失効日の設定と表示を行う。

  • -f: アカウントとパスワード失効日の情報を表示
  • -d: パスワードの最終更新日を設定
  • -m: パスワード変更間隔の最短日数を指定
  • -M: パスワード変更なしで使用できる最長日数を指定
  • -W: パスワード変更期日の何日前から警告を出すか設定
  • -I: パスワード変更期日から利用できなくなるまでの猶予日数を設定
  • -E: アカウント失効日を YYYY-MM-DD で設定

chsh コマンド

ログインシェルを変更する。

ユーザーのログインを禁止

次のファイルを作成するとユーザーのログインを禁止する。

  • /sbin/nologin
  • /bin/false

/etc/passwd の第 2 フィールドを * か ! にするとログインを拒否する。