Tru64 UNIX

2007/8/17更新

対応バージョン: 5.0A

makedevコマンドを使用する。

例)

# makedev /dev/pty2

→ ptyとttyがそれぞれ16個作成される。

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で定義されている。