インストール †
ハードウェア要件 †
| CPU | SPARC 200MHz以上、X86 120MHz以上、浮動小数点演算のサポートが必要 |
| MEM | 最小 64MB、推奨 256MB、GUI 384MB |
| HDD | 最小 2GB |
| SWAP | デフォルト 512MB |
インストール前に決めておくこと †
- ホスト名
- ロケール
- IPアドレス
- サブネットマスク
- ドメイン名
- ネームサービス(DNS,NIS,NIS+)
- ネームサーバのホスト名とIPアドレス
- rootアカウントのパスワード
インストールの種類 †
- イニシャルインストール
- アップグレード
- Solaris 7,8,9 からアップグレード可能
- スタンダードアップグレード
- 既存のパラメータ設定を可能な限り使ってアップグレード
- ライブアップグレード
- 既存のパラメータ設定を待避してからスタンダードアップグレード
- アップグレードがうまくいかなかったら元に戻せる
| 単一システムへの | CD/DVDからの | 対話式インストール |
| 単一システムへの | LAN経由での | 対話式インストール |
| 複数システムへの | カスタムJumpStart?を使用した | 自動インストール |
| 複数システムへの | Solarisフラッシュアーカイブを使用した | 自動インストール |
| 複数システムへの | WANブートを使用した | 自動インストール |
| Solarisライブアップグレード |
| Solarisゾーン上に独立したアプリケーション環境をインストール |
インストーラーが起動するまで(SPARC) †
- インストールメディア(CD/DVD)をドライブにセット
- システムのブート
- 停止中の場合には電源を入れる
- 稼働中の場合には再起動する
- ブートコマンドが表示される
ok
- ブートコマンドを実行して、インストーラーを起動する
ok boot cdrom
インストーラーが起動するまで(X86) †
- 基本的に SPARC と同じだが、デバイスの設定ができる
- DCA (Solaris Device Configuration Assistant)
- ブート後5秒以内に [ESC] キーを押すと DCA の設定画面に入ることができる
- 変更できること
- デバイスドライバまたは、ITUs(Install Time Updates)をインストールする
- ACPI(Advanced Configuration and Power Interface)をオフにする
- シリアルコンソールをセットアップする
- デフォルトのブートデバイスをリセットする
インストールログ †
- 通常のログ
- /var/sdam/system/logs
- /var/sdam/install/logs
- アップグレード中の不具合
- /a/var/sdam/system/data/upgrade_clean|
インストールモード †
- テキストインストーラーモード
- ok boot cdrom -nowin
- tip コマンド
- ok boot cdrom -text (メモリ64MB〜127MB)
- Windowシステムのターミナル上でテキストインストーラーモード
- ok boot cdrom -text (メモリ128MB〜383MB)
- Windowシステムのグラフィカルユーザーインターフェース(GUI)モード
- カスタムインストールとデフォルトインストール
| テキストインストーラーモード | グラフィカルユーザーインターフェース(GUI)モード |
| カスタムインストール | ○(初期値に推奨値が入っている) | ○ |
| デフォルトインストール | × | ○ |
ソフトウエアグループ †
- ソフトウェアグループ≒インストールオプション
- 上位のソフトウェアグループは、 下位のソフトウェアグループを含む
- Reduced Network Support Software Group
- (限定ネットワークサポートソフトウェアグループ)
- 最小構成
- 必要ディスクスペース 2.0GB
- Core System Support Software Group
- (コアシステムサポートソフトウェアグループ)
- ネットワークが使える
- 必要ディスクスペース 2.0GB
- End User Solaris Software Group
- (エンドユーザSolarisソフトウェアグループ)
- CDEが動く
- 必要ディスクスペース 5.0GB
- Developer Solaris Software Group
- (開発者Solarisソフトウェアグループ)
- 開発者パッケージ。ただし、コンパイラを含まれない
- 必要ディスクスペース 6.0GB
- Entire Solaris Software Group
- (全体Solarisソフトウェアグループ)
- サーバーのサポート用ソフトウェア
- 必要ディスクスペース 6.5GB
- Entire Solaris Software Group plus Original Equipment Manufacturer (OEM) support
- (全体Solarisソフトウェアグループ)
- 使われていないドライバを含む
- 必要ディスクスペース 6.7GB
パッケージ †
- パッケージ
- Sunやサードパーティの作成した追加的なソフトウェアコンポーネント
- クラスタ
- (コマンドオプションは主なもののみ掲載している)
pkgask †
パッケージから応答ファイルを取り出す
pkgask [-d <device>] [-R <root_path>] -r <response> <instance>...
| コマンドオプション | 意味 |
| [-d <device>] | 設定値 : パッケージファイルを置いてあるディレクトリ | 規定値 : /var/spool/pkg |
| [-R <root_path>] | 設定値 : パッケージのインストール先ディレクトリ | 規定値 : パッケージで定義されている値 |
| -r <response> | 応答ファイルの出力先ファイル名 |
| <instance> | パッケージのインスタンス(パッケージファイル名) |
- 応答ファイル : pkgadd で、コンポーネントをインストールする際に、ユーザーが対話的に入力しなければいけないパラメータを記述したファイル
- pkgasdで取り出した応答ファイルを編集し、pkgaddを起動するときの [-r <response>]オプション に指定すると、pkgadd はユーザに問い合わせずに、応答ファイルを見てインストール作業を行う。
pkgadd †
パッケージのインストールを行う
pkgadd [-n] [-a <admin>] [-d <device>] [-G] [-r <response>] [-R <rootPath>] [<source>] [<instances>]
| コマンドオプション | 意味 |
| [-n] | 設定値 : インストールモードを非対話式に設定する | 規定値 : インストールモードは対話式 |
| [-a <admin>] | 設定値 : インストール時に使用するインストール管理ファイル | 規定値 : 次の順番でインストール管理ファイルを探す。1.カレントディレクトリ 2./var/sdam/install/admin/ディレクトリ |
| [-d <device>] | 設定値 : パッケージファイルを置いてあるディレクトリ("source"オプションと同じ) | 規定値 : /var/spool/pkg |
| [-G] | 設定値 : カレントゾーンのみにパッケージをインストールする | 規定値 : 全てのゾーンにインストールする |
| [-r <response>] | 設定値 : インストール時に用いる応答ファイル名 | 規定値 : 応答ファイルを使わずにインストールを行う |
| [-R <root_path>] | 設定値 : パッケージのインストール先ディレクトリ | 規定値 : パッケージで定義されている値 |
| [<source>] | 設定値 : パッケージファイルを置いてあるディレクトリ("-d"オプションと同じ) | 規定値 : /var/spool/pkg |
| <instance> | パッケージのインスタンス(パッケージファイル名) |
パッケージの取得のみを行う
pkgadd -d <deviceName> -s <spoolDir> <pkgid>...
| コマンドオプション | 意味 |
| -d <device> | 設定値 : パッケージファイルが置いてあるディレクトリ |
| -s <splloDir> | 設定値 : パッケージファイルを置くディレクトリ |
| <pkgid>... | 設定値 : 取得するパッケージのID(カンマまたはスペース区切りで複数指定可) |
pkgchk †
pkgadd によるインストール結果の検証を行う
pkgchk [-acv|-l] [-p <pathName>...] [<pkgid>...]
| コマンドオプション | 意味 |
| [-ac] | 設定値 : a:ファイル属性のみを検証する。c:ファイルの内容のみを検証する | 規定値 : ファイル属性と内容を検証する |
| [-v] | 設定値 : verbose mode(詳細な実行ログを表示する) | 規定値 : 詳細な実行ログは出力しない |
| [-l] | 設定値 : パッケージ内のファイル情報をリスト表示する | 規定値 : リスト表示は行わない |
| [-p <pathName>...] | 設定値 : 検証するディレクトリ(カンマまたはスペース区切りで複数指定可) | 規定値 : パッケージで定義されている値 |
| [<pkgid>...] | 設定値 : 検証するパッケージのID(カンマまたはスペース区切りで複数指定可) | 規定値 : 全てのインストールされているパッケージの検証を行う |
pkgadd によりスプールされたパッケージの検証を行う
pkgchk -d <device>
| コマンドオプション | 意味 |
| -d <device> | パッケージファイルが置いてあるディレクトリ |
pkginfo †
pkgadd によってインストールされたパッケージの情報を得る
pkginfo [-i|-p] [-l|-q|-x] [-c <category>] [<instances>]
| コマンドオプション | 意味 |
| [-ip] | 設定値 : i:完全にインストールされたパッケージの情報のみを表示する。p:一部がインストールされたパッケージの情報のみを表示する | 規定値 : 全てのパッケージの情報を表示する |
| [-lqx] | 設定値 : l:ロングフォーマット。q:何も表示しない。x:リスト形式 (どれかを指定する必要あり) |
| [-c <category>] | 設定値 : 表示するパッケージのカテゴリ | 規定値 : pkginfo ファイルの CATEGORY値 |
pkgadd によりスプールされたパッケージに関する情報を得る
pkginfo -d <device>
| コマンドオプション | 意味 |
| -d <device> | パッケージファイルが置いてあるディレクトリ |
pkgparam †
パッケージに関するパラメータを得ます。(pkginfo -l とほぼ同じ内容が得られる)
pkgparam [-v] pkg-abbrev [param...]
| コマンドオプション | 意味 |
| [-v] | 設定値 : パラメータ名とその値を表示する | 規定値 : パラメータ名のみを表示する |
| pkg-abbrev | パッケージ名 |
| [param...] | 設定値 : 表示するパラメータ(カンマまたはスペース区切りで複数指定可) | 規定値 : 全てのパラメータを表示する |
pkgrm †
システムからパッケージを削除する
pkgrm [-a <admin>] [-A] [-n] [<pkgid>...]
| コマンドオプション | 意味 |
| [-a <admin>] | 設定値 : インストール時に使用するインストール管理ファイル | 規定値 : 次の順番でインストール管理ファイルを探す。1.カレントディレクトリ 2./var/sdam/install/admin/ディレクトリ |
| [-A] | 設定値 : 他のパッケージと共有しているファイルも削除する | 規定値 : 他のパッケージと共有しているファイルは削除しない |
| [-n] | 設定値 : インストールモードを非対話式に設定する | 規定値 : インストールモードは対話式 |
| [<pkgid>...] | 設定値 : 削除するパッケージのID(カンマまたはスペース区切りで複数指定可) | 規定値 : 削除可能な全てのインストールされているパッケージの削除を行う |
- pkgadd でインストールしたファイルを rm で削除してはいけない
pkgadd によりスプールされたパッケージの削除を行う
pkgrm -s <spoolDir>
| コマンドオプション | 意味 |
| -s <spoolDir> | 設定値 : パッケージがスプールされているディレクトリ | 規定値 : /var/sdam/pkg |
pkgmk、pkgtrans †
- パッケージを作るときに使う
- pkgtrans で既存のストリームフォーマットのパッケージをディレクトリフォーマットに変換することもできる(で、修正して再びストリームフォーマットにする)
- pkgadd は、ディレクトリフォーマット・ストリームフォーマットのどちらも扱えるが、配布しやすいのはストリームフォーマット
パッチ †
patchadd †
パッチを適用する
pachadd [-d] [-G] [-u] [-B <backoutDir>] <source> [<destination>]
| コマンドオプション | 意味 |
| [-d] | 設定値 : パッチを適用するときにファイルのバックアップをとらない | 規定値 : ファイルのバックアップを行う |
| [-G] | 設定値 : カレントゾーンのみにパッチを適用する | 規定値 : 全てのゾーンにパッチを適用する |
| -[u] | 設定値 : パッチの検証を行わない | 規定値 : パッチの検証を行う |
| [-B <backoutDir] | パッチを適用するときにファイルのバックアップを保存するディレクトリ |
| <source> | パッチを取得するソース(ディレクトリやパッチID) |
| [<destination>] | 設定値 : パッチの適用先 | 規定値 : カレントシステムにパッチを適用する |
- patchadd -p <destination>
- 現在インストールされているパッチを確認するとき
- [-p <destination>] : パッチの適用先
- パッチ適用のログ : /var/sdam/patch/<patch-ID>/log
- パッチが適用できないとき
- システムに完全にインストールされていないパッケージの場合
- パッチパッケージのアーキテクチャーと、インストールされているシステムのアーキテクチャーが異なるとき
- ベースコードが同じでリビジョン番号の高いパッチがすでに適用されているとき
- 該当パッチを無用にするパッチがすでに適用されている場合
- システムに適用済みのパッチと互換性のないパッチを適用しようとした場合
- 該当パッチが依存している他のパッチの中に、未適用にモノがある場合
showrev †
- showrev -p
- システムにインストールされているパッチのリビジョン情報を取得する
patchrm †
パッチを削除する
patchrm [-f] [-G] [-B <backoutDir>] <patchID>
| コマンドオプション | 意味 |
| [-f] | 強制的にパッチの削除を行う |
| [-G] | カレントゾーンのみにパッチを適用する |
| [-B <backoutDir] | パッチを削除するときにファイルのバックアップを保存するディレクトリ |
| <patchID> | パッチ番号 |
SPARC マシン の Boot プロセス †
ブートプロセスとパワーサイクル †
| パワーサイクル | マシンの電源を入れてブートしてからシャットダウンするまで |
| ブートプロセス | ブート時に行われる処理 |
Boot PROM と NVRAM †
| Boot PROM | ファームウェアが格納されているROM |
| Open Boot PROM モニタ | ファームウェア |
| NVRAM | ブートプロセスのパラメータが格納されている不揮発RAM |
| NVRAM(Open Boot)構成変数 | ブートプロセスのパラメータ |
| eeprom | NVRAM(Open Boot)構成変数を変更するユーティリティ |
ブートプロセス †
- Boot PROM フェーズ
- POST(Power On Self Test)
- ハードウェアとメモリを検証し、デバイスツリーを作る
- ROM から bootblk プログラムが RAM に読み込まれる
- ブートプログラムフェーズ
- bootblk プログラムが、UFS(Unix File System) から ufsboot プログラムをメモリに読み込む
- カーネル初期化フェーズ
- ufsboot プログラムが、カーネルをメモリに読み込む
- カーネルは自身の初期化を行う
- ルートファイルシステム(/)のマウントに必要なモジュールの読み込み
- initフェーズ
- 一般的なUnix と同じように /sbin/init が起動される
- /sbin/init は、/etc/inittab の定義に従ってサービスを立ち上げる
- Solaris 10 の場合は、SMF(/lib/svc/bin/svc.startd)を起動するだけ
bash-3.00# cat /etc/inittab
# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
(中略)
ap::sysinit:/sbin/autopush -f /etc/iu.ap
sp::sysinit:/sbin/soconfig -f /etc/sock2path
smf::sysinit:/lib/svc/bin/svc.startd >/dev/msglog 2<>/dev/msglog </dev/consol e
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog
pt:s1234:powerfail:/usr/lib/svc/method/installupdates lock
書式 id:rstate:action:process
| id | 識別子 |
| rstate | run level のリスト |
| action | プロセスの実行方法 |
| process | スクリプト |
- 起動時のランレベル
- 実質的に svc.startd の milestone プロパティの設定値がランレベルになる
- 無理矢理 milestone を無効にすると、/etc/inittab の initdefault プロパティの設定値が使われる
Boot PROM コマンド †
- Open Boot ユーザインタフェース
- ブート時に構成変数 auto-boot? が false のとき、POST でブートが止まり、Open Boot ユーザインタフェースで停止する
- システム稼働中の緊急コマンド([Stop]+[A])で、Open Boot ユーザインタフェースに移行する
- プロンプトは ok
- 主な Boot PROM コマンド
| コマンド | 説明 |
| ok banner | バナー表示 |
| ok boot [<device>] [<arguments>] | <device>:cdrom,disk,floppy,net,tape / <arguments>:bootファイル名、省略時は NVRAMパラメータのboot-file |
| ok .enet-addr | Ethernet アドレスを表示 |
| ok .version | Boot PROMのバージョンを表示 |
| ok eject <media> | <media>:cdrom,floppy,tape |
| ok help | |
| ok password | パスワード設定 |
| ok printenv | NVRAM構成変数の表示 |
| ok setenv <varName> <value> | NVRAM構成変数を設定する |
| ok set-default <varName> | NVRAM構成変数をデフォルト値(工場出荷時)にする |
| ok set-defaults | NVRAM構成変数を全てデフォルト値(工場出荷時)にする |
| ok show-devs | デバイスツリーを表示する |
| ok reset-all | システムをリセットする |
| ok sync | バッファとファイルシステムを同期し、クラッシュダンプを書き出させる |
| ok devalias | 全デバイスのエイリアス(別名)を表示させる |
| ok devalias <alias> | 指定したエイリアスの実デバイスを表示させる |
| ok devalias <alias> <devicePath> | 実デバイスをエイリアスに割り付ける。電源を落とすと消去される |
| ok nvvalias <alias> <devicePath> | 実デバイスをエイリアスに割り付け、NVRAMで保持する |
| ok nvunalias <alias> | NVRAMで保持しているエイリアスを削除する |
- 緊急コマンド
| コマンド | 説明 |
| [Stop] | POSTをバイパスする |
| [Stop]+[A] | システムをアボートする。(システム稼働中のアボートを無効化したい場合は /etc/dfault/kdb に KEYBOARD_ABORT=disable を設定) |
| [Stop]+[D] | 診断モードに移行する |
| [Stop]+[N] | NVRAMの内容をデフォルト値(工場出荷時)にする |
NVRAM(Open Boot)構成変数 †
| パラメータ | 説明 | デフォルト値 |
| auto-boot? | true:自動ブート / false:Boot PROM ユーザインタフェースでブートを停止 | true |
| boot-command | auto-boot? が true のとき、このコマンドを実行 | boot |
| boot-device | システムをブートするデバイス | disk net |
| boot-file | ブートプログラムの引数 | ""(なし) |
| diag-device | 診断ブート時のシステムをブートするデバイス | net |
| diag-file | 診断ブート時のブート婦五グラムの引数 | ""(なし) |
| diag-switch? | true:診断ブート / false:通常ブート | false |
| fcode-debug | FCodeをdebugモードで動かすか?FCode:インタプリタベースのドライバ記述言語 | false |
| input-device | keyboard,ttya,ttybなど | keyboard |
| output-device | screen,ttya,ttybなど | screen |
| screen#columns | | 80 |
| screen#rows | | 34 |
| security-mode | none:ブート時にパスワードを要求しない/command,full:ブート時にパスワードを要求(x86では意味なし) | none |
| security-password | パスワード(x86では意味なし) | ""(なし) |
| security-#badlogins | パスワードの失敗許容回数(x86では意味なし) | ""(なし) |
| use-nvramrc? | true:ブート時にnvramrcを実行 / false:実行しない | false |
| nvramrc | ブート時に実行するスクリプト | ""(なし) |
| oem-banner? | true:ブート時にoem-bannerを表示 / false:表示しない(SUNのバナーを表示) | false |
| oem-banner | ブート時に表示するOEMメーカーのバナー | ""(なし) |
| oem-logo? | true:ブート時にoem-logoを表示 / false:表示しない(SUNのlogoを表示) | false |
| oem-logo | ブート時に表示するOEMメーカーのロゴ(64x64白黒) | ""(なし) |
eeprom †
x86/x64 マシンの Boot プロセス †
BIOS と MBR †
| BIOS | Basic Input/Output System |
| MBR | Master Boot Record |
| mboot | MBRにあるpbootをキックするためだけのプログラム |
| pboot | Solarisのブートプログラム(Boot PROM相当) |
| bootblk | プライマリブートプログラム |
| boot.bin(ufsboot) | セカンダリブートプログラム |
ブートプロセス †
- 最初に、x86 CPUは、無条件にFFFF0hにあるジャンプ命令(BIOSの先頭番地)を実行する
- BIOS は、POSTを実行して接続されている機器を調べる
- BIOS は、POSTで見つかったプライマリディスクの MBR に格納されている mboot を実行する
- mboot は、パーティションテーブルを調べてアクティブなパーティションのブートセクタの内容をメモリに読み込んで実行する
- Solaris10の場合、pboot(Boot PROM相当)が実行される。
- pbootは、bootblkを実行する
- bootblkは、UFS(Unix File System)をマウントして /boot.bin(ufsboot)を実行する
- ここで、/etc/bootrc が実行され、起動オプション選択画面が表示される
- /boot.bin(ufsboot)は、カーネルの初期化を行い、/sbin/init、/sbin/inittab、/lib/svc/bin/svc.startd を実行してブートプロセス終了
ブート関連のパラメータ †
- Solris10起動後は、パラーメータファイル類は /boot にあるファイルとして見える
- SPARCマシンの NVRAM に相当するパラメータファイルは /boot/solaris/bootenv.rc
bash-3.00# cat /boot/solaris/bootenv.rc
#
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#ident "@(#)bootenv.rc 1.33 07/03/03 SMI"
#
# bootenv.rc -- boot "environment variables"
#
setprop ata-dma-enabled 1
setprop atapi-cd-dma-enabled 0
setprop ttyb-rts-dtr-off false
setprop ttyb-ignore-cd true
setprop ttya-rts-dtr-off false
setprop ttya-ignore-cd true
setprop ttyb-mode 9600,8,n,1,-
setprop ttya-mode 9600,8,n,1,-
setprop lba-access-ok 1
setprop prealloc-chunk-size 0x2000
setprop bootpath /pci@0,0/pci15ad,1976@10/sd@0,0:a
setprop keyboard-layout 'US-English'
setprop console 'text'
ディスプレイとキーボードの構成 †
kdmconfig †
- CUIベースのデバイス構成ツール
- 編集対象のファイル
| /etc/openwin/server/etc/OWconfig | x86マシンのキーボード、ディスプレイ、マウス情報 |
| /etc/bootparams | ディスクレスクライアントがブート時にサーバから渡されるキーボード、ディスプレイ、マウス情報 |
| sysidcfg(System Identification Configuration) | ディスクレスクライアントがインストール時に使うキーボード、ディスプレイ、マウス情報 |
- コマンドオプション
| コマンドオプション | 意味 |
| -c | /etc/openwin/server/etc/OWconfigファイルの編集を行う |
| -s <hostname> | /etc/bootparamsファイルの編集を行う |
| -d <filename> | sysidcfgファイルの編集を行う |
| -f | 強制実行モード(ネットワーク環境の検証を行わない) |
| -t | テストモード |
| -u | 構成解除 |
| -v | 冗長モード |
※コマンドオプションを指定しないと -c を指定したのと同じになる
その他のディスプレイとキーボード構成コマンド †
- /usr/X11/bin/xorgconfig
- /usr/X11/bin/Xorg -configure
ランレベルとシャットダウン †
- ランレベルの種類
| | ファイルシステム | マルチユーザ | NFS | 備考 |
| 0 | パワーダウン | × | × | × | 電源切断が可能な状態 |
| S/s | シングルユーザ | △ | × | × | |
| 1 | シングルユーザ管理 | ○ | × | × | |
| 2 | マルチユーザ | ○ | ○ | × | |
| 3 | マルチユーザ(with NFS) | ○ | ○ | ○ | デフォルトのランレベル |
| 4 | オルタナティブ マルチユーザ | ? | ? | ? | 未定義 |
| 5 | パワーダウン | × | × | × | (ハードウェアが対応していれば)電源切断 |
| 6 | リブート | × | × | × | |
- ランレベルの変更方法
- Shutdown
| /usr/sbin/halt | Run Level 0 へ移行。非推奨 |
| /usr/sbin/poweroff | Run Level 5 へ移行。非推奨 |
| /usr/sbin/init 5 | syncする。他のユーザへの通知無し |
| /usr/sbin/shutdown -i5 -g0 -y | syncする。wallで、他のユーザへの通知を行う |
- Reboot
| /usr/sbin/reboot | Run Level 6 へ以降。非推奨 |
| /usr/sbin/init 6 | syncする。他のユーザへの通知無し |
| /usr/sbin/shutdown -i6 -g0 -y | syncする。wallで、他のユーザへの通知を行う |
- ランレベルのプロンプト
| ランレベル | SPARC | x86 |
| 0(パワーダウン) | ok | (任意のキーを押すとリブート) |
| S(シングルユーザレベル) | # | # |
| 3(マルチユーザレベル) | login: | login: |
- ランレベルの確認方法
SMF †
- Solaris 10 から導入されたサービス(常駐プログラム)管理機構。Service Management Facility
- サービスは、FMRI で管理される
FMRI (Fault-Managed Resource Identifier) †
svcs (サービスに関する情報を表示する) †
| コマンド | 機能 |
| svcs -\? | コマンドヘルプ |
| svcs -a | 全サービスの列挙 |
| svcs -p [FMRI] | サービスのプロセス情報の表示 |
| svcs -d [FMRI] | [FMRI]に依存しているサービスを表示 |
| svcs -D [FMRI] | [FMRI]が依存しているサービスを表示 |
| svcs -l [FMRI] | [FMRI]の説明 |
| svcs -x [FMRI] | [FMRI]のマニュアル・ログファイルの格納場所、障害情報など |
svcadm (サービスの起動・停止) †
| コマンド | 機能 |
| svcadm -\? | コマンドヘルプ |
| svcadm enable [FMRI] | サービスをOS起動時に起動するようにする |
| svcadm enable -t [FMRI] | サービスを今回に限り起動する |
| svcadm disable [FMRI] | サービスをOS起動時に起動しないようにする |
| svcadm disable -t [FMRI] | サービスを今回に限り停止する |
| svcadm restart [FMRI] | サービスを再起動する |
svcadm (サービス定義の版数管理) †
| コマンド | 機能 |
| svcadm mark -l degraded | サービス定義を恒久的に degraded 状態に移行する |
| svcadm mark -l maintenance | サービス定義を恒久的に maintenance 状態に移行する |
| svcadm mark -t degraded | サービス定義を今回に限り degraded 状態に移行する |
| svcadm mark -t maintenance | サービス定義を今回に限り maintenance 状態に移行する |
| svcadm clear [FMRI pattern] | markサブコマンドで指定した状態をクリアし、サービスを起動できるようにする |
svcadm (ランレベルの変更) †
| コマンド | 機能 |
| svcadm milestone [milestone_FMRI] | [FMRI]をマイルストーンに移動する(再起同時にこのサービス定義では起動しない) |
| svcadm milestone -d [milestone_FMRI] | [FMRI]をマイルストーンに移動する(再起同時にこのサービス定義で起動する) |
- milestone_FMRI に設定できる値
| milestone_FMRI | 移動した先の状態 |
| milestone/single-user | ランレベルS |
| milestone/multi-user | ランレベル2 |
| milestone/multi-user-server | ランレベル3 |
| all | 一時的に disable/enable にされているサービスの状態を元に戻す |
| none | マスターリスタータ(svc:/system/svc/restarter:default)以外の全てのサービスを停止する |
svcprop (サービスの設定内容の表示) †
| コマンド | 機能 |
| svcprop [FMRI] | [FMRI]の設定内容を表示する |
| svcprop -p name[/name] | name[/name]に合致するサービスの設定内容を表示する |
svccfg (サービス定義のインポート・エクスポート) †
| コマンド | 機能 |
| svccfg export [FMRI] | サービスの設定情報(manifest)を標準出力に出力 |
| svccfg import [manifest] | サービスの設定情報(manifest)を登録 |
| svccfg delete [FMRI] | サービスの設定情報を削除(SMF管理外になる。ファイル自体は消されない) |
従来のサービス定義との互換性 †
ファイルシステム †
物理ブロックと論理ブロック †
ブロックの種類 †
| ブロックの種類 | 格納情報 |
| ブートブロック | システムのブート用情報を格納 |
| スーパーブロック | ファイルシステムに関する情報を格納 |
| i-node | ファイルシステム中のファイルに関する情報を格納 |
| データブロック | ファイルのデータを格納 |
i-node †
- ファイル名は、ディレクトリ(これもファイル)に格納されている
主なディレクトリ †
| / | UFS | ルート。シングルユーザモードで使うコマンドは例外的に / にある(mountなど) |
| /sbin | UFS | システム管理コマンド。/usr よりも前にマウントされる |
| /usr | UFS | ユーザで共有するファイル、アプリケーション |
| /bin -> /usr/bin |
| /dev | devfs | デバイスファイル |
| /device |
| /lib | UFS | SMFの実行ファイルや共有ライブラリ |
| /etc | UFS | 管理および構成用ファイル |
| /export/home | NFS,UFS | ホームディレクトリ |
| /home |
| /mnt | | 外部ファイルシステムなどのマウントポイント |
| /var | UFS | システムログなどを格納 |
| /var/run | TEMPFS | 一時ファイル領域。一時ファイル領域は2つあることに注意! |
| /tmp | TEMPFS | 一時ファイル領域 |
| /opt | NFS,UFS | サードパーティ製のアプリケーション |
| /etc/mnttab | MNTFS | デバイスのマウント情報を格納する |
| /proc | PROCFS | プロセスの実行情報を格納する |
| /system/contract | CTFS | Contract(契約)ファイルシステム |
| /system/object | OBJFS | デバック情報 |
ハードリンクとシンボリックリンク †
ファイルシステムの形式 †
UFSの特徴 †
- EFT(Extended Fundamental Types)
- 32bitのUID(User ID)、GID(Group ID)、デバイス番号を使える
- ファイルシステムのサイズ
| ラージファイルシステム | マルチテラバイトシステム |
| 32bit | 全1TB / 1ファイル最大2GB | × |
| 64bit | 全16TB/1ファイル最大1TB |
- ロギング
- 状態フラグ
| 状態フラグ | 意味 |
| FSACTIVE | メモリ中にHDDに未反映なデータがある。今電源を切られると不整合が発生する可能性がある |
| FSBAD | ファイルシステムに不整合が発生している |
| FSCLEAN | 正常にアンマウント済み |
| FSLOG | ロギングが有効である |
| FSSTABLE | ファイルシステムの整合性が維持されている。今電源を切られても不整合は発生しない |
newfs †
ファイルシステムを作成するコマンド
newfs [-NSBTv] [mkfs-options] raw-device
| コマンドオプション | 意味 |
| NSB | 実行結果レポートの出力オプション |
| T | テラバイトを超えるファイルシステムを作るときに指定する |
| v | 詳細ログを出力 |
実行例:
# newfs /dev/rdsk/<deviceName>
fsck †
ファイルシステムを検査/修復するコマンド
fsck [-F <FSType>] [-m] [-n|N] [-y|Y] [<rawDevice>]
| コマンドオプション | 意味 |
| -F <FSType> | 検査対象を<FSType>で指定したファイルシステムに限定する |
| -m | 検査だけを行い修復を行わない |
| -n(or N) | fsck実行時に出される全ての質問に自動的に no と回答する |
| -y(or Y) | fsck実行時に出される全ての質問に自動的に yes と回答する |
| <rawDevice> | /dev/rdskにあるデバイス名。指定しなかった場合には /etc/vfstab に記載されているデバイスの内、fsck pass フィールドの値が 0 以上のファイルシステムを全て検査する |
df †
ファイルの使用済み・空き容量を出力する
df [-F <FSType>] [-abkt] [<fileSystem>]
| コマンドオプション | 意味 |
| -F <FSType> | 指定したファイルシステムのタイプのみ表示 |
| -a | 全てのファイルシステムをレポートさせる |
| -b | 使用可能容量のみをキロバイト単位で表示させる |
| -k | ディスクスペースの使用状況をキロバイト単位で表示させる(btより優先される) |
| -t | マウントされている各ファイルシステムのデバイス、使用されているブロックの合計数、ファイル数を表示させる |
bash-3.00# df -k
ファイルシステム kbytes 使用済み 使用可能 容量 マウント先
/dev/dsk/c1t0d0s0 5712126 4056787 1598218 72% /
/devices 0 0 0 0% /devices
ctfs 0 0 0 0% /system/contract
proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
swap 869064 920 868144 1% /etc/svc/volatile
objfs 0 0 0 0% /system/object
sharefs 0 0 0 0% /etc/dfs/sharetab
/usr/lib/libc/libc_hwcap1.so.1
5712126 4056787 1598218 72% /lib/libc.so.1
fd 0 0 0 0% /dev/fd
swap 868220 76 868144 1% /tmp
swap 868180 36 868144 1% /var/run
/dev/dsk/c1t0d0s7 1990255 2025 1928523 1% /export/home
/hgfs 16777215 4096 16772864 1% /hgfs
/tmp/VMwareDnD 0 0 0 0% /var/run/vmblock
du †
ディレクトリやファイルの占有するディスクスペースを確認する
du [-ahks] [<file>]
| コマンドオプション | 意味 |
| -a | 指定されたディレクトリ内の全てのファイルとサブディレクトリのサイズおよび合計ブロック数を出力する |
| -h | 人間にとって可読性の高い単位で出力する(KB,MB,GB) |
| -k | 指定されたディレクトリ内の全てのサブディレクトリのサイズおよび合計ブロック数を出力する |
| -s | 指定されたファイル・ディレクトリのサイズのみを出力する |
| <file> | 確認対象のファイル。省略時は"."(カレントディレクトリ) |
$bash-3.00# du -hk /boot/
38K /boot/solaris/bin
30K /boot/solaris/devicedb
1K /boot/solaris/drivers/isa.025
1K /boot/solaris/drivers/isa.125
1K /boot/solaris/drivers/isa.150
1K /boot/solaris/drivers/isa.162
44K /boot/solaris/drivers/isa.175
1K /boot/solaris/drivers/notisa.010
1K /boot/solaris/drivers/notisa.020
51K /boot/solaris/drivers
1K /boot/solaris/machines
213K /boot/solaris
1K /boot/acpi/tables
2K /boot/acpi
1K /boot/rc.d
377K /boot/grub/bin
1K /boot/grub/bootsign
1.1M /boot/grub
1K /boot/platform/i86pc/kernel
2K /boot/platform/i86pc
3K /boot/platform
77M /boot
quot †
ユーザごとの占有するディスクスペースを確認する
quot [-afv] [<fileSystem>+]
| コマンドオプション | 意味 |
| -a | 全てのマウントされているファイルシステムを対象とする |
| -f | 使用済みブロック(KB)、所有ファイル名、ユーザ名を出力する |
| -v | 過去30日、60日、90日間にアクセスされなかったブロックするを表示する |
| <fileSystem> | 対象とするファイルシステム |
bash-3.00# quot -afv
/dev/rdsk/c1t0d0s0 (/):
4049860 184780 root 2743812 2743787 2743787
754 44 uucp 735 735 735
304 124 bin 304 304 304
114 3 svctag 0 0 0
23 16 noaccess 0 0 0
20 10 adm 0 0 0
13 13 lp 0 0 0
8 8 postgres 0 0 0
7 11 nobody 0 0 0
6 6 daemon 0 0 0
2 2 gdm 0 0 0
2 2 smmsp 0 0 0
2 2 webservd 0 0 0
/dev/rdsk/c1t0d0s7 (/export/home):
9 2 root 0 0 0
デバイス管理 †
物理デバイス名、インスタンス名、論理デバイス名 †
| 論理デバイス名 | /devices Solaris独自のデバイスファイル |
| インスタンス名 | カーネルの作成するデバイスの短縮名 |
| 論理デバイス名 | /dev 従来のUnixと互換なデバイスファイル。/devices へのシンボリックリンクになっている。通常アプリケーションはこちらを使う |
デバイスのデバイス名を確認するコマンド †
| コマンド | 概要 | 物理デバイス名 | インスタンス名 | 物理<->インスタンス対応 |
| dmesg | システムバッファにあるハードウェア診断記録を表示する | ○ | ○ | ○ |
| format | ディスクパーティションの管理 | ○ | × | × |
| prtconf | システム構成を表示する | ○ | ○ | × |
| sysdef | システム定義を表示する | ○ | ○ | × |
| less /etc/path_to_inst | × | ○ | ○ |
dmesg †
システムバッファにあるハードウェア診断記録を表示する
bash-3.00# dmesg | more
2009年02月25日 (水) 20時52分31秒 JST
Feb 25 20:49:40 solamame pseudo: [ID 129642 kern.info] pseudo-device: ppm0
Feb 25 20:49:40 solamame genunix: [ID 936769 kern.info] ppm0 is /pseudo/ppm@0
Feb 25 20:49:40 solamame rootnex: [ID 349649 kern.info] npe0 at root: space 0 offset 0
Feb 25 20:49:40 solamame genunix: [ID 936769 kern.info] npe0 is /pci@0,0
Feb 25 20:49:40 solamame scsi: [ID 365881 kern.info] /pci@0,0/pci15ad,1976@10 (mpt0):
Feb 25 20:49:40 solamame Rev. 1 LSI, Inc. 1030 found.
Feb 25 20:49:40 solamame pcplusmp: [ID 637496 kern.info] pcplusmp: pci1000,30 (mpt) instance 0 vector 0x11
ioapic 0x1 intin 0x11 is bound to cpu 0
Feb 25 20:49:40 solamame scsi: [ID 365881 kern.info] /pci@0,0/pci15ad,1976@10 (mpt0):
Feb 25 20:49:40 solamame mpt0 Firmware version v0.0.0.0 (?)
Feb 25 20:49:40 solamame scsi: [ID 365881 kern.info] /pci@0,0/pci15ad,1976@10 (mpt0):
Feb 25 20:49:40 solamame mpt0: IOC Operational.
Feb 25 20:49:40 solamame npe: [ID 236367 kern.info] PCI Express-device: pci15ad,1976@10, mpt0
Feb 25 20:49:40 solamame genunix: [ID 936769 kern.info] mpt0 is /pci@0,0/pci15ad,1976@10
-- 継続 --
prtconf †
システム構成を表示する
/usr/sbin/prtconf [-a] [-c] [-v] [V] [-x] [<devPath>]
| コマンドオプション | 意味 |
| -a | <devPath>で指定したデバイスの祖先ノードを全て表示する |
| -c | <devPath>で指定したデバイスの子孫ノードを全て表示する |
| -v | 詳細ログを表示 |
| -V | SPARC:Open Boot PROM の設定情報を表示、x86:pboot の設定情報を表示 |
| -x | システムが64bitに対応しているかを表示する |
bash-3.00# /usr/sbin/prtconf | more
System Configuration: Sun Microsystems i86pc
Memory size: 1024 Megabytes
System Peripherals (Software Nodes):
i86pc
scsi_vhci, instance #0
isa, instance #0
i8042, instance #0
keyboard, instance #0
mouse, instance #0
lp, instance #0
asy, instance #0
asy, instance #1
fdc, instance #0
-- 継続 --
less /etc/path_to_inst †
デバイスのデバイス名を定義しているファイル。OSが使っているので変えちゃだめ
bash-3.00# cat -n /etc/path_to_inst | more
1 #
2 # Caution! This file contains critical kernel state
3 #
4 "/iscsi" 0 "iscsi"
5 "/pseudo" 0 "pseudo"
6 "/options" 0 "options"
7 "/xsvc" 0 "xsvc"
8 "/objmgr" 0 "objmgr"
9 "/scsi_vhci" 0 "scsi_vhci"
10 "/isa" 0 "isa"
11 "/isa/i8042@1,60" 0 "i8042"
12 "/isa/i8042@1,60/keyboard@0" 0 "kb8042"
13 "/isa/i8042@1,60/mouse@1" 0 "mouse8042"
14 "/isa/lp@1,378" 0 "ecpp"
15 "/isa/asy@1,3f8" 0 "asy"
-- 継続 --
デバイスの再構築 †
再起動してデバイスツリーを再構築する †
bash-3.00# touch /reconfigure
bash-3.00# /usr/sbin/shutdown -i6 -g0 -y
- Solaris は、起動時に /reconfigure があると、ハードウェア構成の見直しを行う。
- /reconfigure ファイルは、リブート時に削除される。
稼働中にデバイスツリーを再構築する †
/usr/sbin/devfsadm [-c <deviceClass>]* [-C] [-i <driverName>]* [-n] [-s] [-v]
| コマンドオプション | 意味 |
| -c <deviceClass> | 操作対象のデバイスを <deviceClass> に制限する。deviecClass = {disk,tape,port,audio,pseudo} |
| -C | Cleanup。/dev のリンク切れファイルを削除する |
| -i <driverName> | 読み込むドライバを <driverName> に制限する |
| -n | ドライバの読み込みおよび新規デバイス(新規ノードのデバイスツリー)の追加を行わない |
| -s | /dev への変更を行わない |
| -v | 詳細ログを出力する |
bash-3.00# /usr/sbin/devfsadm -c tape
- /device が変更される
- /dev (のリンク)が変更される
- /etc/path_to_inst ファイルが書き換えられる
ディスクデバイス †
ディスクの論理デバイス名 †
| プラットホーム | デバイス | 命名法 | 例 |
| SPARC | blockデバイス | /dev/ dsk/c(k)t(l)d(m)s(n) | /dev/ dsk/c0t0d0s0 |
| rawデバイス | /dev/rdsk/c(k)t(l)d(m)s(n) | /dev/rdsk/c0t0d0s0 |
| X86 | blockデバイス | /dev/ dsk/c(k)__d(m)s(n) | /dev/ dsk/c0d0s0 |
| rawデバイス | /dev/rdsk/c(k)__d(m)s(n) | /dev/rdsk/c0d0s0 |
- c(k) : 論理コントローラ番号
- t(l) : 論理バスターゲット番号
- d(m) : ドライブ番号
- s(n) : スライス番号
SPARCプラットホームとx86プラットホームのディスクパーティションの違い †
| プラットホーム | ディスクパーティション |
| SPARC | ディスク全体を Solaris に使う |
| x86 | 最大 4 つの FDISK パーティションを作り、それぞれ別の OS をインストール可能 |
ディスクラベル †
- ディスクラベル : 低レベルフォーマットの形式
- ディスクラベル形式
| 形式 | 概要 |
| SMI(VTOC) Label | 汎用コンピュータの流れを受け継ぐ旧来のディスクラベル(Volume Table of Contents)。SMIは、Sun MIcrosystemsの略? |
| EFI | 64bit環境では1TBを超えるディスクを扱えるようにした新しいディスクラベル(32bit環境では1TBまで) |
- スライス構成
| スライス番号 | SMI | EFI | 割り当てられるディレクトリ(例)、備考 |
| SPARC | x86 | SPARC | x86 |
| | 0〜33セクタにEFIラベルを格納 | |
| 0 | VTOCラベル | (任意に利用可能) | / (EFIの0番スライスは34セクタから) |
| 1 | | | | | /swap |
| 2 | ディスク全体参照用 | (任意に利用可能) | |
| 3 | | | | | /export |
| 4 | | | | | |
| 5 | | | | | /opt |
| 6 | | | | | /usr |
| 7 | | | ***** なし ***** | ***** なし ***** | /home |
| 8 | ***** なし ***** | bootblk(GRUB) | EFI予約領域 | |
| 9 | ***** なし ***** | 代替セクタスライス | ***** なし ***** | ***** なし ***** | |
- EFI と MSI(VTOC) ラベルの違い
- EFI ラベルのパーティションからは、boot できない
- EFI では、1TB 以上のディスクをサポートしている
- EFI では、ディスクの先頭 34 セクタ(0番セクタ〜33番セクタ)に、EFI ラベルが格納されている
- EFI では、ディスクの最後 2 シリンダ(EFI予約領域)にディスク構成情報が格納される。この領域は 第 8 スライスとして割り当てられてる
- EFI ラベルには、シリンダ・ヘッダ・セクタの情報は含まれない
- EFI では、レポートされるサイズはブロック単位
format †
ディスクを増設したときに、低レベルフォーマットを行うユーティリティ
format [-d <deviceName>] [-f <commandFile>] [-l <logfile>] [-m] [-M] [-s]
| コマンドオプション | 意味 |
| -d <deviceName> | formatユーティリティのカレントディスク |
| -f <commandFile> | formatユーティリティへのコマンド入力を標準入力からではなく、command file から行うようにする |
| -l <logfile> | logファイル |
| -m | 詳細エラーメッセージ |
| -M | 詳細エラーメッセージ + 診断メッセージ |
| -s | formatユーティリティの出力を省略する |
bash-3.00# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <DEFAULT cyl 4092 alt 2 hd 128 sec 32>
/pci@0,0/pci15ad,1976@10/sd@0,0
Specify disk (enter its number): 0
selecting c1t0d0
[disk formatted]
Warning: Current Disk has mounted partitions.
/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).
/dev/dsk/c1t0d0s1 is currently used by swap. Please see swap(1M).
/dev/dsk/c1t0d0s7 is currently mounted on /export/home. Please see umount(1M).
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
fdisk - run the fdisk program
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
!<cmd> - execute <cmd>, then return
quit
format>
partition †
format> partition
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
!<cmd> - execute <cmd>, then return
quit
partition> print
Current partition table (original):
Total disk cylinders available: 4092 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 1259 - 4091 5.53GB (2833/0/0) 11603968
1 swap wu 1 - 256 512.00MB (256/0/0) 1048576
2 backup wm 0 - 4091 7.99GB (4092/0/0) 16760832
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 home wm 257 - 1258 1.96GB (1002/0/0) 4104192
8 boot wu 0 - 0 2.00MB (1/0/0) 4096
9 unassigned wm 0 0 (0/0/0) 0
partition>
- 0バイトのスライスを作ることもできる (unassigned タグが割り付けられる)
- 0バイト以上のスライスに unassigned タグはつけられない
modify †
- パーティションを分割を楽にできるようにしたツール
- 容量指定でパーティション分割ができる(シリンダ境界を考慮しなくても良い)
- 未割当領域を modify コマンド内の仮想的な hog スライスとして扱う
- mount している領域では使えない
inquiry †
format> inquiry
Vendor: VMware,
Product: VMware Virtual S
Revision: 1.0
ディスクの詳細情報が表示される
/etc/format.dat †
/etc/format.dat に format ユーティリティで使用可能な事前定義されたパーティションテーブルのリストが格納されている
disk_type = "Quantum ProDrive 80S" \
: ctlr = SCSI : fmt_time = 1 \
: cache = 0x07 : trks_zone = 6 : atrks = 0 : asect = 1 \
: ncyl = 832 : acyl = 2 : pcyl = 834 : nhead = 6 : nsect = 34 \
: rpm = 3662 : bpt = 16896
ファイルシステムのマウント †
ブート時のファイルシステムのマウント †
- boot直後(シングルユーザモード)
- OSがマルチユーザモードに移行する
- mountall コマンドが実行される
- /etc/fstab に記述されているファイルデバイスのうち、Mount at boot が yes のファイルシステムをマウント
- (シャットダウンなどで)OSがシングルユーザモードに移行する
- umountall コマンドが実行される
- /etc/vfstab に記述されているファイルデバイスが全てアンマウントされる
- umountall な事に注意 (
unmountall コマンドではない)
bash-3.00# cat -n /etc/vfstab
1 #device device mount FS fsck mount mount
2 #to mount to fsck point type pass at boot options
3 #
4 fd - /dev/fd fd - no -
5 /proc - /proc proc - no -
6 /dev/dsk/c1t0d0s1 - - swap - no -
7 /dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0 / ufs 1 no -
8 /dev/dsk/c1t0d0s7 /dev/rdsk/c1t0d0s7 /export/home ufs 2 yes -
9 /devices - /devices devfs - no -
10 sharefs - /etc/dfs/sharetab sharefs - no -
11 ctfs - /system/contract ctfs - no -
12 objfs - /system/object objfs - no -
13 swap - /tmp tmpfs - yes -
| フィールド | 意味 |
| Device to mount | ブロックデバイス名 |
| Device to fsck | rawデバイス名 |
| Mount point | マウントポイント |
| FS type | ファイルシステム |
| fsck pass | fsckコマンドで検査するかを特定するフラグ。fsck pass="-":検査しない、"0":UFSの場合は検査しない、それ以外の場合は検査する、"ゼロより大きい":検査する |
| Mount at boot | boot時にマウントするか? "yes" or "no" |
| Mount options | マウントオプション。無い場合には"-"を記入する |
mountコマンド †
デバイスをファイルツリーにマウントする
bash-3.00# mount [-F <FSType>] [-m] [-p] [-r] [-v] [-o <specificOptions>] <mountDevice> <mountPoint>
| コマンドオプション | 意味 |
| -F <FSType> | マウントするファイルシステムのフォーマットを指定する |
| -m | /etc/mnttab にエントリを作成せずにファイルシステムをマウントする |
| -p | コマンドの実行結果(マウント情報)を /etc/vfstab の形式に整形する |
| -r | 読み取り専用でマウントする |
| -v | 詳細ログを出力する |
| -o <specificOptions> | -o devices | デバイス固有のファイルを開くことを許可(デフォルト値) |
| -o nodevices | デバイス固有のファイルを開くことを禁止 |
| -o exec | ファイルシステム内のプログラムの実行を許可(デフォルト値) |
| -o noexec | ファイルシステム内のプログラムの実行を禁止する |
| -o rw | ファイルシステム内のファイルへの書き込みを許可(デフォルト値) |
| -o ro | ファイルシステム内のファイルを読み取り専用にする |
| -o setuid | ファイルシステム内のファイルに対して setuid を許可(デフォルト値) |
| -o nosetuid | ファイルシステム内のファイルに対して setuid を許可しない |
- /etc/mnttab は、現在マウントされているファイルシステムの一覧を管理するファイル
bash-3.00# cat -n /etc/mnttab
1 /dev/dsk/c1t0d0s0 / ufs rw,intr,largefiles,logging,xattr, onerror=
panic,dev=780000 1233585540
2 /devices /devices devfs dev=4700000 1233585531
3 ctfs /system/contract ctfs dev=4740001 1233585531
4 proc /proc proc dev=4780000 1233585531
5 mnttab /etc/mnttab mntfs dev=47c0001 1233585531
6 swap /etc/svc/volatile tmpfs xattr,dev=4800001 1233585531
7 objfs /system/object objfs dev=4840001 1233585531
8 sharefs /etc/dfs/sharetab sharefs dev=4880001 1233585531
9 /usr/lib/libc/libc_hwcap1.so.1 /lib/libc.so.1 lofs dev=780000 1233585536
10 fd /dev/fd fd rw,dev=4a00001 1233585540
11 swap /tmp tmpfs xattr,dev=4800002 1233585543
12 swap /var/run tmpfs xattr,dev=4800003 1233585543
13 /dev/dsk/c1t0d0s7 /export/home ufs rw,intr,largefiles,logging,xattr,o
nerror=panic,dev=780007 1233585549
14 -hosts /net autofs nosuid,indirect,ignore,nobrowse,dev=4ac0001 1233585558
15 auto_home /home autofs indirect,ignore,nobrowse,dev=4ac0002 1233585558
16 solamame:vold(pid590) /vol nfs ignore,noquota,dev=4a80001 1233585561
17 /hgfs /hgfs vmhgfs dev=12c 1233585562
18 /tmp/VMwareDnD /var/run/vmblock vmblock dev=4b40000 1233585599
umountコマンド †
デバイスをファイルツリーからアンマウントする
bash-3.00# umount [-f] <mountPoint>
- 強制アンマウント(-f)をすると、データの不整合が起きる可能性があるので、どうしてもだめなとき以外はやらない
- コイツも umount な事に注意 (
unmount ではない)
ボリューム管理 †
autofs †
- 概要
- autofs は、普段は実デバイスをマウントせずに対応するディレクトリのエントリーのみを持っている
- autofs は、ユーザやプログラムからのアクセス要求があってから、はじめて実デバイスのマウントを行う
- (結果として、ユーザやプログラムからは、要求したディレクトリは常にマウントされているようにみえる)
- マウントされてからしばらく使われていないデバイスは自動的にアンマウントされる
- NAS上のディスク領域を /export/home として見せるときなどに使う
- autofs の振る舞い
- ブート時に /etc/init.d/autofs スクリプトが起動される
- automount コマンドが実行される。マスターマップ(/etc/auto_master)とマウントテーブル(/etc/mnttab)を照合して、実デバイスを autofs のディレクトリにエントリーする(マウントはしない)
- automountd デーモンが起動される。
- ユーザもしくはプログラムから、autofs管理下のディレクトリへのアクセス要求があった
- autofs は、automountd にデバイスのマウントを行わせる
- ユーザもしくはプログラムは、要求したディレクトリやファイルが使えるようになる
- automountd は、マウントした実デバイスが一定時間使われていないと、勝手にアンマウントする
- マップファイル
- どのデバイスをどのディレクトリにマウントするかの設定ファイル
- /etc/auto_master がマスターマップファイル。詳細情報を別ファイルに外部定義することも可能
bash-3.00# cat -n /etc/auto_master
1 #
2 # Copyright 2003 Sun Microsystems, Inc. All rights reserved.
3 # Use is subject to license terms.
4 #
5 # ident "@(#)auto_master 1.8 03/04/28 SMI"
6 #
7 # Master map for automounter
8 #
9 +auto_master
10 /net -hosts -nosuid,nobrowse
11 /home auto_home -nobrowse
bash-3.00# cat -n /etc/auto_home
1 #
2 # Copyright 2003 Sun Microsystems, Inc. All rights reserved.
3 # Use is subject to license terms.
4 #
5 # ident "@(#)auto_home 1.6 03/04/28 SMI"
6 #
7 # Home directory map for automounter
8 #
9 +auto_home
bash-3.00#
- マップファイルを変更した場合には、automount コマンドで autofs に内容を反映する。このとき、automountd デーモンの再起動は不要
ユーザアカウント †
ユーザアカウントを構成するファイル †
/etc/passwd †
書式:
<username>:<password>:<uid>:<gid>:<comment>:<home directory>:<login shell>
| 項目 | 設定内容 |
| <username> | �.轡好謄狷發妊罐法璽���2〜8文字の英数字��最初は英字�ず把磽永源�は英小文字 |
| <password> | "x"固定(初期のUnixとの互換性のため)。実際のパスワードは /etc/shadow に暗号化して格納される |
| <uid> | User ID : 0〜99:システムアカウント / 100〜60000:ユーザアカウント / 60001〜2147483647(2^31-1 :32bit符号付き整数の最大値):匿名ユーザなど |
| <gid> | Primary Group ID。ユーザは最低一つの Primary Group に属する。ユーザは、最大 15 の Secondary Group に属することができる(/etc/group で定義する) |
| <comment> | |
| <home directory> | |
| <login shell> | |
bash-3.00# cat /etc/passwd
root:x:0:0:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
gdm:x:50:50:GDM Reserved UID:/:
webservd:x:80:80:WebServer Reserved UID:/:
postgres:x:90:90:PostgreSQL Reserved UID:/:/usr/bin/pfksh
svctag:x:95:12:Service Tag UID:/:
nobody:x:60001:60001:NFS Anonymous Access User:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:
bash-3.00#
/etc/shadow †
書式:
<username>:<password>:<lastchg>:<min>:<max>:<warn>:<inactive>:<expire>:<flag>
| 項目 | 設定内容 |
| <username> | |
| <password> | cryptで暗号化された13文字。"NP":パスワードなし。"*LK*":アカウントロック中 |
| <lastchg> | 最終更新日時のUnixタイム(1970年1月1日からの秒数) |
| <min> | パスワードが変更できない最小日数 |
| <max> | パスワードが有効な最大日数 |
| <warn> | パスワード失効の何日前から警告を出すか |
| <inactive> | 何日間ログインしないとアカウントがロックされるか |
| <expire> | 失効日(Unixタイム) |
| <flag> | パスワード認証失敗回数(4bit整数) |
bash-3.00# cat /etc/shadow
root:xXg3fgE4Y3yac:6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
smmsp:NP:6445::::::
listen:*LK*:::::::
gdm:*LK*:::::::
webservd:*LK*:::::::
postgres:NP:::::::
svctag:*LK*:6445::::::
nobody:*LK*:6445::::::
noaccess:*LK*:6445::::::
nobody4:*LK*:6445::::::
/etc/group †
<group name>:<group passowrd>:<gid>:<user-list>
| 項目 | 設定内容 |
| <group name> | |
| <group passowrd> | 通常は空白にする(初期のUnixとの互換性のため)。設定すると newgrp コマンドなどでパスワードが聞かれるようになる |
| <gid> | 0〜60000:通常のグループに割り当てる。60001〜65534:匿名ユーザなど |
| <user-list> | 所属するユーザのリスト(カンマ区切り) |
bash-3.00# cat /etc/group
root::0:
other::1:root
bin::2:root,daemon
sys::3:root,bin,adm
adm::4:root,daemon
uucp::5:root
mail::6:root
tty::7:root,adm
lp::8:root,adm
nuucp::9:root
staff::10:
daemon::12:root
sysadmin::14:
smmsp::25:
gdm::50:
webservd::80:
postgres::90:
nobody::60001:
noaccess::60002:
nogroup::65534:
ユーザアカウントを構成するコマンド †
useradd †
ユーザを追加する
useradd [-c <comment>] [-d <dir>] [-e <expire>] [-f <inactive>]
[-g <group>] [-G <group,group,...>] [-m [-k <skel_dir>]] [-p <profile>]
[-A <authorization,authorization,...>] [-R <role>] [-s <shell>] [-u <uid>]
<login-name>
| コマンドオプション | 意味・格納場所 |
| -u <uid> | /etc/passwd の <uid> |
| -g <group> | /etc/passwd の <gid> |
| -c <comment> | /etc/passwd の <comment> |
| -d <dir> | /etc/passwd の <home directory>。省略時は、<basedir>/<login-name> (<basedir>は、/usr/sadm/defadduser に定義されている ) |
| -s <shell> | /etc/passwd の <login shell |
| -f <inactive> | /etc/shadow の <inactive> |
| -e <expire> | /etc/shadow の <expore> |
| -G <group,group,...> | /etc/group の <user-list> |
| -m [-k <skel_dir>] | ホームディレクトリを作成する。 さらに -k が指定されているときには、skelton ディレクトリとして <skel_dir> を使う。-k省略時は /etc/skel |
| -p <profile> | ユーザに適用される実行プロファイルのリスト(詳細は後半のテスト範囲) |
| -A <authorization,authorization,...> | ユーザに適用される認証のリスト(詳細は後半のテスト範囲) |
| -R <role> | ユーザに適用されるロールのリスト(詳細は後半のテスト範囲) |
| <login-name> | /etc/passwd の <username>他 |
useradd -D †
useradd の 省略時の値を管理する
- /usr/sadm/defadduser の編集を行うコマンド
- 設定値の表示
bash-3.00# useradd -D
group=other,1 project=default,3 basedir=/home
skel=/etc/skel shell=/bin/sh inactive=0
expire= auths= profiles= roles= limitpriv=
defaultpriv= lock_after_retries=
bash-3.00# cat /usr/sadm/defadduser
# Default values for useradd. Changed Mon Mar 2 23:43:35 2009
defgroup=1
defgname=other
defparent=/home
defskel=/etc/skel
defshell=/bin/sh
definact=0
defexpire=
defauthorization=
defrole=
defprofile=
defproj=3
defprojname=default
deflimitpriv=
defdefaultpriv=
deflock_after_retries=
- 設定値の書き換え
useradd -D [-b <basedir> | -e <expire> | -f <inactive> | -P <prfile> | -R <role>]
usermod †
ユーザ情報を更新する
usermod [-c <comment>] [-d <dir> [-m]] [-e <expire>] [-f <inactive>]
[-g <group>] [-G <group,group,...>] [-l <new_login_name>] [-p <profile>]
[-A <authorization,authorization,...>] [-R <role>] [-s <shell>] [-u <uid>]
<login-name>
(useradd と違うオプション)
| コマンドオプション | 意味 |
| -l <new_login_name> | 新しいユーザ名 |
| -d <dir> [-m] | ユーザのホームディレクトリを -d で指定した新規のディレクトリにする |
| -m を指定して変更先が存在しない場合 | 元のホームディレクトリが、新規のディレクトリに移動される |
| -m を指定して変更先が存在する場合 | 変更先ディレクトリには何もしない(権限の変更やファイルの移動はしない) |
userdel †
ユーザアカウントを削除する
userdel [-r] <login_name>
| コマンドオプション | 意味 |
| -r | ホームディレクトリを削除する(-rを指定しないとホームディレクトリが残ったままになることに注意) |
groupadd †
グループを追加する
groupadd [-g <gid> [-o]] <group_name>
| コマンドオプション | 意味 |
| -g <gid> | グループID。省略した場合は、使用済みのIDの次の値が割り振られる |
| -o | GID の共有を許す |
| <group_name> | グループ名 |
groupmod †
グループアカウントを変更する
groupmod [-g <gid> [-o]] [-n <new_name>] <group_name>
| コマンドオプション | 意味 |
| -g <gid> | グループID。省略した場合は、使用済みのIDの次の値が割り振られる |
| -o | GID の共有を許す |
| -n <new_name> | 新しいグループ名 |
| <group_name> | グループ名 |
groupdel †
グループアカウントを削除する
groupdel <group_name>
SMC (Solaris Management Console) †
bash-3.00# /usr/sbin/smc &
admintool は、Solaris 10 から廃止 †
シェル初期化ファイル †
- 初期化ファイルの実行順
| Shell | 1 | 2 | 3 |
| C Shell | /etc/.login | ~/.cshrc | ~/.login |
| Bourne Shell | /etc/profile | ~/.profile | |
| Korn Shell | /etc/profile | ~/.profile | ~/.kshrc |
※ ksh で3番目に実行されるのは、環境変数$ENV で示される ~/$ENV。通常 ~/.kshrc が指定されている
- 初期化ファイルのスケルトン
| Shell | スケルトンファイル |
| C Shell | /etc/skel/local.cshrc |
| /etc/skel/local.login |
| Bourne Shell | /etc/skel/local.profile |
| Korn Shell | /etc/skel/local.kshrc |
bash-3.00# cd /etc/skel/
bash-3.00# ls
local.cshrc local.login local.profile
bash-3.00# cat local.cshrc
#ident "@(#)local.cshrc 1.2 00/05/01 SMI"
umask 022
set path=(/bin /usr/bin /usr/ucb /etc .)
if ( $?prompt ) then
set history=32
endif
bash-3.00# cat local.login
#
# Copyright (c) 2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# ident "@(#)local.login 1.7 01/06/23 SMI"
stty -istrip
# setenv TERM `tset -Q -`
bash-3.00# cat local.profile
#
# Copyright (c) 2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# ident "@(#)local.profile 1.10 01/06/23 SMI"
stty istrip
PATH=/usr/bin:/usr/ucb:/etc:.
export PATH
- useradd コマンドで -m -k <skel_dir> が指定されていれば、作成するユーザのデフォルト・シェルにしたがって、上記のファイルがユーザのホームディレクトリにコピーされる
- 通常、-k は、useradd -D でデフォルト値(/etc/skel)が定義されている
- オラの Solaris 10 には、local.kshrc が無かったけど・・・
システムセキュリティ †
- セキュリティ
- システムへのアクセス
- アクセス管理 → パスワード・ログイン・スーパーユーザ
- アクセス権限 → FTP・rhosts・ssh
- システム内リソースへのアクセス → ファイルパーミッション
パスワード管理 †
logins †
passwd †
- パスワードの変更
passwd [-d] [-f] [-l] [-s] [-n <min>] [-w <warn>] [-x <max>] <username>
| コマンドオプション | 意味 |
| -d | パスワード削除(ログイン時にパスワード入力が求められなくなる) ※ユーザアカウント削除(userdel)でないことに注意 |
| -f | 次回ログイン時に、パスワード変更を強制する |
| -l | アカウントロック(ログインできなくなる) |
| -s | アカウント情報を表示 |
| -n <min> | MINWEEKS |
| -w <warn> | WARNWEEKS |
| -x <max> | MAXWEEKS |
- passwd のデフォルト値を設定するファイル(主な設定項目)
/etc/default/passwd
| 設定項目 | 意味 |
| HISTORY | システムに記録する過去パスワード(最大26) |
| MINWEEKS | パスワードを変更できるようになるまでの最小期間 |
| MAXWEEKS | パスワード有効期限 |
| WARNWEEKS | パスワード失効を何週間前から警告するか |
| PASSLENGTH | パスワード長の最小値(設定できるのは6,7,8) |
| DICTIONLIST | ここで指定されたファイル(辞書)に載っているパスワードは許可しない。カンマ区切りで複数指定可能 |
| DICTIONDBDIR | passwdプログラムから直接使われる辞書が生成されるディレクトリ。/var/passwd など |
bash-3.00# cat /etc/default/passwd
#ident "@(#)passwd.dfl 1.7 04/04/22 SMI"
#
# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
MAXWEEKS=
MINWEEKS=
PASSLENGTH=6
# NAMECHECK enables/disables login name checking.
# The default is to do login name checking.
# Specifying a value of "NO" will disable login name checking.
#
#NAMECHECK=NO
# HISTORY sets the number of prior password changes to keep and
# check for a user when changing passwords. Setting the HISTORY
# value to zero (0), or removing/commenting out the flag will
# cause all users' prior password history to be discarded at the
# next password change by any user. No password history will
# be checked if the flag is not present or has zero value.
# The maximum value of HISTORY is 26.
#
# This flag is only enforced for user accounts defined in the
# local passwd(4)/shadow(4) files.
#
#HISTORY=0
#
# Password complexity tunables. The values listed are the defaults
# which are compatible with previous releases of passwd.
# See passwd(1) and pam_authtok_check(5) for use warnings and
# discussion of the use of these options.
#
#MINDIFF=3
#MINALPHA=2
#MINNONALPHA=1
#MINUPPER=0
#MINLOWER=0
#MAXREPEATS=0
#MINSPECIAL=0
#MINDIGIT=0
#WHITESPACE=YES
#
#
# passwd performs dictionary lookups if DICTIONLIST or DICTIONDBDIR
# is defined. If the password database does not yet exist, it is
# created by passwd. See passwd(1), pam_authtok_check(5) and
# mkdict(1) for more information.
#
#DICTIONLIST=
#DICTIONDBDIR=/var/passwd
- ユーザアカウントの削除
userdel <username>
ログイン管理 †
who †
- ログイン中のユーザを列挙する
bash-3.00# who
root console 2月 25日 20:50 (:0)
root pts/3 2月 25日 20:52 (:0.0)
- 見出し行付きで表示する
bash-3.00# who -H
名前 行 時刻
root console 2月 25日 20:50 (:0)
root pts/3 2月 25日 20:52 (:0.0)
- 前回のリブート時刻を表示させる
bash-3.00# who -b
. system boot 2月 25日 20:49
- 期限切れのプロセスを表示する
bash-3.00# who -d
- ユーザのログイン待ち状態にあるプロセスを表示する
bash-3.00# who -l
LOGIN console 2月 25日 20:50 old 388
zsmon . 2月 25日 20:50 old 390
- ログイン中のユーザを名寄せして表示する(このオプションと他のオプションを同時に指定した場合、他のオプションは無視される)
bash-3.00# who -q
root root
# users=2
- 現在のランレベルを表示する
bash-3.00# who -r
. run-level 3 2月 25日 20:49 3 0 S
last †
- last コマンドは、/var/adm/wtmpx ファイルの内容を表示するだけ
- last
bash-3.00# last
root pts/3 :0.0 Wed Feb 25 20:52 ログイン中です。
root console :0 Wed Feb 25 20:50 ログイン中です。
reboot system boot Wed Feb 25 20:49
reboot system down Wed Feb 25 20:48
root pts/3 :0.0 Mon Feb 2 23:46 - 20:48 (22+21:01)
root console :0 Mon Feb 2 23:39 - 20:48 (22+21:08)
reboot system boot Mon Feb 2 23:38
reboot system down Mon Feb 2 23:38
root pts/3 :0.0 Mon Feb 2 23:29 - 23:38 (00:08)
root console :0 Mon Feb 2 23:21 - 停止 (00:17)
reboot system boot Mon Feb 2 23:16
wtmp の始まり Mon Feb 2 23:16
- 引数にユーザ名を指定して、grep することができる
bash-3.00# last root
root pts/3 :0.0 Wed Feb 25 20:52 ログイン中です。
root console :0 Wed Feb 25 20:50 ログイン中です。
root pts/3 :0.0 Mon Feb 2 23:46 - 20:48 (22+21:01)
root console :0 Mon Feb 2 23:39 - 20:48 (22+21:08)
root pts/3 :0.0 Mon Feb 2 23:29 - 23:38 (00:08)
root console :0 Mon Feb 2 23:21 - 停止 (00:17)
wtmp の始まり Mon Feb 2 23:16
- reboot 仮想ユーザのログイン時刻を調べることにより、リブートされた時刻が分かる
bash-3.00# last reboot
reboot system boot Wed Feb 25 20:49
reboot system down Wed Feb 25 20:48
reboot system boot Mon Feb 2 23:38
reboot system down Mon Feb 2 23:38
reboot system boot Mon Feb 2 23:16
wtmp の始まり Mon Feb 2 23:16
ログインの失敗履歴 †
- /var/adm/loginlog を作成すると、5回連続でパスワード認証に失敗した場合に記録が残るようになる
bash-3.00# touch /var/adm/loginlog
bash-3.00# chmod 600 /var/adm/loginlog
bash-3.00# chgrp sys /var/adm/loginlog
bash-3.00# ls -la /var/adm/loginlog
-rw------- 1 root sys 0 3月 23日 01:13 /var/adm/loginlog
- 一般ユーザが 5 回連続でパスワード認証に失敗すると 5 回分のログが記入される。(rootのログイン失敗は記録されないようだ)
bash-3.00# cat /var/adm/loginlog
kagyuu:/dev/pts/4:Mon Mar 23 01:24:17 2009
kagyuu:/dev/pts/4:Mon Mar 23 01:24:28 2009
kagyuu:/dev/pts/4:Mon Mar 23 01:24:38 2009
kagyuu:/dev/pts/4:Mon Mar 23 01:24:46 2009
kagyuu:/dev/pts/4:Mon Mar 23 01:24:55 2009
- 記録をはじめる回数を変えたいときは、/etc/default/login の RETRIES を変更する
bash-3.00# cat /etc/default/login
#ident "@(#)login.dfl 1.14 04/06/25 SMI"
#
# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
# Set the TZ environment variable of the shell.
#
#TIMEZONE=EST5EDT
# ULIMIT sets the file size limit for the login. Units are disk blocks.
# The default of zero means no limit.
#
#ULIMIT=0
# If CONSOLE is set, root can only login on that device.
# Comment this line out to allow remote login by root.
#
CONSOLE=/dev/console
# PASSREQ determines if login requires a password.
#
PASSREQ=YES
# ALTSHELL determines if the SHELL environment variable should be set
#
ALTSHELL=YES
# PATH sets the initial shell PATH variable
#
#PATH=/usr/bin:
# SUPATH sets the initial shell PATH variable for root
#
#SUPATH=/usr/sbin:/usr/bin
# TIMEOUT sets the number of seconds (between 0 and 900) to wait before
# abandoning a login session.
#
#TIMEOUT=300
# UMASK sets the initial shell file creation mode mask. See umask(1).
#
#UMASK=022
# SYSLOG determines whether the syslog(3) LOG_AUTH facility should be used
# to log all root logins at level LOG_NOTICE and multiple failed login
# attempts at LOG_CRIT.
#
SYSLOG=YES
# SLEEPTIME controls the number of seconds that the command should
# wait before printing the "login incorrect" message when a
# bad password is provided. The range is limited from
# 0 to 5 seconds.
#
#SLEEPTIME=4
# DISABLETIME If present, and greater than zero, the number of seconds
# login will wait after RETRIES failed attempts or the PAM framework returns
# PAM_ABORT. Default is 20. Minimum is 0. No maximum is imposed.
#
#DISABLETIME=20
# RETRIES determines the number of failed logins that will be
# allowed before login exits. Default is 5 and maximum is 15.
# If account locking is configured (user_attr(4)/policy.conf(4))
# for a local user's account (passwd(4)/shadow(4)), that account
# will be locked if failed logins equals or exceeds RETRIES.
#
#RETRIES=5
#
# The SYSLOG_FAILED_LOGINS variable is used to determine how many failed
# login attempts will be allowed by the system before a failed login
# message is logged, using the syslog(3) LOG_NOTICE facility. For example,
# if the variable is set to 0, login will log -all- failed login attempts.
#
#SYSLOG_FAILED_LOGINS=5
- パスワードを打ち間違えたあとに待たされる時間(結構いらいらする)って、ここで定義しているのか・・・
ログインの一時禁止 †
- /etc/nologin ファイルがあると、root 以外の一般ユーザがログインできなくなる。
bash-3.00# touch /etc/nologin
bash-3.00# chmod 644 /etc/nologin
bash-3.00# chgrp sys /etc/nologin
bash-3.00# ls -la /etc/nologin
-rw-r--r-- 1 root sys 0 3月 23日 01:32 /etc/nologin
- 一般ユーザには、読み込みのみ許可するようにファイルパーミッションの設定をすること
- rootはログインできることに注意(試験対策)
- /etc/nologin には、一般ユーザがログインしようとしたときのメッセージを定義できる
bash-3.00# vi /etc/nologin
- こんな感じになる
bash-3.00# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
login: kagyuu
Password:
SORRY THIS SYSTEM IS MAINTAINING NOW m(_ _)m
Connection to localhost closed by foreign host.
スーパーユーザ †
su †
su [-] [<username>]
- su = switch user
- 現在の環境変数を引き継いでユーザを変える
> su <username>
- 変更先ユーザの環境変数に変更する
> su - <username>
- ※ root でログインしているときに、su コマンドを使ってユーザを変更してもパスワード入力が求められないことに注意
- ※ root でログインしているときには、コマンドプロンプトが # になることを覚えておくこと
- ※ スーパーユーザ = UID が 0のユーザ。root だけでないことに注意 (普通 root だけにするけど・・・)
スーパーユーザのアクセス監視 †
- /var/adm/sulog ファイル
# cat /var/adm/sulog
SU 03/24 00:23 + pts/3 root-root
SU 03/24 00:23 + pts/3 root-kagyuu
SU 03/24 00:26 + pts/3 kagyuu-root
- su 実行時刻
- 成否 ( + : 成功 / - : 失敗 )
- ポート
- 切り替え前後のユーザ名
- /etc/default/su ファイル
bash-3.00$ cat /etc/default/su
#ident "@(#)su.dfl 1.6 93/08/14 SMI" /* SVr4.0 1.2 */
# SULOG determines the location of the file used to log all su attempts
#
SULOG=/var/adm/sulog
# CONSOLE determines whether attempts to su to root should be logged
# to the named device
#
#CONSOLE=/dev/console
# PATH sets the initial shell PATH variable
#
#PATH=/usr/bin:
# SUPATH sets the initial shell PATH variable for root
#
#SUPATH=/usr/sbin:/usr/bin
# SYSLOG determines whether the syslog(3) LOG_AUTH facility should be used
# to log all su attempts. LOG_NOTICE messages are generated for su's to
# root, LOG_INFO messages are generated for su's to other users, and LOG_CRIT
# messages are generated for failed su attempts.
#
SYSLOG=YES
bash-3.00$
- sulog ファイルに、アクセス監視ログを出力する
- SULOG 変数に、出力ファイルを定義すると、アクセス監視ログを出力する
- OS インストール時には、/var/adm/sulog が設定されている
- SULOG 変数をコメントアウトすると、アクセス監視ログが出力されない
- ユーザが、su コマンドで、root ユーザになろうとしたら直ちに報告する
- CONSOLE 変数に、/dev/console を設定する
スーパーユーザのアクセス制限 †
- /etc/default/login ファイルに、
CONSOLE=/dev/console
と記載してあると、root ユーザは、ローカルでのログインのみが許可される
- CONSOLE 変数をコメントアウトしたり、値を空にすると、root ユーザはログインできなくなる
- root でログインできなくても su コマンドで root になることはできる
アクセス権限 †
FTP †
- /etc/ftpd/ftpusers
- このファイルに登録されているユーザは、ftpの使用が禁止される
- ユーザは、/etc/passwd ファイルに登録されているユーザ
- /etc/ftpd/ftphosts
- /etc/shells
.rhosts †
ssh †
ファイルパーミッション †
ls †
bash-3.00$ ls -la ~/Desktop/
合計 12
drwxr-xr-x 2 kagyuu other 512 3月 24日 00:25 .
drwxr-xr-x 14 kagyuu other 512 3月 25日 01:18 ..
-rw-r--r-- 1 kagyuu other 1431 3月 24日 00:25 star.desktop
-rw-r--r-- 1 kagyuu other 1241 3月 24日 00:25 starthere.desktop
chmod †
chmod [-fR] <permission mode> <file>
| コマンドオプション | 意味 |
| -f | 強制 |
| -R | 再帰的にディレクトリをたどって実行 |
| permission mode | [ugoa] [+-=] [r][w][x] |
| [0-7][0-7][0-7] |
- permission mode
- 実行例
bash-3.00$ touch a.sh
bash-3.00$ ls -la | grep a.sh
-rw-r--r-- 1 kagyuu other 0 3月 28日 13:41 a.sh
bash-3.00$ chmod u+x a.sh
bash-3.00$ ls -la | grep a.sh
-rwxr--r-- 1 kagyuu other 0 3月 28日 13:41 a.sh
bash-3.00$ chmod u-w a.sh
bash-3.00$ ls -la | grep a.sh
-r-xr--r-- 1 kagyuu other 0 3月 28日 13:41 a.sh
bash-3.00$ chmod u=r a.sh
bash-3.00$ ls -la | grep a.sh
-r--r--r-- 1 kagyuu other 0 3月 28日 13:41 a.sh
bash-3.00$ chmod 755 a.sh
bash-3.00$ ls -la | grep a.sh
-rwxr-xr-x 1 kagyuu other 0 3月 28日 13:41 a.sh
bash-3.00$
chown †
chown [-fhR] <owner>[:<group>] <file>
- h オプション
- ファイルがシンボリックリンクの場合、このオプションが指定されていると、リンク先の所有者が変更される。
- このオプションが指定されていないと、リンクをポイントするファイルの所有者が変更される
chgrp †
chgrp [-fhR] <group> <file>
特殊ファイルパーミッション †
setuid †
bash-3.00$ chmod 4755 a.sh
bash-3.00$ ls -la | grep a.sh
-rwsr-xr-x 1 kagyuu other 0 3月 28日 13:41 a.sh
↑
- ls コマンド実行結果のパーミッション列の user の 実行権限が x でなく s になっている
- ファイルを実行した場合に、そのプロセスがファイル所有者の権限で動くようにするためのフラグ
- setuid や setgid パーミッションを設定するとき、ファイルの所有者やグループが root だと、プロセスが root で動いてしまうことに注意する
setgid †
bash-3.00$ chmod 2755 a.sh
bash-3.00$ ls -la | grep a.sh
-rwxr-sr-x 1 kagyuu other 0 3月 28日 13:41 a.sh
↑
- ls コマンド実行結果のパーミッション列の group の 実行権限が x でなく s になっている
- ファイルを実行した場合に、そのプロセスがファイル所有グループの権限で動くようにするためのフラグ
スティッキービット †
bash-3.00$ touch /tmp/matrix.cvs
bash-3.00$ su -
# chmod 1777 /tmp/matrix.cvs
# ls -la /tmp | grep matrix.cvs
-rwxrwxrwt 1 kagyuu other 0 3月 28日 14:36 matrix.cvs
↑
- ls コマンド実行結果のパーミッション列の末尾に t がついている
- ファイルを削除できなくする要にするためのフラグ
- 削除できる人
- ファイル所有者
- ディレクトリ所有者
- 特権ユーザ(UIDが0)
プロセス管理 †
ps †
ps <options>
| コマンドオプション | 意味 |
| -a | ps コマンドが実行されたターミナルからのリクエスト頻度の順にソートして表示する |
| -A | 実行中の全てのプロセスの情報を表示する |
| -e | -A と同じ |
| -f | リストのフル表示 |
| -l | リストをロングフォーマットで表示させる |
| -P <procList> | <procList> に指定された プロセスID に該当するプロセスのみ表示する |
| -u <uidList> | <uidList> に指定された 実効ユーザID(EUID (cf.setuid)) もしくは ログイン名 に該当するプロセスのみ表示する |
| -U <uidList> | <uidList> に指定された 実ユーザID(UID) もしくは ログイン名 に該当するプロセスのみ表示する |
pgrep †
pgrep <options> <pattern>
- 「 ps | grep <pattern> 」を一つのコマンドにしたもの
- コマンドオプションのほとんどは ps と同じ
- pgrep特有のコマンドオプション
| コマンドオプション | 意味 |
| -f | /proc/nnnnn/psinf ファイルの ps_psargs フィールドから取得される正規表現に一致するプロセス情報のみ表示する |
| -n | <pattern> に一意する中で最新のプロセス(最も最後に生成されたプロセス)に関するプロセス情報のみを表示する |
| -o | <pattern> に一致する中で最古のプロセス(最も最古に生成されたプロセス)に関するプロセス情報のみを表示する |
| -v | 条件指定を反転させる(指定した条件に一致しないプロセスに関するプロセス情報を表示する) |
| -x | 実効ファイル名が <pattern> に完全一致するプロセスに関するプロセス情報を表示する |
prstat †
pstat [<options>] [<interval> [<count>]]
- 一定間隔で、ps 出力結果を更新する
- interval : 更新間隔。デフォルト値は 5秒
- count : 更新回数。デフォルト値は 無制限
- コマンドオプションのほとんどは ps と同じ
- pstat特有のコマンドオプション
| コマンドオプション | 意味 |
| -a | プロセスとユーザの情報を表示させる |
| -c | 全開の出力を上書きせず、続けて出力する |
| -n <number> | 上位 <number> 行しか表示しない |
| -s <key> | <key>で、降順にソートする。<key> := cpu , pri , rss(※) , size , time |
| -S <key> | <key>で、昇順にソートする。 |
※rss : resident set size。実メモリ上に常駐しているサイズ。
kill, pkill †
kill [ <signal> | -<signal number> ] <pid>
ex.
kill SIGHUP 12345
kill -9 12345
- シグナル一覧
bash-3.00$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE
9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGUSR1
17) SIGUSR2 18) SIGCHLD 19) SIGPWR 20) SIGWINCH
21) SIGURG 22) SIGIO 23) SIGSTOP 24) SIGTSTP
25) SIGCONT 26) SIGTTIN 27) SIGTTOU 28) SIGVTALRM
29) SIGPROF 30) SIGXCPU 31) SIGXFSZ 32) SIGWAITING
33) SIGLWP 34) SIGFREEZE 35) SIGTHAW 36) SIGCANCEL
37) SIGLOST 41) SIGRTMIN 42) SIGRTMIN+1 43) SIGRTMIN+2
44) SIGRTMIN+3 45) SIGRTMAX-3 46) SIGRTMAX-2 47) SIGRTMAX-1
48) SIGRTMAX
- 主なシグナル
| 番号 | シグナル | 意味 |
| 1 | SIGHUP | ハングアップ |
| 2 | SIGINT | 割り込み(Interrupt)。Ctrl+C |
| 3 | SIGQUIT | 終了(Quit)。Ctrl+\ |
| 6 | SIGABRT | 異常終了(ABORT) |
| 9 | SIGKILL | 強制終了 |
| 15 | SIGTERM | 正常終了(Terminate)。kill コマンドのデフォルト |
| 23 | SIGSTOP | 一時停止 |
| 25 | SIGCONT | 再開 |
- pkill
kill [ <signal> | -<signal number> ] [<options>] [<process_name>]
ex.
pkill -9 -U kagyuu,magyuu ( kagyuu と magyuu の起動したプロセスを停止)
- pgrep と kill を合わせたようなコマンド
- kill では、process id を指定したが、pkill で直接プロセスを指定するときには、process name を指定することに注意
pstop, prun, pwait †
| コマンド | 機能 |
| pstop [<pid>]* [<process name>]* | プロセスを一時停止する |
| prun [<pid>]* [<process name>]* | プロセスを再開する |
| pwait [<pid>]* [<process name>]* | プロセスの終了を待つ |
cron,at †
- どちらも指定された時刻にコマンドを実行する
| コマンド | 機能 | 設定ファイル |
| cron | 定期的に実行するコマンド | /var/spool/cron/crontab |
| at | 一回だけ実行するコマンド | /var/spool/cron/atjobs |
- cron は、ギリシャ神話の「Chronos」に由来する
- at は、英語の前置詞(?)
cron †
- crontab の内容
bash-3.00 # crontab -l
#ident "@(#)root 1.21 04/03/23 SMI"
#
# The root crontab should be used to perform accounting data collection.
#
#
10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
#10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___
25 3 * * * /usr/lib/patch/swupAuto > /dev/null 2>&1
- crontab の書式
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
分 秒 日 月 曜日 コマンド
曜日は 0:日 1:月 2:火 3:水 4:木 5:金 6:土
- crontab の編集・表示・削除
crontab -[elr] [<user_name>]
| コマンドオプション | 意味 |
| -e | 編集。環境変数 VISUAL または EDITOR で指定されたエディタで crontab の編集を行う。環境変数が指定されていない場合は ed が立ち上がる |
| -l | 表示 |
| -r | 削除。自分以外の crontab を消すには root 権限が必要 |
- crontab の編集権限
at †
- atjobs の編集
at [-m] <time> [<date>]
(atコマンドを打ち込むと、実行コマンドの入力待ちになる。実行コマンドを
入力して Ctrl+D を押すと、atjobs に登録される)
| コマンドオプション | 意味 |
| -m | 指定ジョブ終了時に、ユーザにメールを送る |
| <time> | 時刻。midnight(12:00am)、noon(12:00pm)、now を利用可 |
| <date> | 日付。today、tomorrow、+ 3 days を利用可 |
- 実効例
bash-3.00$ echo "/sbin/shutdown -y -i6 -g0 -y" | at 0400
/usr/bin/bash を使用してコマンドを実行します。
月 3月 30 04:00:00 2009 のジョブ 1238353201.a です
bash-3.00$ cat /var/spool/cron/atjobs/1238353201.a | tail -10
export dtstart_sessionlogfile; dtstart_sessionlogfile='/dev/null'
export COLORTERM; COLORTERM='gnome-terminal'
export _; _='/usr/bin/at'
export OLDPWD; OLDPWD='/export/home/kagyuu/Desktop'
$SHELL << '...the rest of this file is shell input'
#ident "@(#).proto 1.6 00/05/01 SMI" /* SVr4.0 1.2 */
cd /export/home/kagyuu
umask 22
/sbin/shutdown -y -i6 -g0 -y
- at の編集権限
bash-3.00$ cat /etc/cron.d/at.deny
daemon
bin
nuucp
listen
nobody
noaccess
プリンタ †
Solrisのプリントプロセスの概要 †
- ユーザが lp や lpr コマンドで、印刷指示を出す
- プリンタ名が省略された場合のプリンタは、次の優先順位で決定される
- 環境変数 $PRINTER
- $LPDEST の値
/.priters に登録されているプリンタ
- /etc/printers.conf に登録されているプリンタ
- NISに問い合わせる
- プリントリクエストは、いったん /var/spool/lp に蓄えられて IPP(Internet Printing Protocol) でプリンタサーバに送られる
- IPPリスナーがプリントリクエストを受け取る
- Apache の上で動いている Web サービス(Port 631)
- svc:/application/print/ipp-listener
- LPプリントサービス( = lpsched = プリントスケジューラ )にプリントジョブがスプールされる
- プリンタを初期化して、プリントジョブの提出と処理ができるようにする
- ファイルの管理およびローカルプリントのリクエストをスケジューリングする
- プリントジョブの状態を追跡する
- ファイルのフィルタリングを行い、使用するプリンタに対応しているフォーマットにプリントジョブを変換する
- プリントに障害が発生した場合にリクエスト元に警告する
- プリンターから出力される
プリンタの状態の確認 †
lpstat [-d] [-p <printer name>] [-D] [-l] [-o [<list>]] [-t]
| コマンドオプション | 意味 |
| -d | システムのデフォルトプリンタを表示する |
| -p <printer name> | プリンタの状態を表示する(Active/idle、有効にされた時刻/無効にされた時刻、プリントリクエストを受け付けているか) |
| -D | -p で指定されたプリンタの詳細情報を表示 |
| -l | -p で指定されたプリンタの特性情報を表示 |
| -o [<list>] | <list> 指定したリクエストに関する情報を表示。プリンタ名、クラス名、リクエストID。無指定時には全てを表示 |
| -t | LPプリントサービスの状態を表示させる |
プリントスケジューラの起動・停止 †
- 起動状態の確認
lpstat -r
or
svcs svc:/application/print/server
- プリントスケジューラの起動
/usr/lib/lpsched
or
svcadm enable svc:/application/print/server
- プリントスケジューラの停止
/usr/lib/loshut
or
svcadm disable svc:/application/print/server
プリントスケジューラのログ †
プリンタリクエストのログは二つの場所に出力される
| ディレクトリ | アクセス可能なユーザ |
| /var/spool/lp/requests/<system name> | su、lpサービス |
| /var/spool/lp/tmp/<system name> | su、lpサービス、リクエストしたユーザ |
プリントリクエストの確認とキャンセル †
プリンタの追加 †
lpadmin -p <system name>[!<printer name>]
[-s <system name> | -U <dial info> | -v <device name>]
[-e <printer> | -i <interface> | -m <model>]
| # | コマンドオプション | 意味 |
| 1 | -p <system name>!<printer name> | プリンタ名 |
| 2 | -s <system name> | リモートプリンタ |
| -U <dial info> | ダイアルアップのリモートプリンタ |
| -v <device name> | ローカルプリンタ |
| 3 | -e <printer> | 既存のプリンタドライバを今回追加するプリンタのドライバーとしてコピーする |
| -i <interface> | 新規のプリンタドライバを今回追加するプリンタのドライバーとして利用する。(<interface> は、ドライバのフルパス) |
| -m <model> | LPプリントサービスに登録されている <model> 名のプリンタドライバーを今回追加するプリンタのドライバーとして利用する |
- リモートプリンタ、ダイアルアップ、ローカルプリンタ のいづれかを指定する必要がある
- プリンタドライバの供給元を一つ指定する必要がある
- 一つのプリンタデバイスに、複数のプリンタ名をつけることが可能
- プリンタを追加すると、自動的に LPプリントサービス(lpsched)が起動する
- プリンタの構成情報 : /etc/lp/printers/<printer name>/configuration
プリンタの削除 †
# reject <printer name>
# disable <printer name>
# lpadmin -x <printer name>
- lpadmin -x でプリンタを削除する前に、プリントリクエストの受け入れを中止し(reject)、スプールされているプリントリクエストをプリントしないようにする(disable) 必要がある。
- lpadmin -x は、次のファイルを削除する
- プリントサーバの /etc/lp/printers ディレクトリのエントリファイル
- プリントサーバの /etc/printers.conf ファイルのエントリ行
- クライアントの /etc/printers.conf ファイルのエントリ行
クライアントに対するプリンタのアクセス制限 †
- プリントリクエストの受付拒否
reject <printer name>
- プリントリクエストの受付再開
accept <printer name>
- プリントリクエストをプリントしない
disable <printer name>
- プリントリクエストのプリントを再開
enable <printer name>
ユーザに対するプリンタのアクセス制限 †
システムのバックアップとリストア †
バックアップ手法の比較 †
| バックアップ手法 | 概要 |
| フル バックアップ | バックアップ元をアンマウントし、データを全て別媒体に保存する |
| 増分 バックアップ | バックアップ元をアンマウントし、前回のバックアップとの差分を保存する |
| スナップショット バックアップ | バックアップ元のスナップショットに対して、バックアップを行う(バックアップ元はマウントしたままでよい) |
ufsdump †
ufsdump [0123456789fustdWwnNDCcbavloS [<arguments>]] <files>
| コマンドオプション | 意味 |
| 0-9 | バックアップレベル |
| a <archiveFile> | バックアップ目録を作成する ufsrestore によるリストア時に、どのファイルをリストアするかの確認に用いる |
| u | /etc/dumpdates ファイルに、バックアップ目録を作成する |
| D | フロッピーディスクへダンプする |
| f <dumpFile> | ダンプ先を指定する。デフォルトは /dev/rmt/0 (ローカルのテープ)。ローカルのテープ、ディスク、リモートのテープ、ディスク、標準出力を指定可能 |
| n | バックアップ実行時に発生した警告を sys グループの全オペレータに通知する |
| o | バックアップ完了時にドライブをオフラインにする |
| S | バックアップに必要な容量を計算する(実際のバックアップは行わない) |
| s <size> | バックアップ先のボリュームサイズを指定(ufsdumpは、必要な容量があるかを確認するので、特に指定する必要はない) |
| v | バックアップ終了後に、バックアップファイルの検証を行う。標準出力にバックアップした場合は、このオプションは使用不可 |
| w | バックアップの完了しなかったファイルシステムをリスト表示する(/etc/dumpdates、/etc/vfstab の情報を元に) |
- コマンドの特徴
- バックアップ元は、rawディスクスライス
- バックアップ元は、アンマウントしたデバイス or 読み取り専用なデバイス
- バックアップ元に、マウントしたままのデバイスを指定できるが、メモリバッファ中のデータがコピーされないため、不完全なバックアップが行われる
- 記憶ブロック、iノード、間接アドレスノードからポイントされていないフリーなブロックはバックアップされない(dd の様にディスクイメージのコピーをしているわけではない)
- シンボリックリンクは、リンクファイルのみがコピーされる (リンク先はコピーされない)
- ダンプレベルの指定
- 0123456789
- 最後に行われた、今回より小さいレベルとの差分バックアップを行う
- 例1
| 曜日 | ダンプレベル | バックアップ |
| 日 | 0 | フルバックアップ |
| 月 | 1 | 日曜日との差分バックアップ |
| 火 | 2 | 月曜日との差分バックアップ |
| 水 | 3 | 火曜日との差分バックアップ |
| 木 | 4 | 水曜日との差分バックアップ |
| 金 | 5 | 木曜日との差分バックアップ |
| 土 | 6 | 金曜日との差分バックアップ |
| 日 | 0 | フルバックアップ |
- 例2
| 曜日 | ダンプレベル | バックアップ |
| 日 | 0 | フルバックアップ |
| 月 | 9 | 日曜日との差分バックアップ |
| 火 | 9 | 日曜日との差分バックアップ |
| 水 | 9 | 日曜日との差分バックアップ |
| 木 | 9 | 日曜日との差分バックアップ |
| 金 | 9 | 日曜日との差分バックアップ |
| 土 | 9 | 日曜日との差分バックアップ |
| 日 | 0 | フルバックアップ |
- バックアップ履歴
- u オプションを指定すると /etc/dumpdates にバックアップ履歴が記録される
- a オプションで任意のファイルにバックアップ履歴が記録される
- 書式
ufsrestore(非対話モード) †
ufsrestore(対話モード) †
# ufsrestore -if /dev/rmt/0m
ufsrestore >
| 利用可能なコマンド | 機能 |
| add <file> | 抽出用にマーク |
| cd <directory> | |
| delete <file> | 抽出用のマークを外す |
| extract | 抽出用にマークされたファイルを抽出する |
| help , ? | |
| ls <directory> | |
| marked <directory> | 抽出用にマークされたファイル名のリストを表示 |
| pwd | |
| quit | |
| verbose | |
cpio †
cpio <mode> [<options>]
| コマンドオプション | 意味 |
| mode | -i | copy in (標準出力からアーカイブの読み込み) |
| -o | copy out (アーカイブの作成、標準入力からファイルのリストを受け取る) |
| -p | pass (ディレクトリ間のコピー) |
| -a | -o と組み合わせる。作成したアーカイブのアクセスタイムを現時刻に更新する |
| -A | -o と組み合わせる。既存のアーカイブに追記 |
| -d | -i と組み合わせる。必要に応じてディレクトリを作成する |
| -m | -i と組み合わせる。ファイル変更時刻を維持する |
| -t | -i と組み合わせる。アーカイブに含まれるファイルのリストを表示する |
- カレントディレクトリをバックアップする
$ find . | cpio -oa > /tmp/backup.cpio
- バックアップされたファイルの内容を表示する
$ cpio -it < /tmp/backup.cpio
- 全ファイルを復元する
$ cpio -idm < /tmp/backup.cpio
- 特定のファイル(XMLとXSD)のみ取り出す
$ cpio -im < /tmp/backup.cpio "*.xml" "*.xsd"
tar †
tar <options> [<tar file name>] [<files to backup>]
| コマンドオプション | 意味 |
| c | アーカイブする |
| x | 展開する |
| f | <tar file name>に、圧縮・展開する。未指定時は標準入出力を操作 |
| t | アーカイブの内容を表示する |
| u | アーカイブへ追記する |
| v | 冗長モード |
pax †
pax [<mode>] [<options>]
| コマンドオプション | 意味 |
| mode | -r | 読み込みモード |
| -w | 書き込みモード |
| -rw | コピーモード |
| (未指定) | リストモード |
| -a | 既存のアーカイブに追記する |
| -k | 既存のファイルを上書きしない |
| -f <archive> | アーカイブを指定する(未指定時は標準入出力に対する操作が行われる) |
| -x <format> | アーカイブのフォーマットを指定する。pax,cpio,ustar,xustar |
dd †
$ dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t1d0s2
$ dd if=/dev/rdsk/c0t0d0s2 of=~/backup.file
- ディスクイメージをそのままコピーしたり、ファイルに書き出す
- ブロックレベルのコピーを行うので、可変長テープデバイスへ書き出すときには、"bs=128k" などとブロックサイズを指定する必要がある
バックアップ系コマンドの比較 †
| コマンド | ファイルシステム境界の認識 | 複数ボリュームバックアップのサポート |
| ufsdump | 対応 | 対応 |
| cpio | 不可 | 対応 |
| pax | 不可 | 対応 |
| tar | 不可 | 不可 |
| dd | 対応 | 不可 |
fssnap †

- fssnap の仕組み
- 実ファイルを fssnap コマンドで、バッキング・ストア・ファイルにマッピングする。
- バッキング・ストア・ファイルを読み取り専用のデバイスとしてファイルシステムにマウントする。
- バッキング・ストア・ファイルをマウントしたディレクトリに対して、ufsdump や cpio を実行してバックアップを行う。
- こうすることにより、実ファイルシステムをマウントしたままバックアップが行える(かなり遅くなるけど・・・)
- fssnap コマンド
fssnap [-F <file system>] -o backing-store=<dest path> [<specific options>]<mount point>
| コマンドオプション | 意味 |
| -F <file system> | スナップショットをとるファイルシステムの種類 |
|-o |スナップショットを削除するとき、同時にバッキング・ストア・ファイルも削除する|
| backing-sotre=<dest path> | 必須。バッキング・ストア・ファイルを格納するパス |
| unlink | スナップショット作成時に、バッキング・ストア・ファイルのリンクを解除する |
| chunksize=<n> | バッキング・ストア・ファイルに送信するデータの粒度 |
| maxsize=<n> | バッキング・ストア・ファイルの最大容量。これを超えると、バッキング・ストア・ファイルは破棄される |
| mount point | 必須。スナップショットをとるマウントポイント |
- "backing-store" は、"bs" と省略することができる
- バッキングストアファイルの作成位置は、スナップショットを作成するファイルシステムにはできない
- バッキングストアファイルを格納するディレクトリには、UFS や NFS など任意のタイプを使用できる。TEMPFSも可。
- バッキングストアファイルは自動的に複数作られる。(拡張子が、.1 .2 .3 ... となる)
- 利用例
# fssnap -F ufs -o backing-store=/backups/home.bkup /export/home
# mkdir /backups/home.bkup
# mount -F UFS -o ro /dev/fssnap/1 /backups/home.bkup
# cd /backups/home.bkup
# tar cvf /dev/rmt/0 .
- スナップショットの削除
- fssnap -d
# fssnap -d /export/home
- リブートすると、スナップショットは削除される
- 削除時の注意事項
- スナップショット作成時に "-o" オプションをつけていないと、バッキング・ストア・ファイルは自動的に削除されないので、手動で削除する必要がある。
システム復旧の手順 †
- ターミナルを使っている人から、ハングアップしたと言われたときに行う手順。どこかで解決すればそれで終わり
- 単に ユーザが、Ctrl+S (コンソールへの出力停止) を押してターミナルに何も表示されないだけかもしれないので、とりあえず Ctrl+Q (出力再開) を押してみる
- Ctrl+\ で実行中のプロセスを終了させる
- Ctrl+C で実行中のプロセスに割り込みを入れてみる
- 別のターミナルからシステムにログインして、ハングアップしているプロセスの終了を試みる
- 別のターミナルからシステムにログインして、スーパーユーザになって、システムをリブートしてみる
- 緊急コマンド( Stop+A )で、Open Boot ユーザインタフェースに移行し、クラッシュダンプ(IOバッファとファイルシステムの同期)を実行して、リブートしてみる
ok sync
ok boot
- いったん電源を切り、1〜2分待って、電源を入れ直す。
- Sun のサポートデスクに電話する。
参考文献 †
Computer#Unix