本稿ではLinux認定試験のLPICで必要とされる知識のうち見直すべきポイントをまとめます。
シェル、スクリプト
myfuncという関数の定義を表示するコマンド
declare -f myfunc
declareは変数の属性を変更するためのコマンドです。
ログインシェルにおいて読み込まれる設定ファイルを述べよ
- /etc/profile
- /etc/.bash.bashrc
- ~/.bash_profile or ~/.bash_login or ~/.profile
対話型シェルにおいて読み込まれる設定ファイルを述べよ
- ~/.bashrc
シェルスクリプトの実行方法と必要な権限およびプロセスの関係をまとめよ
実行方法 | 必要な権限 | プロセス |
---|---|---|
bash myscript | 読み取り | 子プロセス |
source myscript | 読み取り | 同一プロセス |
. myscript | 読み取り | 同一プロセス |
./myscript | 読み取り+実行 | 子プロセス |
あるコマンドを同一プロセスで起動させるための方法を述べよ
exec {コマンド}
testコマンドの-f・-s・-eの違いを述べよ
- -f(file):ファイルがあれば真(ディレクトリや特殊ファイルは除く)
- -s(size):ファイルがあれば真(サイズ0である空のファイルは除く)
- -e(exists):ファイルがあれば真
ユーザーインタフェースとデスクトップ
KDEとは
拡張性の高いデスクトップ環境の一つで,最新バージョンはPlasmaと呼ばれている
Gnomeとは
ベーシックなデスクトップ環境の一つで,Ubuntuなどで採用されている
Xfceとは
軽量でシンプルなデスクトップ環境の一つで,低スペックのマシンでも快適に動作する
XDMCPとは
Xサーバとディスプレイマネージャの間で利用されるプロトコル
VNCとは
クロスプラットフォーム対応のリモートデスクトップソフトウェア
# vncserver :{ディスプレイ番号}
vncserver :1
Spiceとは
オープンソースの画面転送プロトコル。VNCとは異なり通信の暗号化やマルチモニタ機能を搭載。
/etc/X11/xorg.confを自動生成する方法
Xorg -configureにより/root/xorg.conf.newが作成されるため,/etc/X11/xorg.confにcpする
Xorg.confにおいてDeviceとInputDeviceの違いを述べよ
- Device:グラフィックカード(GPUなど)
- inputDevice:入力デバイス(キーボードやマウス)
Xのログファイルはどこに格納されるか
/var/log/Xorg.{ディスプレイ番号}.log
localpcのディスプレイ上にremotepcで実行されているrxvtのウィンドウを表示させる手順を述べよ
# XサーバがディスプレイにXクライアントからの指令を表示させるための許可設定
[lpic@localpc] xhost +remotepc
# remotepcの指令を出す先を設定
[lpic@remotepc] export DISPLAY=localpc:0
# 端末エミュレータの起動
[lpic@remotepc] rxvt &
ディスプレイマネージャとは
ログイン画面の表示とユーザ認証を行うソフトウェア
ディスプレイマネージャ(DM)を列挙せよ
- XDM(X Display Manager)← Xで利用されている
- GDM(Gnome Display Manager)← GNOMEで利用されている
- SSDM(Simple Desktop Display Manager)← KDE Plasmaで利用されている
- LightDM(Light Display Manager)← Ubuntuで利用されている
ウィンドウマネージャ(WM)を列挙せよ
- twm ← 最もベーシックなWM
- Mutter ← GNOMEで利用されている
- KWin ← KDEで利用されている
LightDMを自動的に有効にする設定方法を述べよ
systemctl enable lightdm.service
統合デスクトップ環境のGUI・DM・WM・Distroを整理せよ
環境 | GUI | DM | WM | Distro |
---|---|---|---|---|
GNOME | GTK+ | GDM | Mutter | CentOS/Ubuntuなど |
KDE Plasma | Qt | SDDM | KWin | openSUSEなど |
ディスプレイマネージャが起動するプログラムを挙げよ
- Xサーバ:Xorg
- Xクライアント:gnome-session(GNOME)・startkde(KDE)
管理タスク
LC_ALLとLANGの違いを説明せよ
LC_ALLは強制,LANGはデフォルト値
LANGにはLCが付かないので要注意。
ISO-8859とは何か
ASCIIを拡張した8ビット256種類の文字コード
useraddコマンドでホームディレクトリを自動的に作成するオプションは何か
-mオプション
useraddコマンドでホームディレクトリを指定するオプションは何か
-dオプション
useraddコマンドでデフォルトシェルを指定するオプションは何か
-sオプション
userdelコマンドでホームディレクトリを自動的に削除するオプションは何か
-rオプション
ホームディレクトリのテンプレートはどこに置くか
/etc/skel
アカウントをロックする方法とロックを解除する方法を述べよ
# ロック
usermod -L lpic
passwd -l lpic
# アンロック
usermod -U lpic
passwd -u lpic
ローカルホストやLDAPサーバなどにある情報を出力するコマンド
getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
getent group
root:x:0:
daemon:x:1:
ユーザのcrontabが置かれるディレクトリはどこか
/var/spool/cron
/etc/cron.allowと/etc/cron.denyの両方が存在しない場合の振る舞いを説明せよ
rootのみ実行可能
/etc/at.allowと/etc/at.denyの両方が存在しない場合の振る舞いを説明せよ
rootのみ実行可能
systemdでスケジューリングジョブを実行する方法
- タイマーユニット(例えばlpic.timerに[Unit]と[Time]と[Install]を定義する)
- systemd-run
これによりスケジュールされたジョブはsystemctl list-timersで表示し,systemctl stopで削除します。
タイムゾーンの設定方法を述べよ
# バイナリを/etc/localtimeにcp
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# バイナリへのシンボリックリンクを/etc/localtimeに作成
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# 対話形式で設定
tzselect
# GUIで設定
dpkg-reconfigure tzdata
日付や時刻を規定する変数はLC_TIMEとLC_DATEのどちらか
LC_TIME
/etc/passwdと/etc/shadowのパーミッションを説明せよ
- /etc/passwd:-rw-r--r--
- /etc/shadow:-r--------
一般ユーザがログインする際は認証プロセスがroot権限を持つプログラムを通じて実行されるためshadowを利用することができます。
必須システムサービス
NTPサーバの分散ネットワーク
pool.ntp.org
NTPサーバを利用して時刻を同期させる方法
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
を/etc/chrony/chrony.confに設定した上で以下を実行する。
sudo apt install chrony -y
sudo systemctl enable chronyd
sudo systemctl start chronyd
syslog・rsyslog・syslog-ngの違いは何か
rsyslogはsyslogと後方互換性があり,syslog-ngはsyslogと後方互換性がない。
postfix・sendmail・eximの違いは何か
すべでMTAだが,以下の違いがある。
- postfix:シンプルでデファクトスタンダード
- sendmail:レガシー
- exim:カスタマイズ性が高くDebian系のデフォルト
CUPSとは何か
Common UNIX Printing Systemの略称で,Linux向け印刷システムのことを指す
lprとlpqの違いは何か
- lpr:印刷ジョブの送信
- lpq:印刷キューの確認
システムクロックをハードウェアクロックに同期させるコマンド
# System to Hardware Clock
hwclock -w
ハードウェアクロックをシステムクロックに同期させるコマンド
# Hardware to System Clock
hwclock -s
systemdを用いた日付・時刻・タイムゾーンの管理を行うコマンド
timedatectl
/var/log/wtmpと/var/run/utmpの違いを説明せよ
- /var/log/wtmp:過去にログインしたユーザ情報(lastで閲覧)
- /var/run/utmp:現在ログインしているユーザ情報(whoやwで閲覧)
いずれもバイナリ形式のファイルであるためlessなどで閲覧することはできません。バイナリなのはデータの読み書きの効率性を重視しているからです。
MTA・MDA・MUAの違いを説明せよ
- MTA(Mail Transfer Agent):メールの転送
- MDA(Mail Delivery Agent):受信ボックスへの配達
- MUA(Mail User Agent):ユーザが利用するクライアント
/etc/aliasesでroot: lpicと記述すると何が起きるか
記述しただけでは何も起きない。newaliasesを実行すると,root宛のメールがlpicに転送される。ただしrootには何も届かなくなる。
~/.forwardは転送元にもメールは届きます。
Linuxの印刷サブシステムは何と呼ばれているか
CUPS(Common Unix Printing System)
Linuxの印刷サブシステムの設定で扱われるデータ形式は何か
PPD(Postscript Printer Description)
Adobeのテキストファイル形式です。
/etc/cron.dailyを実行するプログラムはなにか
anacron
anacronはcronデーモンによって呼び出されます。
ネットワークの基礎
tracerouteとtracepathの違いは何か
- traceroute:古くからある
- tracepath:非特権ユーザー向けの簡易版 traceroute
hostnameとhostの違いは何か
- hostname:自分のマシンのホスト名を表示
- host:ドメイン名からIPアドレスを取得
netstatでネットワークの障害がある場合に利用するオプション
-n(名前解決しない)
ネームサーバの情報を記述する設定ファイルは何か
- /etc/resolve.conf(NetworkManager等で自動管理,もしくは手動編集)
- /etc/systemd/resolved/conf(最近のsystemdではこちら)
オープンになっているポートを調べるコマンド
- lsof
- netstat
ネットワークインタフェースの受信パケット数などを表示するコマンド
- ipconfig eth0
- ip -s link show dev eth0
/etc/hostsのフィールドを述べよ
{IPアドレス} {ホスト名}
findでパーミッションの前に付ける/について説明せよ
- /4000:SUIDが設定されている(パーミッションは何でもよい)
- -4000:SUIDが設定されており,かつパーミッションが000である
gpgコマンドで対話型の設定を行うオプション
gpg --edit-key
セキュリティ
who・w・lastの違いを述べよ
- who(/var/run/utmp): 現在ログイン中のユーザー情報
- w(/var/run/utmpと/var/log/wtmp): 現在ログイン中のユーザーの詳細な活動情報
- last(/var/log/wtmp): 過去のログイン履歴
wtmpはwhoの結果を記録するからwが付いていると覚えましょう。
sshでリモートホストに置くのは公開鍵と秘密鍵のどちらか
公開鍵(~/.ssh/authorized_keys)
スーパーサーバを説明せよ
デーモンがメモリ等のリソースを食い潰さないように,必要なときにだけデーモンを起動させるための管理プログラム。inetやinetdはInternet Services Daemonの略称で,スーパーサーバの代表例である。特に,ネットワークのスーパーサーバにはTCP Wrapperが用いられる。
netstat -tuを説明せよ
TCP接続(-t)とUDP接続(-u)の両方を表示する
gpg -c secret.txtは何を行っているか
入力されたパスフレーズから生成された共通鍵による暗号化
gpg -e -a -r lpic@example.com important.txtは何を行っているか
受け取った公開鍵を利用してimportant.txtを暗号化している
gpgにより作成した鍵ペアはどこに格納されるか
~/.gnupg
pgpの--exportオプションは何を行うか
公開鍵のエクスポート
逆に--importは公開鍵のインポートです。
pgpによる署名を解説せよ
- importした公開鍵に対する署名:pgp --sign-key lpic@example.com
- ファイルへの署名:pgp -o sample.sig --sign pgp.log
問題演習で引っかかったポイント
/etc/profileと/etc/.profileのどちらが正しいか
/etc/profile
fredの所属グループをdevelop,ホームディレクトリを/home/devに設定するコマンド
usermod -G develop -d /home/dev fred
グループ名・GID・そのグループに所属するユーザが格納されるファイルの名前
/etc/group
ntpサーバに時刻を問い合わせるコマンド
ntpdate {NTPサーバのドメイン}
rsyslog.confの2列目の*は何を表しているか
全てのユーザに表示させる
.bash_profileには実行権は必要か
必要ない
「WaylandはGNOMEやKDEに代わるデスクトップ環境」は正しいか
正しくない。WaylandはX11に代わるディスプレイサーバープロトコルであり,直接GUIを提供するのではなくウィンドウマネージャーやコンポジターに描画の仕組みを提供する。WaylandがGNOME ShellやKWinを利用するという関係性。
X11ポート転送ではDISPLAYは手動で設定しなくてはならないか
自動で設定される
「X11ポート転送はXアプリケーションのデスクトップ画面を転送する」は正しいか
正しくない。Xアプリケーションのポートを転送する。
groupmodはグループにユーザを追加・削除することはできるか
できない。groupsコマンドで表示される/etc/groupファイルを編集する。
cronとcrontabはどちらがコマンドか
crontab(cronはデーモン)
ntpデーモンが参照するファイル
/etc/ntp.conf
/etc/ntpd.confではないため注意しましょう。
journalctlはsyslogdやrsyslogdが集めたlogを閲覧できるか
できない
CUPSに登録されたプリンター情報が指定されている設定ファイル
/etc/cups/printers.cof
CUPSでプリンタの登録や削除を行うコマンド
lpadmin
Ghostscriptとは何か
PostScript形式を解釈してプリンタやデバイスなど非PostScript形式に変換する
プリンタに印刷するコマンド
- lp -d {プリンタ名} -n {枚数} -o raw fileA
- lpr -P {プリンタ名} -#{枚数} -o raw fileA
lprでは-o rawの代わりに-lも利用できます。
キューを表示するコマンド
- lpq(line printer queue)
- lpc(line printer config)
- lpstat(line printer stats)
lprはrequest,lpdはdaemonなのでキューの表示とは関係ないです。
CUPSで印刷を停止するコマンド
cupsdisable -c -r {メッセージ} {プリンタ名}
cupsdisableはjobをキューに溜めますが,cupsrejectはjobをキューに溜めません。-cはすでにキューに入っているjobの処理を指していて,指定するとキャンセルされる。
文字コードを表示するコマンド
nkf -g input.txt
クライアントホスト上でDNSサーバの定義を行うファイル名
/etc/resolv.conf
resolve.confではない点に注意してください。
NTPクライアントが監視するのは何か
システムクロックと参照クロックの時間差
resolv.confにはserverとnameserverのどちらを書くか
nameserver
覚えるべきコマンド
Xサーバーのアクセス制御
xhost
パスワードの変更
passwd
有効期限の変更はchageを利用します。
予約中のatジョブを表示するコマンド
at -l
atq
予約中のatジョブを削除するコマンド
at -d 2
atrm 2
通常のコマンドやスクリプトを一時的なサービスとして実行する
systemd-run
Linuxシステムでの時刻管理を行う
timedatectl
NTPサーバとの同期
ntpdate
chronyc
NTPサーバーの状態や同期状況、遅延、精度などを確認する
ntpq
qはqueryと覚えてしまいましょう。
メールの転送先である/etc/aliasesを反映する
newaliases
hostnameや/etc/hostnameを直接編集する代わりに利用する
hostnamectl
システム内のネットワーク接続状態を確認するための軽量ツール
ss
ssはsocket statusと覚えてしまいましょう。
ネットワーク周りの何でも屋さん
netcat
ポートを開いているプロセスを特定する
fuser -n tcp 8080
-nはnamespaceの略称であると理解しましょう。
現在開かれているファイルやソケットを表示する
lsof
List Open Filesの略称です。
ポートスキャンを行う
nmap example.com
パスワードの有効期限を設定するコマンド
chage
changeではないので十分注意してください。
ssh-agentで秘密鍵のパスフレーズを登録する
ssh-add
覚えるべきファイル・ディレクトリ
X Window Systemの設定ファイルとディレクトリ
/etc/X11/xorg.conf
/etc/X11/xorg.conf.d/
X Window Systemのエラーを記録するログファイル
~/.xsession-errors
homeディレクトリのテンプレート
/etc/skel/
デーモンであるcronが定期的に実行するファイルを格納している場所
/etc/cron.d・/etc/cron.daily・/etc/cron.hourly・/etc/cron.monthly・/etc/cron.weekly
ユーザごとのcrontabファイルを置く場所
/var/spool/cron/crontabs/
crontabコマンドを使うとここに配置されます。
システムクロックからローカルタイムへ変換するための時差情報
/etc/localtime
システムで使用されるタイムゾーン情報をバイナリとして格納する場所
/usr/share/zoneinfo/
systemdのジャーナルの設定ファイル
/etc/systemd/journald.conf
ジャーナルの格納場所
/var/log/journal/
ポート番号とサービスの対応を定義するファイル
/etc/services
システムが名前解決をどのように行うかを定義するファイル
/etc/nsswitch.conf
接続要求があったときにサービスを起動するためのユニットファイル
systemd.socket
GnuPGの設定や鍵データを保存するディレクトリ
~/.gnupg/
コメント