Tru64 UNIX
2007/8/17更新
対応バージョン: 5.0A
デバイスの圧縮指定はデバイス名に付加するプレフィックスで決まる。
例)
/dev/tape/tape2c ← 最後の「c」が圧縮指定
デバイスファイル名はベース名と文字_dの後に1個の整数を続けたプレフィックスで構成される。
例えば「tape0_d0」のようになる。
このプレフィックスは/etc/ddr.dbaseファイル内のデバイスに対するエントリに従ったテープデバイスの密度を表わす。
例えば次のようになる。
tape0
省略時密度
tape0c
圧縮付き省略時密度
tape0_d0
/etc/ddr.dbaseのエントリ0に対応する密度
tape0_d1
/etc/ddr.dbaseのエントリ1に対応する密度
新しいデバイス特殊ファイル名のプレフィックスと古いテープデバイス名のプレフィックスには次に示す直接の対応関係がある。
_d0 (l : low)
_d2 (m : medium)
_d1 (h : high)
_d3 (a : alternate)
テープについては2組のデバイス名があり、どちらも現在の命名規則に従っている。
巻き戻し型デバイスの/dev/tapeディレクトリと、非巻き戻し型の/dev/ntapeである。
どのデバイス特殊ファイルを使用するかは/etc/ddr.dbaseファイルを調べて判断できる。
2007/8/17更新
対応バージョン: 5.1A
以下の手順で有効にする。
事前作業
オプションのエンハンストセキュリティサブセット(OSFC2SEC510 & OSFXC2SEC510)をインストールする。パスワードの平凡性チェック(*)を有効にする場合は更にOSFDCMTEXTxxxサブセットをインストールする。
複数マシンでクラスタ環境を構成している場合、インストールはクラスタメンバの1台に行い、このマシンを含めたクラスタメンバ全てをリブートする。
これにより他のマシンにもこの設定が適用される。
# setld -l /cdrom/ALPHA/BASE OSFC2SEC510 # setld -l /cdrom/ALPHA/BASE OSFXC2SEC510 # setld -i | grep SEC OSFC2SEC510 installed C2-Security (System Administration) OSFXC2SEC510 installed C2-Security GUI (System Administration)
(*) 平凡性チェック
簡単に推測できるパスワードを使わないようにするためにパスワードに対して行うチェック。
平凡性チェックにより辞書にある単語、ユーザ名、およびユーザ名を少し変えた単語をパスワードとして使うのを防ぐことができる。
変更 or 付加される機能
認証システムの変更
アカウント情報が/etc/passwdから/var/tcb/files/auth.dbにコピーされ、新しいセキュリティライブラリに切り替わる(シングルユーザモードで必要となるroot等のアカウント情報は/tcb/files/auth.dbに保存される)。
当機能を有効にすると新しいデーモンprpasswdd(保護パスワードデーモン)が導入され、そのデーモンの2つのインスタンス(親と子)が各クラスタメンバ上で実行される。
親は主に子の起動と再起動を担当し、子は認証データベースへの変更の書込を担当する。
パスワード有効期限の付加
ログイン最大試行回数制限の付加
ログイン失敗がその指定回数に達すると一定時間ログインできなくなる
監査機能の付加
アクセス制御リスト(ACL)機能の付加
端末のロギング機能の付加
(*) クラスタ環境では利用不能
設定手順
認証システムの変更
セキュリティレベルをBASEからENHANCEDに変更
# sysman secconfig
監査機能の付加
# sysman auditconfig
アクセス制御リスト(ACL)機能の付加
# sysman secconfig
考慮点
認証システムの変更
セキュリティモードを切替える際に現行のアカウントのパスワード有効期限が切れるので全アカウントのパスワードを再設定する必要がある。
ユーザ情報が/etc/{passwd,group}からデータベースに移るので、これらのファイルを利用しているプログラムやツールは処理の見直しが必要となる。
2007/8/17更新
対応バージョン: 5.0A
DSNlinkと呼ばれるリモートメンテナンスサービスにおいて、DSNlink-2.3Eでは該当の/usr/sbin/dsn_tunneldは実際には使用していない(ファイルも存在しない)にもかかわらず/etc/inetd.confにはそのエントリが入っているためメッセージが出力された。
対処としては/etc/inetd.confの該当行をコメントアウトすればよい。
尚この問題はDSNlink-3.0で修正される予定。
2007/8/17更新
対応バージョン: 5.0A
telnetデーモンとして標準のtelnetdに替えてnetaccessを使用する。
設定変更手順は以下の通り。
アクセス制御設定
/usr/dfws/config/hosts.accessファイルにてサービス毎のアクセス制限を設定する。
例)
・telnetdは10.1.1.5からのみアクセス許可
・ftpdは10.1.1.5と150.10.5.3からのみアクセス許可
/usr/sbin/telnetd: 10.1.1.5 /usr/sbin/ftpd: 10.1.1.5, 150.10.5.3
inetd.conf変更
(変更前)
telnet stream tcp nowait root /usr/sbin/telnetd telnetd
(変更後)
telnet stream tcp nowait root /usr/dfws/etc/netaccess /usr/sbin/telnetd
inetdにHUPシグナルを送ってinetd.confの変更を有効にする。
2007/8/17更新
対応バージョン: 5.0A
事象
% w 19:47 up 2 days, 19:50, 31 users, load average: 7.35, 5.39, 5.22 User tty from login@ idle JCPU PCPU what : l0dv20 pts/13 scxc003 19:05 3 -csh : patrol pts/13 scxc002:0.0 17:25 3 -csh
対応
/var/adm/utmpが壊れたのでいったんこれをクリア(/dev/nullをコピー)する。
尚、クラスタ構成の場合utmpの実体は/var/cluster/members/{memb}/adm/utmpとなる。
2007/8/17更新
対応バージョン: 5.0A
dupatchコマンドを使用する。
例)
# dupatch -track -type kit -nolog Gathering details of relevant patches, this may take a bit of time Patches installed on the system came from following patch kits: -------------------------------------------------------------- - T64V50AAS0001-20000718 OSF505 - T64V50AAS0002-20001004 OSF505 NOTE When a patch kit is listed, it does not necessarily mean all patches on that kit are installed on your system.
2007/8/17更新
対応バージョン: 5.1A
プリンタをセットアップするにはローカルプリンタ、リモートプリンタにかかわらず、まずPrinter Support Environmentサブセットが事前にインストールされている必要がある。
setldコマンドを使用してこのサブセットがインストールされているかどうかを確認し、次のように表示されればインストールされている。
# setld -i | grep OSFPRINT OSFPRINT520 installed Local Printer Support (Printing Environment)
あとはBSDスタイルで/etc/printcapにリモートプリンタのエントリを追加するだけでよい。
例としてmoonというリモートプリンタのLIPSA4という論理プリンタをセットアップをする場合のprintcapのエントリを示す。
lpmoon_lipsa4:\ :lf=/usr/adm/lpd-errs:\ ← ログファイル :lp=:\ ← プリンタデバイス(設定なし) :rm=moon:\ ← リモートプリンタのホスト名 :rp=LIPSA4:\ ← 論理プリンタ :sd=/usr/spool/lpmoon_lipsa4: ← スプールディレクトリ
2007/8/17更新
対応バージョン: 5.1A
事象
# tcpdump -i lo0 tcpdump: pfopen: lo0: No such file or directory tcpdump: your system may not be properly configured; see "man packetfilter"
原因
/etc/sysconfigtab中でpacketfilterオプションが指定されていないとtcpdumpは実行できない。
2007/8/17更新
対応バージョン: 5.0A
以下のファイルを適宜設定する。
/etc/rc.config (全般の設定)
NISクライアントの設定追加
NIS_CONF="YES" export NIS_CONF NIS_DOMAIN="<domain>" export NIS_DOMAIN NIS_TYPE="CLIENT" export NIS_TYPE
automountの設定追加
AUTOMOUNT="1" export AUTOMOUNT
/etc/svc.conf (ネームサービスの切替スイッチ)
(変更前)
group=local hosts=local netgroup=local passwd=local
(変更後)
NISを使用するリソースについてypエントリを追加する。
以下はgroup,hosts,netgroup,passwdリソースについてNISを使用する場合の設定である。
group=local,yp hosts=local,yp netgroup=yp passwd=local,yp
/etc/passwd
追加
以下のような形式で必要な情報を NIS マップから取得
+foo:::::: ← NIS passwdマップ上のfooユーザを使用 +@foo-group:::::: ← NIS netgroupマップ上のfoo-groupグループを使用 + ← NIS passwdマップ上の全ユーザを使用
/etc/group
追加
以下のような形式で必要な情報をNISマップから取得
+foo::: ← NIS groupマップ上のfooグループを使用 + ← NIS groupマップ上の全グループを使用
2007/8/17更新
対応バージョン: 5.0A
プロセスあたりのメモリサイズは物理メモリのサイズ目一杯まで設定しても最低限カーネルが正常に動作することが保証されるので特に問題ない。
2007/8/17更新
対応バージョン: 5.0A,5.0A
そのアカウントが所属している2次グループが多すぎる。
1つのユーザが所属できるグループは1次/2次グループ合わせて最大32個。
これは、以下の理由のため`仕様'となっている。
あるユーザでログインしたりスイッチユーザしたりすると、そのユーザのグループリストを得るためにinitgroups()ライブラリが呼び出される。
initgroups()中ではNGROUPS_MAXというdefine値を使ってグループリストの最大値を決めていてそれ以上のグループはグループファイル(/etc/group等)に登録してあっても無視される。この時画面には「initgroups: <ユーザ名> is in too many groups」というメッセージが表示される。
NGROUPS_MAXは/usr/include/sys/syslimits.h中で32と定義されているがこの値を増やしたい場合initgroups()をコンパイルし直さないといけなくなる。また、initgroups()はlibc.soに含まれているので結果的にlibc.soを置き換えることになってしまう。
したがってOS製造元としてはこのようなリコンパイル行為はできない、つまり`仕様'となる。
1つのユーザにたくさんのグループを所属させようとしてもこの制限があるので注意が必要である。
2007/8/17更新
対応バージョン: 5.0A
以下のようなパターンが考えられる。
パターン1
事象
/var/adm/messagesに以下のようなメッセージが出力されている。
Maximum number of users allowed by OSF-USR license PAK are already logged in
原因
同時実行ユーザの制限に達した。
このOSには同時実行ユーザの制限がかかるようになっていて、それを確認するコマンドを実行してみると以下のように表示される。
# /usr/sbin/lmf list Product Status Users: Total Active OPEN3D active unlimited OSF-BASE-UI-JAPANESE active unlimited OSF-BASE active unlimited OSF-USR active 4 4
OSF-USRというエントリが同時実行ユーザの設定で、上記の場合Total(Max) 4になっていてActiveも4になっているのでこれ以上ログインできない状態になっている。
対応
この制限を外すには単にどこかの設定を変えればいいのではなく、「新たにライセンスを購入する」必要がある。
パターン2
事象
/var/adm/messagesに以下のようなメッセージが出力されている。
OSF-BASE license PAK has expired
原因
一般ユーザでログイン可能なライセンスが期限切れになっている。
ライセンスの状況をみると以下のようになっており、OSF-BASE*のライセンスが切れている。
# lmf list Product Status Users: Total Active OPEN3D terminated unlimited OSF-BASE-UI-JAPANESE terminated unlimited OSF-BASE terminated unlimited OSF-USR active 4 1 OSF-BASE active unlimited OSF-BASE-UI-JAPANESE active unlimited OPEN3D active unlimited
OSF-BASEのライセンス情報の詳細をみると、(1)のライセンスの失効日が2000/10/13で、(2)の現在の状態はterminatedになっている。
# lmf history full : Product Name: OSF-BASE Producer : DEC Command : REGISTER Date : 29-AUG-2000 Time : 10:59:46 New License Record Product Name: OSF-BASE Producer: DEC Issuer: DEC Authorization Number: ALL-JP-2000AUG07-71 Number of units: 0 Version: Product Release Date: Key Termination Date: 13-OCT-2000 ← (1) Availability Table Code: A Activity Table Code: Key Options: ALPHA Product Token: Hardware-Id: License status: terminated ← (2) Cancellation Date: Revision Number: 0 Comment: :
対応
新たにライセンスを取得する必要がある。
尚、この状態でもコンソールからrootでのログインだけは可能となっている。
2007/8/17更新
対応バージョン: 5.0A
RFC952で定義されRFC1123で修正されたホスト名の標準命名規則に従い、以下の文字で構成する。
英字 : A〜Z, a〜z
数字 : 0〜9
記号 : '.'(ピリオド),'-'(ハイフン)
また、ホスト名の最初の文字は英字または(RFC1123での修正に従い)数字でなければならない。
2007/8/17更新
対応バージョン: 5.1A
以下の手順でファイルセットを使用する。
ここでは例として物理デバイス/dev/disk/dsk22cをファイルドメインdev1_domainに結びつけ、そこにファイルセットfs_eu1_dvを作成して/home/s1ex04_dvにマウントする場合について説明する。
物理/論理デバイスをファイルドメインに結びつける。
# cd /etc/fdmns/dev1_domain # ln -s /dev/disk/dsk22c # ls -l dsk22c lrwxr-xr-x 1 root system 16 11月05日 15:42 dsk22c@ -> /dev/disk/dsk22c
ファイルドメイン内にファイルセットを作成する。
# mkfset dev1_domain dev1 # showfdmn dev1_domain Id Date Created LogPgs Version Domain Name 3dc7683b.01086ec6 Tue Nov 5 15:42:03 2002 512 4 dev1_domain Vol 512-Blks Free % Used Cmode Rblks Wblks Vol Name 1L 79691776 22781680 71% on 256 256 /dev/disk/dsk22c # showfsets dev1_domain dev1 Id : 3dc7683b.01086ec6.1.8001 Files : 3, SLim= 0, HLim= 0 Blocks (512) : 48, SLim= 0, HLim= 0 Quota Status : user=off group=off Object Safety: off Fragging : on DMAPI : off
クローンを作成する場合は以下の手順で行なう。
# clonefset dev1_domain dev1 dev1_clone ← クローンファイルセット名
ファイルセットを削除する場合は以下の手順で行なう。クローンを削除する場合も同様である。
# rmfset dev1_domain dev1 rmfset: remove fileset dev1? [y/n] ■ ← y
ファイルセットをマウントする。
# mkdir /home/dev1 # mount dev1_domain#dev1 /home/dev1 # mount : dev1_domain#dev1 on /home/dev1 type advfs (rw)
OSブート時にマウントする場合は/etc/fstabに以下のように記述する。
dev1_domain#dev1 /home/dev1 advfs rw 0 2
2007/8/17更新
対応バージョン: 5.0A
これはvi実行中の一時ファイルで通常vi終了とともに削除されるが、何らかの原因でviが異常終了したような場合(例えば非常に大きなサイズのファイルをviで開こうとしてviがメモリ不足で異常終了した、vi実行中にOSがPanicダウンした等)、このファイルが残ってしまう。
ExXXXXXのXXXXXの部分はviのPIDなのでこのプロセスが存在しなければExXXXXXは削除して構わない。
2007/8/17更新
対応バージョン: 5.0A
ハードウェアRAIDサブシステムではRCU(RAID Configuration Utility)やSWCC(StorageWorks Command Console)ユーティリティなどのディスク管理ソフトウェアを使用してRAIDデバイスを管理するが、steamdはRAIDコントローラの情報をSWCCから使用するためにTru64 UNIX上で動作するデーモンで、上記メッセージはこのRAIDコントローラとsteamdの通信が途絶えたことを意味する。
+----------------+ |RAIDコントローラ| ... ストレージ +----------------+ | +----------------+ | steamd | ... Tru64 UNIX +----------------+ | +----------------+ | SWCC | ... Windows +----------------+
RAIDコントローラのファームウェアをアップデートすると解消する場合がある。
2007/8/17更新
対応バージョン: 5.0A
hwmgrを使用する。
# /sbin/hwmgr -view devices HWID: Device Name Mfg Model Location ------------------------------------------------------------------ 4: /dev/kevm 36: /dev/disk/floppy0c 3.5in floppy fdi0-unit-0 42: /dev/disk/dsk0c COMPAQ BD018222CA bus-0-targ-0-lun-0 43: /dev/disk/dsk1c COMPAQ BD018222CA bus-0-targ-1-lun-0 44: /dev/disk/cdrom0c COMPAQ CRD-8322B bus-1-targ-0-lun-0 45: /dev/ntape/tape0 COMPAQ SDT-10000 bus-0-targ-5-lun-0
この例ではFDD、HDD x 2、CD-ROM、磁気テープが接続されていることが分かる。
2007/8/17更新
対応バージョン: 5.0A
OS標準でwwpsofというコマンドが用意されているのでこれを使用する。
ただし、このコマンドは日本語をサポートしていないので日本語を含むファイルを印刷したい場合はa2ps等のOSSをインストールする必要がある。
wwpsofの使いかたは以下の通り。
/usr/lbin/wwpsof -O format=ascii < <印刷したいファイル>
尚、1行が80桁を超えるような行があるファイルはfoldなどで1行を分割しないと80桁以降は印刷されない。
2007/8/17更新
対応バージョン: 5.0A
1ユーザあたりの最大プロセス数がシステムの既定値(= max_proc_per_user)を超えた。
大量のプロセスが発生する可能性のあるサーバプログラムなどがある場合はこの値を変更してもよいが、属性値には最大値/最小値があるのでこの範囲内で設定する。
max_proc_per_userが省略された場合、maxusersの値がデフォルトで設定される。
また、max_proc_per_userの値を増やしてもメモリを消費する等のシステムリソースの消費はせず、あくまで最大プロセス数を増やすだけである。
ところで、本事象ではmax_proc_per_userがシステムの既定値を超えているのでまず現在の設定値をみると、
# sysconfig -q proc max_proc_per_user proc: max_proc_per_user = 64
64に設定されているので次にこの属性値の最大値/最小値を調べる。
# sysconfig -Q proc max_proc_per_user proc: max_proc_per_user - type=UINT op=CQ min_val=0 max_val=524287
設定できる値は0〜524287となっている。
最大値は搭載メモリによって変化するのでマシンによって値が変化する。
尚、0を設定すると無制限になる。
またop欄に示されている値はその属性に対して適用できるアクションになっていて以下の種類がある。
C
この属性はサブシステムの初期ロード時にだけ変更可能である。
つまりこの属性はブート時の変更と恒久的な変更だけをサポートしている。
R
この属性は稼働中にチューニングできる。
つまりシステムが現在使用している値を変更できる。
Q
属性の現在の値を表示(照会)できる。
max_proc_per_user属性の場合はop欄がCQなのでサブシステムの初期ロード時にだけ(通常はブート時だけ)値が変更できることになる。
例えばmax_proc_per_userを128に設定する場合は以下の手順で行う。
設定用のスタンザ形式ファイルを用意する。スタンザ形式とは以下のようなもので、サブシステム毎に属性の設定情報を羅列していく。尚、<属性名>の前はタブにする。
<サブシステム名>: <属性名> = <属性値> <属性名> = <属性値> :
ここではprocサブシステムのmax_proc_per_user属性を128に設定するので以下の内容のファイル(/tmp/hogeとする)を用意する。
proc: max_proc_per_user = 128
sysconfigdbコマンドにてこのファイルをシステム設定に組み込む。実際には/etc/sysconfigtabにこのファイルの内容が追加されるのだがこのファイルは直接編集してはいけない。
# sysconfigdb -f /tmp/hoge -a proc
(*) -a(add)オプションは最初だけ指定可能で、いったん/etc/sysconfigtabにこのエントリが追加された後は-u(update)オプションで設定を変更することができる。
マシンリブート
設定が反映されたことを確認する。
# sysconfigdb -l proc proc: max_proc_per_user = 128 # sysconfig -q proc max_proc_per_user proc: max_proc_per_user = 128
また、次回ブート時に元の設定に戻ってもよいのであればsysconfig -rにて設定してもよい。
例えばinetサブシステムのtcp_keepidleアトリビュートの値を30に設定する場合は以下のようにする。
# sysconfig -r inet tcp_keepidle=30 tcp_keepidle: reconfigured # sysconfig -q inet tcp_keepidle tcp_keepidle = 30
2007/8/17更新
対応バージョン: 5.0A
Sフィールドが`U'(割込不可のスリープ中)になっているプロセスはイベントまたはリソースを待っているので、このとき割込や中断はできない。
例えばディスクのI/O待ちやネットワークからのデータ待ちなどがこれに当たる。
このような場合、killコマンドを使用してプロセスを停止させることができない。
たとえSIGKILLであってもプロセスを強制終了できない。
この状態のプロセスがシグナルを受け取るには待ち状態から抜けなくてはならない。
待ち状態から抜ける術がない場合はリブートするしかプロセスを強制終了する方法はない。
2007/8/17更新
対応バージョン: 5.1A
cfsmgrを使用する。
オプションなしで起動すると全てのファイルシステムの情報が表示される。
# /usr/sbin/cfsmgr Domain or filesystem name = cluster_root#root Mounted On = / Server Name = knsdb100 Server Status : OK :
2007/8/17更新
対応バージョン: 5.0A
以下のクラスタ構成でCDSLを設定するものとする。
マシン
サーバ1
サーバ2
CDSL設定対象ファイル
/usr/tmp/test
設定手順
本番クラスタの任意のマシンでrootになる
対象ファイル移行
# cd /usr # tar cvpf - tmp/test | (cd /usr/cluster/members/member1 ; tar xvpf -) # tar cvpf - tmp/test | (cd /usr/cluster/members/member2 ; tar xvpf -) # cd tmp # rm test
CDSL設定
# mkcdsl ../cluster/members/{memb}/tmp/test test # ls -l test -rw-r--r-- 1 root daemon 56 Apr 19 11:57 test@ -> ../cluster/members/{memb}/tmp/test
設定内容は/var/adm/cdsl_admin.invに保存される。
# tail /var/adm/cdsl_admin.inv : 0 49 00000 0 0 120777 5/13/01 010 s ./usr/tmp/test ../../cluster/members/{memb}/tmp/test -
これで、サーバ1、2それぞれから/usr/tmp/testにアクセスすると別々の実体を参照するようになる。
尚、CDSLの削除の方法は以下のとおりである。
# rm /usr/cluster/members/member{1,2}/test # rm /usr/tmp/test # mkcdsl -i /usr/tmp/test ← 削除内容を/var/adm/cdsl_admin.invに反映する
2007/8/17更新
対応バージョン: 5.0A
以下の原因が考えられる。
tarが途中までしか終っていない状態でそのtarファイルを展開しようとした。
tarを実行するユーザのdatasize等のリソースがlimit値に達した。
2007/8/17更新
対応バージョン: 5.0A
対象となるファイルシステムによって使用するユーティリティが異なる。
UFS
dump/restore
AdvFS
vdump/vrestore
ユーティリティによってパラメータが若干異なるので注意が必要である。
2007/8/17更新
対応バージョン: 5.0A
システム設定に「セキュリティ設定」というツールがあるが、そこで通常「BASE」になっている設定を「ENHANCED」に変更する。
コマンドは/usr/share/sysman/menu/tasks/secconfig/secconfigを使用する。
2007/8/17更新
対応バージョン: 5.0A
アカウント名の命名規則は?
以下の通り。
文字種
英数字
文字数
1〜8
最大UID,GID
ファイルシステムによって変わる
・UFS,AdvFSの場合 : 4,294,967,293
・SystemV FSの場合 : 65,535
(*) UID 0〜99はシステムアカウント
(*) 最大値は/usr/include/limits.hのUID_MAXで定義されている。