Feb 012006
 

Linuxなんかですとpam_wheelでsuできるグループを制限したりできます。BSD系は最初からwheelグループに属してないとsuできなかったと思います。
Solarisはそんな仕組みがない(と思う)ので、古典的ですがコマンドファイルのパーミッションで特定グループに制限するようにしました。
suコマンドをみてみると

# ls -l /usr/bin/su
-r-sr-xr-x   1 root     sys        25748 Jun 17  2005 /usr/bin/su

となってますので、Otherのパーミッションを落として、sysグループ所属者のみ可、とするのが手取り早そうです。

# usermod -G sys hogehoge
# chmod o-rwx /usr/bin/su
bash-3.00# ls -l /usr/bin/su
-r-sr-x---   1 root     sys        25748 Jun 17  2005 /usr/bin/su

これでsysグループに所属しないユーザがsuしても、

$ su -
su: execute permission denied

として拒否されるようになります。

Jan 102006
 

ULTRA 10には結局Solaris 10をいれて、とりあえず自宅メールサーバに仕立てました。

CSWパッケージ導入

ソースからコンパイル、インストールして導入していくのは大変なので、Blastwave.orgで提供されるバイナリパッケージを利用します。
こちらの手順にしたがって環境を構築すると、pkg-getコマンドでバイナリパッケージの導入、アップデートがおこなえるので便利です。
メール環境構築に必要な、以下のパッケージ群(と依存パッケージ)を導入します。

  • CSWcourierimap – Courier-IMAP
  • CSWmaildrop – maildrop
  • CSWfetchmail – fetchmail

SendmailのMaildir対応

IMAPサーバにはCourierを使いますので、Maildir配送となるようにsendmail.cfを変更します。
Sendmail で Maildir を使う」の情報を参考に、ローカル配送プログラムを/opt/csw/bin/maildropに変更し、/opt/csw/etc/maildrop/maildroprcを用意します。

# cd /etc/mail/cf/cf
# cp sendmail.mc sendmail-maildrop.mc; vi sendmail-maildrop.mc
# diff -u sendmail.mc sendmail-maildrop.mc
--- sendmail.mc Sat Jan 22 08:30:45 2005
+++ sendmail-maildrop.mc        Tue Jan 10 12:22:07 2006
@@ -26,6 +26,7 @@
 OSTYPE(`solaris8')dnl
 DOMAIN(`solaris-generic')dnl
 define(`confFALLBACK_SMARTHOST', `mailhost$?m.$m$.')dnl
+FEATURE(`local_procmail', `/opt/csw/bin/maildrop', `maildrop -d $u')
 MAILER(`local')dnl
 MAILER(`smtp')dnl

# /usr/sfw/bin/gmake sendmail-maildrop.cf
# cp -p sendmail-maildrop.cf /etc/mail/sendmail.cf
# svcadm refresh smtp:sendmail

ここまでやってから気がついたのですが、/usr/ccs/bin/makeを使えとMakefileに書かれていました 😛

bogofilter導入

SPAMフィルタに利用しているbogofilterと、日本語わかちがきに必要となるkakasi、nkfはCSWでパッケージングされていないため、ソースからコンパイル、インストールします(spamassassinはバイナリパッケージがあります)。
ちなみに.mailfilterは以下のような記述にしています(抜粋)。

PATH=/bin:/usr/bin:/usr/local/bin:/opt/csw/bin

MAILDIR="Maildir"
DEFAULT="$MAILDIR/"

BOGORESULT=`nkf -ZSme|kakasi -w|bogofilter -epu|reformail -X'X-Bogosity:'`
xfilter "reformail -i'${BOGORESULT}'"
if (/^X-Bogosity: Spam/:h)
  to "$MAILDIR/.Spam/"

bogofilterのwordlist.dbは旧メールサーバでdump(bogoutil)してから再インポートします。

famのエラー対応

このままだとFAQにもなっているfamのエラーメッセージが出力されます
解決方法はFAQの通りなのですが、CSWfamパッケージは依存パッケージとして導入されており、/etc/inetd.confにもエントリができています。
ちょっと悩んだのですが、Solaris 10の場合/etc/inetd.confにエントリを追加するだけでは不十分でinetconvを実行してsmf管理下にする必要があったようです。

# inetconv
inetconv: Notice: Service manifest for 100235/1 already generated as /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml, skipped
inetconv: Notice: Service manifest for 100083/1 already generated as /var/svc/manifest/network/rpc/100083_1-rpc_tcp.xml, skipped
inetconv: Notice: Service manifest for 100068/2-5 already generated as /var/svc/manifest/network/rpc/100068_2-5-rpc_udp.xml, skipped
sgi_fam/1-2 -> /var/svc/manifest/network/rpc/sgi_fam_1-2-rpc_tcp.xml
Importing sgi_fam_1-2-rpc_tcp.xml ...Done

これでfamのエラーも出なくなりました。

Nov 242005
 

本日のSolaris 10(SPARC)に対するsmpatch analyze, update結果。

bash-3.00# smpatch analyze
119578-10 SunOS 5.10: FMA Patch
118822-23 SunOS 5.10: kernel Patch
121236-01 SunOS 5.10: ncp patch
119981-05 SunOS 5.10: libc_psr patch
121012-01 SunOS 5.10: traceroute patch
121265-01 SunOS 5.10: libc_psr_hwcap1.so.1 patch
119470-06 SunOS 5.10: Sun Enterprise Network Array firmware and utilities
bash-3.00# smpatch update
com.sun.patchpro.util.Percentage@8390b0
119578-10 has been validated.
com.sun.patchpro.util.Percentage@19d3b3a
118822-23 has been validated.
com.sun.patchpro.util.Percentage@4133b0
119981-05 has been validated.
com.sun.patchpro.util.Percentage@a86d12
121012-01 has been validated.
com.sun.patchpro.util.Percentage@190d8e1
119470-06 has been validated.
Installing patches from /var/sadm/spool...
119578-10 has been applied.
118822-23 has been applied.
Failed to install patch 121236-01.

patchadd utility failed. Reason code :0
Checking installed patches...Patchadd is terminating. Transition old-style patching.
ALERT: Failed to install patch 121236-01.
119981-05 has been applied.
121012-01 has been applied.
Failed to install patch 121265-01.

patchadd utility failed. Reason code :0
Checking installed patches...Patchadd is terminating. Transition old-style patching.
ALERT: Failed to install patch 121265-01.
119470-06 has been applied.
.....
bash-3.00#

いまだかつて、すんなり適用できたためしがありません。

ちなみにこのマシンは個人の勉強用ですので、patchpro.install.typesにはrebootafter:rebootimmediate:reconfigafter:reconfigimmediate:singleuser:standardを指定しています。

Oct 272005
 

以前も書いたと思いますが、Solaris 10からパケットフィルタリング用のソフトウェアはSunScreenではなくIP Filterになりました。
BSD系で経験済みなのでフィルタリングやNATの設定は簡単にできますが、Solarisでは「どのNICで有効化するか」する設定を忘れがちです(私だけ?)
具体的には/etc/ipf/pfil.apで、該当NICの行を有効にする必要があります。

:
#qe	-1	0	pfil
hme	-1	0	pfil
#qfe	-1	0	pfil
:

これをおこなっていないと、ipfilter起動時に

pfil not configured for firewall/NAT operation

と警告されます。

しかし、BSD系は軒並みIP FilterからPFに切り替わりつつあるというのに、なぜIP Filterになったのでしょうか。
Solaris 9ではそれまでLite版だったSunScreenが正式版になったんので、せっかく覚えたというのに 😥
なんて言ってるうちにSolaris 11ではPFになったりして 😐

Solarisのディスクラベル

 article  Comments Off on Solarisのディスクラベル
Oct 252005
 

2種類あるってことを知りませんでした。SMI(VTOC)とEFI。

以前Gentooを入れたあとにSolarisを入れようとして「Unformatted disk.」なエラーになっていたのは、Gentooで作ったディスクラベルがEFIだったからだと思われます。
ディスクラベルのEFIからVTOCに変えるときは、format -eを使用します。

# format -e
Searching for disks...done
:
format> label
[0] SMI Label
[1] EFI Label
Specify Label type[1]: 0
Ready to label disk, continue? y
 
format> 

で、現在がEFIならデフォルト1になってますので0を指示すればSMIとなるようです。

参考:Solaris Forums – Convert drive from EFI to VTOC

■2005-10-31追記
EFIディスクラベルは、Solaris 9からの新機能だったようです。
機能比較表 – Solaris 9 4/03

■2011-02-13追記
上記リンクはOracleになってリンク切れになってましたので、それらしき説明があるページを以下に。
What’s New in Disk Management in the Solaris 9 4/03 Release?

Oct 182005
 

smpatch updateで軒並みパッチを適用していったところ、smpatchが動かなくなってしまいました。

# smpatch analyze
Failure: Cannot connect to retrieve Database/current.zip: Authentication failed due to bad credentials. You may need to re-register this system.

再度smpatch setコマンドでユーザ登録アカウント設定してみようと思ったら

# smpatch set patchpro.sun.user=username patchpro.sun.passwd=password
# smpatch get
patchpro.backout.directory      -               ""
patchpro.download.directory     -               /var/sadm/spool
patchpro.install.types           -  rebootafter:reconfigafter:standard
patchpro.patch.source           -               https://getupdates.sun.com/solaris/
patchpro.patchset               -               current
patchpro.proxy.host             -               ""
patchpro.proxy.passwd           ****            ****
patchpro.proxy.port             -               8080
patchpro.proxy.user             -               ""

となってSunユーザアカウントの設定ができないようになってました。

# smpatch set
No parameter assignments specified.

Usage:
    smpatch set [opts] parameter-name=parameter-value ...
        -n system-name
        -H host-name:port
        -u user-name
        -p user-password
        -r role-name
        -l role-password
    smpatch set -L parameter-name=parameter-value ...

-uと-pだけを指定してもこのUsageが出力されるだけで終わってしまいます。

最初のメッセージから察するに、
http://www.sun.com/service/sunupdate/gettingstarted.html
の「STEP 2: Register your system with the Sun Update Connection.」にあるような手続きが必要なようにも思えます。
ユーザ名とか設定できてない状態でこれができるのかもよくわからないですが…

smpatchでもUpdate Connecttionなんぞに登録しないといけなくなったんでしょうか 😕

Sep 302005
 

Gentooを入れていたUltra 2にSolaris 10をインストールしなおそうとしたところ、ホスト名とかネットワークパラメータとか、ネームサービス何使うだとか、いろいろと指示が終わった時点で

One or more disks are found, but one of the
 following problems exists:

> Hardware failure

> Unformatted disk.

となってインストーラが終了し、shellに落ちてしまいました。

Gentooに全ディスク領域を割り当てていたためで、そのままshellでformatし直せばいいとはいえ、もっと早い段階で止まってほしかった 🙁
それからformatが終わったあと、インストーラに復帰する方法ってないんですかね?
NetBSDでsysinstするみたいに。

ちなみにshellをexitすると

# exit
svc.startd[7]: instance svc:/system/install-setup:default exited with status 208
Exiting to shell...

となりますので、こちらのSMF登録内容を解析すればインストーラを再開できるのかも知れません。

ハードディスク2台のうちの1台だけフォーマットして最初からやり直したところ、今度はこんなメッセージが(インストール先として未フォーマットのディスクを選択したとき)。

This disk (c0t0d0) cannot be used to install Solaris software.

This disk drive does not have a valid label.  If you want to use
this disk for the install, exit the Solaris Interactive
Installation program, use the format(1M) command from the
command line to label the disk, and type 'install-solaris' to
restart the installation program.

このメッセージの通り、いったんshellにおとしてlabelしなおしてからinstall-solarisしてみたところ、今度はインストーラの途中状態に復帰できました 🙂
ちゃんちゃん。

Aug 292005
 

Alpha用にと考えていたIDEハードディスク160GB×2をUltra 10に入れてみました。
ところが、160GBまで認識せず、120GBちょいしか使えないようです。OpenBOOTを最新にしても変わりません。

こちら、Solaris 9の話ですが137GBまでしか認識しない。ということのようです。

そもそも160GBものHDD領域は必要ないので、このまま使います 😛

Aug 102005
 

先月postfix-jpのMLに投稿された情報によると、Solaris 10付属のIP Filterでkeep stateがうまく動作しないという人がいらっしゃるようです。
「keep stateがまともに動かない」とするともう少し騒ぎになると思うので、他にも何かしら条件があるのだろうと思ってるのですが、Solarisのバグデータベースを検索すると、それらしき情報が出てます(でもCloseしてるなぁ…)。

source port指定したときだけの問題なのでしょうか?
いずれにしても回避策は何かしらあるのでいいんですが、せっかく「Solarisでいってみよう!」と決意したのに出鼻をくじかれた気分です。

Aug 072005
 

Solaris入れようかLinux入れようか悩んでましたが、Solaris入れてPortaris(Gentoo Portageの非公式移植版らしい)を使ってみることにしました。
こちらからファイルをダウンロードして展開、実行開始。
メモリ1GB搭載のUltra 10で2時間ほどかかったとのことなので、しばらく放置プレイ。
うちは256MBのUltra 10ですが何時間かかるでしょうか…。