まるごと覚えると合格点くらいは取れるはず。
--------------- シェル、スクリプト、およびデータ管理 ---------------
ShellScript-Format-
#!:シェルはインタープリタである
for INT in `seq n`
n=1: 1から開始し終了する値
n=2: 開始値と終了値
n=3: 開始値と増加値と終了値
case $1 in
1) echo "one" ;;
2) echo "two" ;;
esac
shell variable
$?: latest command result
$n: args 10以降は{}で囲む${10}
$$: PID
$#: args.count
# set
-o enable
+o disable
allexport 変数を自動で環境変数(export)に
emacs emacsっぽい
ignoreeof Ctrl+Dでログアウトできない
noclobber リダイレクトで上書き禁止
noglob ワイルドカード禁止
noexec スクリプトを実行せず検査だけ
vi viっぽい
# env
-i 何も環境変数が設定されていない状態
-u 変数名を入れ一時的に削除
# alias rmf='rm -f'
# unalias rmf
-a all
bash
全環境→個別環境→個別処理→全体処理の順でロード
全ユーザー共通
+ /etc/profile 環境変数・利用環境
+ /etc/bashrc 起動時に実行させたい処理
個別設定
+ ~/.bash_profile 環境変数・ユーザー環境
+ ~/.bash_login bash_profileと同じ
+ ~/.profile bash_profileと同じ
+ ~/.bashrc 起動時に実行させたい
+ ~/.bash_logout ログアウト時に実行させたい
--------------- ユーザインターフェイスとデスクトップ ---------------
X Window System
DisplayManager:RunLevel 5で発動するGUI環境のログイン提供
+ WindowsManager 概観やアイコンカーソル、メニューの提供
+ XServer 画面表示や入力装置のハードウェアを管理
- XClient 処理した結果をXサーバを通じ表示させる
StartX->xinit->~/.xinitrc->WindowManagerへ
DisplayManager(X Window Systemのプログラム)
役割:initやsystemdによって起動し、GUIのログインを提供し、デスクトップ環境を準備する
LightDM:Ubuntu /etc/lightdm/lightdm.conf, users.conf
GDM: GNOME /etc/X11/gdm
KDM: KDE /etc/X11/kdm
XDM: X.Org /etc/X11/xdm
xdm-config :
Xaccess :アクセス許可
Xsetup_0 :ログイン表示前のスクリプト
Xresources :ログイン画面のデザイン
Xsession :ログイン後に実行するスクリプト
/etc/X11/xorg.conf
Section "Device"で始まりEndSectionで終わる
ServerLayout:IODevice
Files :RGBDBやXFS[フォント]FontPath "unix/:7100 -1")
Module :モジュール
InputDevice :マウス/キーボード
Monitor :画面
Device :ビデオカード
Screen :表示色数や画面サイズ
X Window System
xvidtune: ディスプレー表示位置調整
xwininfo: Xウィンドウ情報表示
xdpyinfo: ディスプレー各種情報表示
# xhost
+ 許可リストに追加
- 許可リストから削除
Accessibility
Orca : スクリーンリーダー、点字ディスプレイ、拡大鏡
GOK : オンスクリーンキーボード
emacspeak : Emacsにスクリーンリーダー追加
AccessX : キーボードアクセシビリティ
スティッキーキー:同時押しとみなす。
スローキー :所定時間押さないと無視
バウンスキー :同じ入力を一定時間無視(チャタリング)
トグルキー :Num,Caps,ScrollLockでビープ音
マウスキー :テンキーで操作
リピートキー :連射入力されない
# Tips
オンスクリーンキーボード:ソフトウェアキーボード
スクリーンリーダー:読み上げ
点字ディプレイ:専用ディスプレイに点字で描写
--------------- 管理業務 ---------------
Account
Command [Option] [Target]
- groupmod :-g GID, -n name
- passwd :文字列変更 -l: Lock -u: Unlock
- usermod :-L ロック -U: Unlock -d:DIR -g:GID -G:PGID -s:Shell
change :有効期限変更
useradd :-c comment -d directory -g group -G subgroup
-s shell -D Default -m HomeDirectory
groupadd :
- groupdel :プライマリのユーザがいると消せない
- userdel : -r: HomeDirectory -f: force
id: UID,GID
groups: グループ表示
対話ログインの禁止: /sbin/nologin, /bin/false
ドメインログイン: /etc/nsswitch.confの名前解決を利用
getent
cron
# crontab
-e edit
-l list
-r remove
cron.allow -> cron.denyの順(両方ないならrootのみ)
anacron
cronによるジョブスケジューリングを補完
+ 日単位でジョブ実行
+ 実行履歴を管理し、未実行ジョブ検出
+ crondによって実行(デーモンでない)
Configuration
RANDOM_DELAY=45分
START_HOURS_RANGE=3-22時
Parameter
period in days :実行する間隔 (@weekly, @monthlyもできる)
dalay in minutes :実行までの待機時間
job-identifier :識別子
command :実行コマンド
# at 23:00
-l(atq) list
-d(atrm) delete
Timezone
タイムゾーン情報:/usr/share/zoneinfo/
システムで使用 :/etc/localtime
使用例:# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
export TX=Asia/Tokyo
tzselect
Locale
LC_ALL:以下のデフォルトを上書きし変更させない
LANG:以下のデフォルトを上書きするが、個別で変更できる
LC_から始まる多数
文字コード
ASCII : 7ビット文字コード128文字
ISO-8859 : ASCIIの8ビット拡張。256文字対応
Unicord : 多言語用文字コード
UTF-8 : Unicode文字を表示する符号化方式
EUC-JP : UNIX標準の日本語
Shift-JIS : Windows標準の日本語
--------------- 重要なシステムサービス ---------------
journalctl(systemd-journaldによるログ一元管理)
+ systemdから起動したプロセス+syslogのエラー等をバイナリ形式で一元管理
→cat コマンドは使えない。
+ /etc/systemd/journald.conf
journalctl
--no-pager: cat的表示(デフォはpagerあり[less的])
--since : いつから
--until : いつまで
-n: --lines 10
time
hwclock system clock -> hardware clock
-r 表示だけ
-s hw -> sw
-w sw -> hw
ntpdate ntpserver -> systemclock
ntpq
-p 同期状況の確認(print)
-i 対話モード
kernel->klogd->syslogd
rsyslog
/etc/rsyslog.conf
syslog
/etc/syslog.conf
[ファシリティ.プライオリティ アクション]で記述。サビ名.エラーレベル アクション。
mail.err /var/log/maillog
*.info;mail.none;syslog.none /var/log/messages
CUPS(Common UNIX Printing System)
仕様プロトコルはIPP(Internet Printing Protocol)
デーモン:/etc/cups/cupsd.conf (受付ポート番号等)
共有設定:/etc/cups/printers.conf
LPDと互換性あり
lpr : 印刷ジョブ生成しキューに登録(registry)
lprm : 印刷ジョブを削除(remove)
lpq : 印刷ジョブを表示(query, queue)
Mail
/etc/aliases 任意のアドレス宛を転送できる Newaliasesコマンド必須
~/.forward 自分宛アドレスのみ転送できる
--------------- ネットワークの基礎 ---------------
用語
サービス名:通信プロトコルのこと。telnet,sshなど
Files
/etc/hostname 自身のホスト名(debian)
/etc/sysconfig/network ホスト名、ネットワーク、IPなど
/etc/hosts IPとホストの紐付け
/etc/nsswitch.conf 名前やサービス名解決順序を定義(GNU C)
# getent [passwd] [root]
# getent [hosts] [test.local]
/etc/host.conf 名前解決順序(レガシー)
/etc/resolv.conf ドメインやDNSサーバーの設定
nameserver 名前解決に使うDNSサーバ
domain 自身の所属ドメイン
search 名前解決時に省略するドメインリスト(最大6個)
ホスト名のみの際に自動で付与してくれる
/etc/services サービス名とポート番号の紐づけ
PortNo,(0~65535[必ず奇数終わり])
20 FTP(Data)
21 FTP(Control)
22 SSH
23 TELNET
25 SMTP
53 DNS
80 HTTP
110 POP3
143 IMAP
443 HTTPS
# lsof
-i: ポート番号指定
# ip (ip [object] [command])
addr IPv4,v6テーブル
link ネットワークデバイス
neighbour ARPキャッシュ
route ルーティング
add 追加
del 削除
show 表示
routeの違い (gw -> via)
# ip route add 192.168.1.0/24 via 192.168.1.1 dev eth0
# route add 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
# host(名前解決)
オプションなし時が一番データ量少ない
-t type(a,mx,ns,anyなど)
-v verbose
# Ping
-c 回数(指定なしで無限)
-i 時間間隔
-n IPアドレスで表示
# netstat
-r ルーティングテーブル表示(routeと同じ)
-i IFの統計情報表示
-n アドレス/ポートを解決しない(IPアドレス表示)
# ifconfig(old) IF設定と有効無効設定
ifconfig eth0 192.168.1.1 netmask 255.255.255.0
ifconfig eth0 up/down # ifup eth0と同じ
# route
-C キャッシュ表示
-F ルーティングテーブル表示(オプションなし)
-n 名前解決しない
add
del
+ -host[ホストとみなす]
+ -net[セグメントとみなす]
+ netmask
+ gw
+ default gw
example: # route add -host 192.168.5.1 gw 192.168.1.254
# nc [オプション] [接続先アドレス] [宛先ポート番号]
-l listen 受け
-p port
-u UDP
IPv6
前半64ビット:サブネットプレフィックス
後半64ビット:インターフェース識別子
--------------- セキュリティ ---------------
# fuser
-k kill(SIGKILL送信)
-m mount(マウント先を対象)
-n namespace
-u user view
-v verbose
sudo
# visudo (編集コマンド。crontab -eとかと同じ)
/etc/sudoers(編集先ファイル)
# gpg(暗号化コマンド)
~/.gnupg/ 配下に生成
--gen-key 秘密鍵公開鍵のペア生成
--export 公開鍵をエクスポート
--import 公開鍵をインポート
--list-keys 公開鍵の一覧表示
-e [file] 相手の公開鍵で暗号化
-r [MailAddress] 公開鍵の持ち主のアドレス
-o [OutputFilename] 出力ファイル名
オプションなしで複合化
xinetd
スーパーサーバー。利用頻度の低いサービスを監視しリクエスト時のみ
サービス実行する事で常駐デーモン数を減らし、リソースを抑える
/etc/xinetd.conf 全体設定
/etc/xinetd.d/ サービス毎
bind サービス提供時のIPアドレス
interface
disable yesでサービス無効
instances 最大起動プロセス数
log_type ログの記録先(絶対パス)
no_access アクセス拒否
only_from アクセス許可
server サーバプログラムの絶対パス
server_args 起動時の引数
user 起動ユーザー
wait 接続待ちするならyes
inetd(古い)
/etc/inetd.conf
service stream tcp nowait root /usr/libexec/ftpd ftpd -l
/etc/hosts.allow
/etc/hosts.deny
アカウント管理
# change (change password age)
/etc/shadowに保存される
-l ls
-m minimum day(変更できるようになるまで)
-M maximum day(最大有効期限)
-I Inactive (有効期限後にロックされるまで)
-W Warning (期限切れ前の警告)
-E Expire (有効期限)
# ulimit
-a all
-c core
-f file
-u user process
-v cirtual memory
SSH
/etc/ssh/ssh_config クライアント側(接続側)
/etc/ssh/sshd_config サーバー側(受付側)
-l LoginUser
-p portNo
-o ssh_configのコンフィグ形式
-X (X11フォワーディング)
-L ポートフォワーディング
example: ssh -L 8000:localhost:80 user@ssh-server
------------------------------------------------------------