2010.08.01 FreeBSD 8.1-RELEASE インストールメモ
FreeBSD 8.1-RELEASE リリースノート http://www.freebsd.org/releases/8.1R/announce.html
今回はWindows 7機からDVD-Rに焼いた媒体を使ってインストール。 一部で流行のzfsにはせず、普通にUFSを指定。 ちょっと勇気をだして + Softupdateを指定。
FreeBSD Boot Manager から起動時、以下のような感じで「F6 PXE」 なる謎の選択肢が出るが・・・ネットワークブート用らしい。
F1 FreeBSD F6 PXE Boot: F1
この機械のネットワークインタフェースはmsk0という謎のデバイス。 man msk すると、「Marvell/SysKonnect Yukon II Gigabit Ethernet adapter driver」とのこと。 そういやそんなチップ使ってたなこの機械。
FreeBSDには標準インストールされているRCS(Revision Control System)を使って、 編集前〜編集後の設定を保存しておくシェルスクリプト。
vivc ファイル名 として使うと、RCSコマンドを使って適当に編集履歴を保存する。
ファイルを変更して保存した後に、ログメッセージを聞いてくるので、適当に入力して . (ピリオド)だけの行をEnterすると完了。
ファイル名の後ろに ,v をつけた名前で編集履歴が残るので、「うわ!やべぇ!変なトコ変えちゃったかも?」という事態に備えることができる。
今だとRCSよりGitとかMercurialを使っている人の方が多いと思うので、そのあたりは自分のお好みで工夫して欲しい。
cat > /usr/local/bin/vivc << "EOF" #!/bin/sh # # vi for version control # # $Id: vivc,v 1.17 2001/02/16 05:51:42 root Exp $ # # # print usage message # usage() { echo vivc -- vi with version control. echo "usage)vivc filename" } # # check arg # if [ $# -eq 0 ] ; then usage exit 1 fi if [ \! -r $1 ] ; then usage echo file $1 is not found. abort. exit 1 fi # # do lock # if [ \! -r $1,v ] ; then ci -t-title -minitial -u $1 if [ $? -ne 0 ]; then echo initial checkin failed. abort. exit 4 fi fi if [ -w $1 ]; then echo hummm. writeable file. auto checkin. VIVC_TEMP=`mktemp $1.XXXXXXXX` if [ $? -ne 0 ]; then echo can not create temporary file. abort. exit 5 fi mv $1 $VIVC_TEMP co -l $1 if [ $? -ne 0 ]; then echo auto checkout failed. abort. mv $VIVC_TEMP $1 exit 4 fi mv $VIVC_TEMP $1 ci -msomebody-modified-file -u $1 if [ $? -ne 0 ]; then echo auto checkin failed. abort. exit 4 fi fi if co -l $1 ; then echo checkout with lock ok. else echo checkout with lock failed. abort. exit 2 fi # # edit # if [ x"$EDITOR"x = x""x ] ; then if type emacs > /dev/null ; then EDITOR=emacs elif type vim > /dev/null ; then EDITOR=vim else EDITOR=vi fi fi if $EDITOR $1 ; then echo $EDITOR is ok. else echo $EDITOR is failed. fi # # do unlock # if ci -u $1 ; then echo checkin with unlock is ok. else echo checkin with unlock is failed. abort. exit 3 fi # # end of file # EOF chmod +x /usr/local/bin/vivc
/etc/rc.conf (存在する場合は /etc/rc.conf.local) 編集。
/etc/defaults/rc.conf、man rc.conf を参考に設定していく。
hostname="e6850.tokyo3.nerv" keymap="us.iso" keyrate="fast" saver="daemon" sshd_enable="YES"
DHCPクライアントとしてFreeBSD機を設定する場合の例。
/etc/rc.conf (存在する場合は /etc/rc.conf.local) 編集。 ここでは、DHCPクライアントにする場合の設定項目を記載する。
ifconfig_msk0="DHCP"
ifconfig_の後ろに付く文字列「msk0」は、ネットワークカードのデバイス名。 ifconfig -a して、表示される一覧の中から使えるものを利用しよう。
FreeBSD機をDHCPサーバにするなどの場合は、自分のIPアドレスを固定設定する必要がある。
あと、デフォルトルータ(デフォルトゲートウェイ)(略称デフォゲ)の設定と、DNSサーバの設定も必要。
/etc/rc.conf (存在する場合は /etc/rc.conf.local) 編集。 ここでは、FreeBSD機を固定IPにする場合の設定項目を記載する。
ifconfig_msk0="192.168.1.23" # e6850 defaultrouter="192.168.1.1"
/etc/resolv.conf編集
DNSサーバのIPアドレスを設定しておく。 プロバイダのDNSとか、自宅にブロードバンドルーターがある場合はそのIPアドレスを書いておく。
search tokyo3.nerv nameserver 210.135.65.1 nameserver 210.135.65.2 nameserver 192.168.1.1
sshdの初期設定(/etc/ssh/sshd_config)では、パスワード認証を受け付けない。 以下のようなモードでログインする必要がある。
チャレンジ&レスポンス認証の方が安全なのだが、ウチではsshdの設定すこし緩くして、パスワード認証を許可する。(あまりオススメはしない)
[root@e6850 ~]$ diff -uw /etc/ssh/sshd_config.orig /etc/ssh/sshd_config --- /etc/ssh/sshd_config.orig 2010-07-19 11:17:37.000000000 +0900 +++ /etc/ssh/sshd_config 2010-08-01 22:51:42.000000000 +0900 @@ -42,7 +42,7 @@ # Authentication: #LoginGraceTime 2m -#PermitRootLogin no +PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 @@ -62,7 +62,7 @@ #IgnoreRhosts yes # Change to yes to enable built-in password authentication. -#PasswordAuthentication no +PasswordAuthentication yes #PermitEmptyPasswords no # Change to no to disable PAM authentication [root@e6850 ~]$
ちいと甘い設定だが、家庭内用というとこで。
普段使っている自分のユーザー(george)とグループ(george)を追加しておく。
編集後の/etc/groupは以下のような感じ。
wheel:*:0:root,george daemon:*:1: kmem:*:2: sys:*:3: tty:*:4: operator:*:5:root,george mail:*:6: bin:*:7:
バッチ的に自動登録するならpw(8)が便利。
/etc/group編集。
ユーザーgeorgeをwheel,operatorに登録。 pw(8)を使った場合は自動で登録可能。
pw(1)を使って、自動的にグループとユーザーを作成するサンプル。
# # pwを使ってユーザー登録を行う # # create home directory if [ ! -d /home ]; then mkdir /home fi # # 自分用ユーザー作成 # pw groupadd -n george -g 1001 ( echo "george-s-password" ; sleep 1 ) | pw useradd -n george -u 1001 -c "Jun Obama" -b /home -e 0 -p 0 -g 1001 -G operator,wheel -m -s /usr/local/bin/bash -h /dev/fd1 # # web公開用ユーザー作成 # pw groupadd -n webpub -g 1002 pw useradd -n webpub -c "Web Publish" -b /home -e 0 -p 0 -g webpub -m -s /usr/local/bin/bash passwd webpub # ここでパスワード入力 # # テスト用ユーザー作成 # pw groupadd -n smith -g 1003 pw useradd -n smith -c "Test User" -b /home -e 0 -p 0 -g smith -m -s /usr/local/bin/bash passwd smith # ここでパスワード入力
全員がatを使えるようにする。
touch /var/at/at.deny
全員がcrontabを使えるようにする。
touch /var/cron/deny
/etc/hosts編集。 自マシン部分と、周辺のマシンを記入。
# # my hosts # 192.168.1.1 setup setup.tokyo3.nerv 192.168.1.11 casper casper.tokyo3.nerv 192.168.1.12 asuka asuka.tokyo3.nerv 192.168.1.13 athlon athlon.tokyo3.nerv 192.168.1.14 magi magi.tokyo3.nerv 192.168.1.15 m1ev m1ev.tokyo3.nerv 192.168.1.16 melchiol melchiol.tokyo3.nerv 192.168.1.17 fmvc fmvc.tokyo3.nerv 192.168.1.18 zorac zorac.tokyo3.nerv 192.168.1.19 archangel archangel.tokyo3.nerv 192.168.1.20 mary mary.tokyo3.nerv 192.168.1.24 valkyrie valkyrie.tokyo3.nerv 192.168.1.21 vaiosz vaiosz.tokyo3.nerv 192.168.1.22 core2duo core2duo.tokyo3.nerv 192.168.1.23 e6850 e6850.tokyo3.nerv 192.168.1.25 phenomII phemonII.tokyo3.nerv 192.168.1.26 dv6 dv6.tokyo3.nerv 192.168.1.27 vubu9 vubu9.tokyo3.nerv 192.168.1.28 lynfield lynfield.tokyo3.nerv 192.168.1.29 sheeva sheeva.tokyo3.nerv 192.168.1.30 lynfield-vubu lynfield-vubu.tokyo3.nerv
procfsを追加する。
psコマンドで、各プロセスの起動コマンドラインを表示できるようになる。 (見えすぎて困るという話もあるが...)
一番最後の行を/etc/fstabに追加する。
ssh root@e6850 ~ $ cat /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/ad10s1b none swap sw 0 0 /dev/ad10s1a / ufs rw 1 1 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 proc /proc procfs rw 0 0
ユーザー毎の秘密鍵〜公開鍵ペアを生成する。
ssh-keygen -t dsa
上のコマンドを実行する。 保存場所を聞いてくるが、デフォルトでOK。 パスフレーズを聞いてくるので、入力する。
[george@e6850 ~]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/george/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/george/.ssh/id_dsa. Your public key has been saved in /home/george/.ssh/id_dsa.pub.
公開鍵と秘密鍵のペアが ~/.ssh/id_dsa.pub と ~/.ssh/id_dsa に生成される。
~/.ssh/id_dsa.pubに作成した公開鍵の文字列は、別のマシンの ~/.ssh/authorized_keys に追加書き込みしておく。 (別のマシンの同じユーザーの公開鍵の文字列は、自分の機械の~/.ssh/authorized_keys に追加書き込みしておく。)
この設定で、パスワード認証やキーボードインタラクティブ(チャレンジ&レスポンス)認証ではなくて、 公開鍵〜秘密鍵認証を使ってログインすることになる。
以下のような感じでパスワードではなく、パスフレーズを聞いてくるようになる。
[george@e6850 ~/.ssh]$ slogin dv6 Enter passphrase for key '/home/george/.ssh/id_dsa':
毎回パスフレーズ入力を要求されるとわずらわしい場合がある。 (シェルスクリプトからscpを連射している場合など) ssh-agentとssh-addを使って認証データをログインシェルが続いている限り覚えさせておくことができる。
ssh-agent / ssh-add の基本的な使い方は以下。
[george@e6850 ~]$ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-49u9keMHYF/agent.3236; export SSH_AUTH_SOCK; SSH_AGENT_PID=3237; export SSH_AGENT_PID; echo Agent pid 3237;
ssh-agentはバックグラウンドプロセスになり、UNIX domain socketで接続を待っている。
[george@e6850 ~]$ SSH_AUTH_SOCK=/tmp/ssh-49u9keMHYF/agent.3236; export SSH_AUTH_SOCK; [george@e6850 ~]$ SSH_AGENT_PID=3237; export SSH_AGENT_PID; [george@e6850 ~]$ echo Agent pid 3237; Agent pid 3237
ssh-agentが表示した環境変数設定をログインシェル上で実行し、環境変数に UNIX domain socketとpidを記録。
[george@e6850 ~]$ ssh-add Enter passphrase for /home/george/.ssh/id_dsa: Identity added: /home/george/.ssh/id_dsa (/home/george/.ssh/id_dsa)
ssh-addで、ssh-agentにパスフレーズを追加記憶させる。
[george@e6850 ~]$ slogin dv6 FreeBSD 7.2-RELEASE (GENERIC) #1: Tue Jun 2 00:04:58 JST 2009 Welcome to FreeBSD! ssh george@dv6 ~ $
記憶させたセッションが続いている限りパスフレーズなしで、隣のマシン(dv6)にログインできる。(scpもパスフレーズなしで可能)
毎回上の操作をするのも面倒なので、ログインシェル実行時に自動的にssh-agentを実行させておくのが良い。
ログインシェルにbashを使っている場合は、 ~/.bash_profile の最後に 以下の記述を追加しておく。
# for ssh-agent exec ssh-agent $SHELL
これで、ログインした時にはssh-agent起動済み、環境変数設定済みの状態でログインシェルが起動している。
あとは ssh-add コマンドでパスフレーズを1回追加すれば、ログインシェルが生きている限りパスフレーズ入力は無用である。
今後はportsからインストールすることが多い。
あらかじめ、以下のコマンドを入力し、packageファイル置き場を作成しておくと、 バイナリパッケージファイルがこのディレクトリ内部に格納される。
mkdir -p /usr/ports/packages
/usr/ports/Mk/bsd.port.mkを見ると、コメントで色々便利そうなターゲットが書いてある。 (つか、230KBもあるMakefileなんて色々おかしいw)
個人的によく使うものは以下。 どれも、cd /usr/ports ; make の後に続けて入力するターゲットである。 (例 cd /usr/ports ; make search key=postfix )
割と便利なシェル。
多機能・高機能路線といえばzshだが、bashは標準的にインストールされる場合も多く、覚えておいて損はない。
cd /usr/ports/shells/bash && make config-recursive && make install package-recursive clean
vipwコマンドで/etc/passwdファイルを編集し、自分のログインシェルをbashに設定しておく。
編集後の/etc/passwdファイルの自分のユーザー部分は以下。
george:*:1001:1001:Jun Obama:/home/george:/usr/local/bin/bash
一時的にroot権限を得るとか、そんな場合に便利。
cd /usr/ports/security/sudo && make config-recursive && make install package-recursive clean
# password timeout is now 16hours. Defaults timestamp_timeout=960 # User privilege specification root ALL=(ALL) ALL george ALL=(ALL) ALL
あまりオススメはしないが、以下のように「NOPASSWD:」を入れておくと、 パスワードなしでsudoできる。
# User privilege specification root ALL=(ALL) NOPASSWD: ALL george ALL=(ALL) NOPASSWD: ALL
変更のあったファイルだけ検出してコピーできる。 バックアップ用途とか、マシン引越し時に便利。
cd /usr/ports/net/rsync && make config-recursive && make install package-recursive clean
rsyncを使って各ユーザーのホームディレクトリを上書きコピーする前に、 今のホームディレクトリをバックアップしておく。
for i in root home/george home/webpub do cp -a /$i /$i-e6850 done
■rsync使い方の例1:
rsync -av -e ssh --delete --exclude .ssh/ root@dv6:/root/ /root/ rsync -av -e ssh --delete --exclude .ssh/ root@dv6:/home/george/ /home/george/ rsync -av -e ssh --delete --exclude .ssh/ root@dv6:/home/webpub/ /home/webpub/
■rsync使い方の例2:
rsync -nav -e ssh --delete --exclude '.*' root@dv6:/root/ /root/ | less rsync -nav -e ssh --delete --exclude '.*' root@dv6:/home/george/ /home/george/ | less rsync -nav -e ssh --delete --exclude '.*' root@dv6:/home/webpub/ /home/webpub/ | less
■rsync使い方の例3:
コピーが必要なディレクトリだけコピーして持ってくる。
for i in bin Mail public_html do rsync -av -e ssh --delete --exclude '.*' root@dv6:/home/george/$i/ /home/george/$i/ done rsync -av -e ssh --delete --exclude '.*' root@dv6:/home/webpub/ /home/webpub/ rsync -av -e ssh --exclude '.*' root@dv6:/home/backup/ /home/backup/
vi系のエディタで、マルチウィンドウをサポートする高機能なvimをインストール。
cd /usr/ports/editors/vim && make config-recursive && make install package-recursive clean
emacsをインストールする。
cd /usr/ports/editors/emacs && make config-recursive && make install package clean
~/.emacsに、以下のような設定を追加する。(EUCを使う場合)
; ; それなりの日本語設定(EUC) ; (set-language-environment "Japanese") (prefer-coding-system 'euc-jp-unix) (if (not window-system) (progn (set-terminal-coding-system 'euc-jp) (set-keyboard-coding-system 'euc-jp) (set-buffer-file-coding-system 'euc-jp) (set-default-coding-systems 'euc-jp) (setq default-buffer-file-coding-systems 'euc-jp) (setq file-name-coding-system 'euc-jp) ) )
UTF-8を使う場合では、以下のような設定となる。
; ; それなりの日本語設定(UTF-8) ; (set-language-environment "Japanese") (prefer-coding-system 'utf-8-unix) (if (not window-system) (progn (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (setq default-buffer-file-coding-system 'utf-8) (setq file-name-coding-system 'utf-8) ) )
その他、こまかい設定を~/.emacsに追記する。
;;; バックアップファイルを作らない (setq backup-inhibited t) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; カーソルの位置が何行目かを表示する (line-number-mode t) ;;; スクロールを一行ずつにする (setq scroll-step 1) ;;; auto-save禁止 (setq auto-save-default nil)
テキストで表示するWebブラウザ(ページャー)
cd /usr/ports/japanese/w3m && make config-recursive && make install package-recursive clean
libiconvでは、Apply patches to fix CP932 add EUCJP-MS にチェックを入れる。
日本語漢字フィルタ。文字コードの変換とかに使う。
cd /usr/ports/japanese/nkf && make install package clean
cd /usr/ports/japanese/man && make install package clean
cd /usr/ports/japanese/man-doc && make install package clean
cd /usr/ports/japanese/today && make install package clean
キーボードタイピングの練習用に。
cd /usr/ports/japanese/typist && make config-recursive && make install package clean
コンパイル時にキーボードの種類を選択。
cd /usr/ports/japanese/scim-anthy && make config-recursive && make install package clean
Remember to set environment variables XMODIFIERS and LANG: csh/tcsh: setenv XMODIFIERS @im=SCIM ; setenv LANG ja_JP.eucJP sh/bash: export XMODIFIERS='@im=SCIM'; export LANG=ja_JP.eucJP To start the SCIM input method daemon, use command: scim -d
Anthy Wiki Emacsから http://anthy.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Emacs%A4%AB%A4%E9
~/.emacs に以下のコードを追加する。
; 日本語をデフォルトにする。 (set-language-environment "Japanese") ; anthy.el をロードできるようにする (必要に応じて)。 (push "/usr/local/share/emacs/site-lisp/anthy/" load-path) ; anthy.el をロードする。 (load-library "anthy") ; japanese-anthy をデフォルトの input-method にする。 (setq default-input-method "japanese-anthy")
Emacs上で動くメールソフト。
cd /usr/ports/mail/wanderlust-devel && make config-recursive && make install clean
インストール後、~/.emacsに以下を追加。
(require 'wanderlust-startup)
設定ファイルのサンプルは /usr/local/share/examples/wanderlust 以下に格納されている。
■インストール
cd /usr/ports/mail/procmail && make config-recursive && make install package clean
■postfix側設定
postfixの設定はこの後行うが、既にpostfixインストール済みの場合は、 /usr/local/etc/postfix/main.cf 内部で、mailbox_commandにprocmailを指定する。
# 各個人のメールボックスに格納する時、procmailを使う mailbox_command = /usr/local/bin/procmail
■procmailマシン共通デフォルト設定 /usr/local/etc/procmailrc
Maildir形式で処理するよう設定する。
SHELL=/bin/sh PATH=/bin:/usr/bin:/usr/local/bin DROPPRIVS=yes MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ #LOGFILE=$MAILDIR/procmail.log #VERBOSE=ON
■procmail個人設定 ~/.forward
~/.forwardに、以下の内容を記載して、メール受信時にprocmailに処理させる。
"| IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75"
Linux系のページを見ていると、最後に#ユーザー名と書いてあるサイトが多いけど、 FreeBSDのman 5 forwardにはそれらしい記載が無い。なんじゃらほい?
■個人設定 ~/.procmailrc
~/.procmailrcに、メールの振り分け処理内容を記載する。
MAILDIR=$HOME/Maildir/ DEFAULT=$MAILDIR LOGFILE=$MAILDIR/procmail.log # ホワイトリストが書いてあるファイルを指定 WHITELIST=$HOME/bin/mail-known-address.txt # メーリングリスト設定例 # FreeBSD-users-jp ML :0 * ^X-sequence: FreeBSD-users-jp .freebsd-users-jp/ # ホワイトリストフィルタ # From:, Reply-To:, Sender:, From のどれかに # ホワイトリストファイルのメールアドレスが含まれていたらメイン受信フォルダへ。 # FreeBSDのgrepは、-E -f fileで1行1拡張正規表現パターンとして検索してくれる。 :0 * ? test -s $WHITELIST * ? (formail -x From: -x Reply-To: -x Sender: -x From | grep -E -f $WHITELIST) $MAILDIR # # 特殊キーワード 6020-5440-3372 を本文に含むメールはメイン受信フォルダ行き # :0B * 6020-5440-3372 $MAILDIR # # iso-2022-jp mail selection # if iso-2022-jp found mail header, go to inbox folder. # :0 * iso-2022-jp .inbox2/ # # iso-2022-jp mail selection # if iso-2022-jp found mail body, go to inbox folder. # :0B * iso-2022-jp .inbox2/ # # iso-2022-jp mail selection # if iso-2022-jp ESC sequence [ESC $ B 〜 ESC ( B] found mail body , # go to inbox folder. # :0B * $\$B.*\(B\$ .inbox2/ # # iso-2022-jp mail selection # if iso-2022-jp ESC sequence [ESC $ B 〜 ESC ( J] found mail body , # go to inbox folder. # :0B * $\$B.*\(J\$ .inbox2/ # # Other mails are sent to trash folder # :0 * .* .trash/
■インストール
cd /usr/ports/mail/fetchmail && make config-recursive && make install package clean
■設定 ~/.fetchmailrc
■テスト
テスト中は、メール取得してもサーバにメールを残す感じで。
fetchmail -v --keep
cd /usr/ports/sysutils/screen && make config-recursive && make install package clean
とりあえず、全部にチェックをいれる。
最初に、javavmwrapperをインストールしておく。
cd /usr/ports/java/javavmwrapper && make install package clean
http://www.freebsdfoundation.org/downloads/java.shtml から diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2 をダウンロードして /usr/ports/distfiles/ 以下にコピー。
http://java.sun.com/javase/downloads/index.jsp から Java SE Timezone Updater 1.4+ v1.3.12 (tzupdater-1_3_12-2009a.zip) をダウンロード。(要 Sun Online Account登録) /usr/ports/distfiles/ 以下にコピー。
http://java.sun.com/javase/downloads/ から、 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6" to obtain the JCE policy file jce_policy-6.zip をダウンロードして、 /usr/ports/distfiles/ 以下にコピー。
cd /usr/ports/java/diablo-jdk16 && make config && make clean install package clean
コンフィギュレーションでは、全部にチェックを入れる。
VNCクライアント専用の仮想Xサーバをメモリ上に作成する。
接続先マシンの実際のグラフィックカードが表示中のXサーバ画面とは関係が無い。 搭載しているビデオカードの解像度には関係なく、メモリさえあれば大きなVNC Server画面を提供することもできる。
cd /usr/ports/net/tightvnc && make config-recursive && make install package-recursive clean
cd /usr/ports/japanese/font-ipa && make config-recursive && make install package-recursive clean
cd /usr/ports/japanese/font-ipaex && make config-recursive && make install package-recursive clean
cd /usr/ports/japanese/font-ipa-uigothic && make config-recursive && make install package-recursive clean
perl用日本語文字コード変換モジュール。
自作のperlスクリプトが使っているのでインストール。
cd /usr/ports/japanese/jcode.pl && make config-recursive && make install package-recursive clean
上のサイトを参考に、bind 9.7.1 のインストール。
cd /usr/ports/dns/bind97 && make config-recursive && make install clean
パッケージインストール時のメッセージ。
************************************************************************* * _ _____ _____ _____ _ _ _____ ___ ___ _ _ * * / \|_ _|_ _| ____| \ | |_ _|_ _/ _ \| \ | | * * / _ \ | | | | | _| | \| | | | | | | | | \| | * * / ___ \| | | | | |___| |\ | | | | | |_| | |\ | * * /_/ \_\_| |_| |_____|_| \_| |_| |___\___/|_| \_| * * * * If you are running BIND 9 in a chroot environment, make * * sure that there is a /dev/random device in the chroot. * * * * BIND 9 also requires configuration of rndc, including a * * "secret" key. The easiest, and most secure way to configure * * rndc is to run 'rndc-confgen -a' to generate the proper conf * * file, with a new random key, and appropriate file permissions. * * * * The /etc/rc.d/named script in the base will do both for you. * * * *************************************************************************
rndcは、BINDに含まれているユーティリティで、ローカルホスト又はリモートホストからのnamed デーモンのコマンドライン管理(start,stop)をするもの。 namedデーモンへの権限のないアクセス防止するために、共有秘密鍵認証を使用している。
■rndc.key , rndc.confの作成と設定
cd /etc/namedb cp -p /etc/namedb/named.conf /etc/namedb/named.conf.org rndc-confgen -a
作成されたrndc.keyの内容は以下のような感じ。
ssh root@e6850 /etc/namedb $ cat rndc.key key "rndc-key" { algorithm hmac-md5; secret "xxxxxxxxxxxxxxxxxxxxxxxx"; };
/usr/local/etc/rndc.conf.sampleを参考に、上で生成されたキーファイルを取り込むように、rndc.confを作成。
options { default-server localhost; default-key "rndc-key"; }; server localhost { key "rndc-key"; }; include "/etc/namedb/rndc.key";
ユーザーbindから読めるようにパーミッションとオーナーを調整
chown bind:wheel /etc/namedb/rndc.key /etc/namedb/rndc.conf chmod 400 /etc/namedb/rndc.key /etc/namedb/rndc.conf
■named.conf編集
DNS設定のコンセプトは以下。
options { directory "/etc/namedb/working"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; listen-on-v6 { none; }; listen-on { 127.0.0.1; 192.168.1.0/24; }; forwarders { 8.8.8.8; }; // Google DNS }; include "/etc/namedb/rndc.key"; controls { inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key"; }; }; view "internal" { match-clients { localnets; }; recursion yes; // The traditional root hints mechanism. zone "." { type hint; file "/etc/namedb/named.root"; }; // RFC 1912 (and BCP 32 for localhost) zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; }; zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; // RFC 1912-style zone for IPv6 localhost address zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; // "This" Network (RFCs 1912 and 3330) zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Link-local/APIPA (RFCs 3330 and 3927) zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // my domain reverse zone "1.168.192.in-addr.arpa" { type master; file "/etc/namedb/master/1.168.192.in-addr.arpa"; }; // my domain zone zone "tokyo3.nerv" { type master; file "/etc/namedb/master/tokyo3.nerv.zone.internal"; }; }; // end of view "internal"
■localhost正引きファイル(/etc/namedb/master/localhost-forward.db )
最初からFreeBSD 8.1にインストールされているものを使用。
$TTL 3h localhost. SOA localhost. nobody.localhost. 42 1d 12h 1w 3h ; Serial, Refresh, Retry, Expire, Neg. cache TTL NS localhost. A 127.0.0.1 AAAA ::1
■localhost逆引きファイル(/etc/namedb/masater/localhost-reverse.db)
最初からFreeBSD 8.1にインストールされているものを使用。
$TTL 3h @ SOA localhost. nobody.localhost. 42 1d 12h 1w 3h ; Serial, Refresh, Retry, Expire, Neg. cache TTL NS localhost. 1.0.0 PTR localhost. 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR localhost.
■"internal"用正引きファイル(/etc/namedb/master/tokyo3.nerv.zone.internal)
$TTL 86400 @ IN SOA e6850.tokyo3.nerv. root.e6850.tokyo3.nerv. ( 2010081400 ;Serial 28800 ;Refresh 7200 ;Retry 604800 ;Expire 86400 ;Minimum ) IN NS e6850.tokyo3.nerv. IN MX 10 e6850.tokyo3.nerv. core2duo IN A 192.168.1.22 e6850 IN A 192.168.1.23 phenomII IN A 192.168.1.25 dv6 IN A 192.168.1.26 lynfield IN A 192.168.1.28
■"internal"用逆引きファイル(/etc/namedb/master/1.168.192.in-addr.arpa)
$TTL 86400 @ IN SOA e6850.tokyo3.nerv. root.e6850.tokyo3.nerv. ( 2010081400 ;Serial 28800 ;Refresh 7200 ;Retry 604800 ;Expire 86400 ;Minimum ) IN NS e6850.tokyo3.nerv. 22 IN PTR core2duo.tokyo3.nerv. 23 IN PTR e6850.tokyo3.nerv. 25 IN PTR phenomII.tokyo3.nerv. 26 IN PTR dv6.tokyo3.nerv. 28 IN PTR lynfield.tokyo3.nerv.
■/etc/rc.conf編集(固定IP化)
ifconfig_msk0="192.168.1.23" defaultrouter="192.168.1.1"
■/etc/resolv.conf編集
nameserver 127.0.0.1
■/etc/rc.conf編集(named有効化)
named_enable="YES" # Run named, the DNS server (or NO). named_program="/usr/local/sbin/named" # Path to named, if you want a different one. named_conf="/etc/namedb/named.conf" # Path to the configuration file #named_flags="" # Use this for flags OTHER than -u and -c named_pidfile="/var/run/named/pid" # Must set this in named.conf as well named_uid="bind" # User to run named as named_chrootdir="/var/named" # Chroot directory (or "" not to auto-chroot it) named_chroot_autoupdate="YES" # Automatically install/update chrooted # components of named. See /etc/rc.d/named. named_symlink_enable="YES" # Symlink the chrooted pid file named_wait="NO" # Wait for working name service before exiting named_wait_host="localhost" # Hostname to check if named_wait is enabled named_auto_forward="NO" # Set up forwarders from /etc/resolv.conf named_auto_forward_only="NO" # Do "forward only" instead of "forward first"
■named起動
/etc/rc.d/named start
自動でchroot環境を作ってくれるので楽だった。
■動作確認
dig @127.0.0.1 tokyo3.nerv soa # SOAレコード確認 dig @127.0.0.1 tokyo3.nerv ns # NSレコード確認 dig @127.0.0.1 localhost # Aレコード確認 dig @127.0.0.1 -x 127.0.0.1 # 逆引き確認 dig @127.0.0.1 e6850.tokyo3.nerv # Aレコード確認 dig @127.0.0.1 -x 192.168.1.23 # 逆引き確認 dig @127.0.0.1 www.freebsd.org # 外部ホスト確認 dig @127.0.0.1 www.yk.rim.or.jp # 外部ホスト確認 dig @127.0.0.1 www.ceres.dti.ne.jp # 外部ホスト確認
postfixを使うかsendmailを使うか悩んだが、とりあえずsendmail.cfの設定から。 freebsd.mcを元に改造をかけてgeorge.mcを作成。
cd /etc/mail cp freebsd.mc george.mc
george.mcへの変更点を差分で示す。
ssh root@e6850 /etc/mail $ diff -uw freebsd.mc george.mc --- freebsd.mc 2010-07-19 11:17:37.000000000 +0900 +++ george.mc 2010-08-08 00:48:55.000000000 +0900 @@ -54,6 +54,14 @@ FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') +MASQUERADE_AS(yk.rim.or.jp)dnl +FEATURE(`masquerade_envelope')dnl +FEATURE(`local_no_masquerade')dnl +FEATURE(`accept_unresolvable_domains')dnl +FEATURE(`accept_unqualified_senders')dnl + +RELAY_DOMAIN(192.168.1)dnl + dnl Uncomment to allow relaying based on your MX records. dnl NOTE: This can allow sites to use your server as a backup MX without dnl your permission. @@ -90,3 +98,11 @@ define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy') MAILER(local) MAILER(smtp) + +dnl enable SMTP-Auth +dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') +dnl enable SMTP-Auth +dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') + +dnl max mail size is 64MB +define(`confMAX_MESSAGE_SIZE',`64485760')
/etc/rc.conf内部にて、以下の設定を記入。 sendmail_enableの意味が変わって、マシン内SMTPをsendmailにさせる場合にYESに設定する。 マシン外部からsendmailでSMTPを受け付ける場合は、sendmail_enable="NO" かつ sendmail_submit_enable="NO" かつ sendmail_outbound_enable="YES" でなければならない。 詳細は man rc.sendmail(8) と /etc/rc.d/sendmail スクリプトを見て欲しい。 (微妙に man rc.sendmail(8)の記述が間違ってる気がする...) あと、 sendmail_outbound_flagsに -bd が抜けていて、デーモン起動しないのでこちらも修正。
# Mail Transfer Agent (MTA) sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="YES" sendmail_outbound_flags="-L sm-queue -bd -q30m" sendmail_msp_queue_enable="YES"
以下のコマンドでsendmail.cfを作成し、インストール。
cd /etc/mail make SENDMAIL_MC=george.mc all install
mtaを再起動。
sh /etc/rc.sendmail restart
さて、動作確認のため、マシン再起動をかけてみたが、sendmail が自動起動しないな・・・なんでだろ?
/etc/rc.d/sendmailの下の方にあるsendmail_outbound_enableのif文を変更する。
ssh root@e6850 ~ $ diff -uw sendmail.orig /etc/rc.d/sendmail --- sendmail.orig 2010-08-08 02:27:24.000000000 +0900 +++ /etc/rc.d/sendmail 2010-08-08 02:30:01.000000000 +0900 @@ -85,9 +85,12 @@ fi if checkyesno sendmail_outbound_enable; then - name="sendmail_outbound" - rcvar=`set_rcvar` + name="sendmail" + rcvar="sendmail_outbound_enable" start_cmd="${command} ${sendmail_outbound_flags}" + start_cmd= + pidfile=${sendmail_pidfile:-/var/run/sendmail.pid} + required_files="/etc/mail/sendmail.cf" run_rc_command "$1" fi ssh root@e6850 ~ $
せっかくsendmail_outbound_enableのif文があるのだが...これじゃ動かないw name=sendmailである必要がある。 pidファイル名とか、/etc/sendmail.cfと/etc/mail/sendmail.cf更新チェックで使っているので。
あと、start_cmdを指定すると、起動時にStarting sendmail.が出ないのと、/etc/defaults/rc.conf内部のsendmail_outbound_flagsに -bd が指定されていないのでデーモン起動しない。
マジでsendmailを外向けMTAとして使っている人って居ないのか。
postfix使うかな...。
postfixはsendmailを置き換えることができるように、コマンド名やオプションなどユーザーに見える部分は似せてあるらしい。 SMTP認証プラグインをプラグインとして追加できる。 dovecotも使える。 今流行のMTA。
cd /usr/ports/mail/postfix && make config-recursive && make install package-recursive clean
上のページを参考に設定開始。
■/usr/local/etc/postfix/main.cf設定
# 各種パス名指定は FreeBSD 8.1 ports/postfix設定に従う queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix data_directory = /var/db/postfix mail_owner = postfix # alias database alias_database = hash:/etc/aliases # alias map alias_maps = hash:/etc/aliases # DynDNSのMXに登録してあるドメイン名 dyndnsdomain = xxxxxxxx.homeip.net # DynDNSのMXに登録してあるメール処理サーバ名 dyndnsMX = xxxxxxxx.homeip.net # ホスト名はLAN側の名前 myhostname = e6850.tokyo3.nerv # ドメイン名はLAN側の名前 mydomain = tokyo3.nerv # 外にメールを出すときに付加するドメイン名は、DynDNS ドメイン名 myorigin = $dyndnsdomain # メール受信TCP socket待ちは全インタフェースで行う inet_interfaces = all # このメールサーバはNATの内側にあるので、WAN側の固定IPアドレスを記載 proxy_interfaces = xx.yyy.zz.ii # このメールサーバがメールを配信する範囲は自マシン、DynDNS MX登録マシン、DynDNSドメイン mydestination = $myhostname, localhost.$mydomain, localhost, $dyndnsdomain, $dyndnsMX # メールを受信する(Rejectしない)宛先一覧。 # UNIXアカウントがある者、エイリアスマップに登録されている者 local_recipient_maps = unix:passwd.byname $alias_maps # メール宛先ユーザーが存在しない場合は、エラーコード 550でRejectする。 unknown_local_recipient_reject_code = 550 # メールのリレーを受け付けるクライアントは、サブネット内に限定 mynetworks_style = subnet # サブネット内の範囲は、192.168.1.* または 127.* とする mynetworks = 192.168.1.0/24, 127.0.0.0/8 # メールのリレーを受け付ける宛先指定。配送先と同じ。 relay_domains = $mydestination # プロバイダのメールサーバにリレーしたい場合は以下。 # relayhost = mail.yk.rim.or.jp # ドメイン名のつけかえ指定。DynDNSの名前とする。個々のマシン名は消えてドメイン名のみ残る。 masquerade_domains = $dyndnsdomain # ドメイン名のつけかえを行う範囲を全部に指定。 # masquerade_classes = envelope_sender, envelope_recipient, header_sender, header_recipient # MailDir形式で、各個人のホームディレクトリにメールを配信する。(var/spool/mailは使わない) home_mailbox = Maildir/ # 各個人のメールボックスに格納する時、procmailを使う mailbox_command = /usr/local/bin/procmail # SMTPのバージョン表示はしない。 smtpd_banner = $myhostname ESMTP $mail_name # メールボックスのサイズ制限(1人) (1GB) mailbox_size_limit = 1073741824 # メールのサイズ制限(1通) (100MB) message_size_limit = 104857600 # Postfix同梱版各種コマンドのパス指定など sendmail_path = /usr/local/sbin/sendmail newaliases_path = /usr/local/bin/newaliases mailq_path = /usr/local/bin/mailq setgid_group = maildrop html_directory = /usr/local/share/doc/postfix manpage_directory = /usr/local/man sample_directory = /usr/local/etc/postfix readme_directory = /usr/local/share/doc/postfix # SMTP-AUTH の設定 SASL経由でDovecot-authを使用 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination # end of file
■/etc/rc.conf設定 sendmail 停止
sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
■/etc/mail/mailer.conf
postfix提供の互換コマンドを使う設定とする
sendmail /usr/local/sbin/sendmail send-mail /usr/local/sbin/sendmail mailq /usr/local/sbin/sendmail newaliases /usr/local/sbin/sendmail
■/etc/aliases設定
postfixはroot権限では動かさないので、Maildir形式の場合、root宛てのメールを配送できない。 (~root/Maildirに書き込めない)
そこで、/etc/aliasesにて、root宛てのメールを一般ユーザー(george)に転送しておく。
# Pretty much everything else in this file points to "root", so # you would do well in either reading root's mailbox or forwarding # root's email from here. # root: me@my.domain root: george
/etc/aliasesを編集した後は、newaliasesコマンドを実行して、aliases.dbファイルを更新する。
newaliases
■/etc/rc.conf設定
postfix_enable="YES"
■postfix起動
/usr/local/etc/rc.d/postfix start
■既存ユーザー用メールディレクトリ作成
mkdir -p /root/Maildir/new mkdir -p /root/Maildir/cur mkdir -p /root/Maildir/tmp chmod -R 700 /root/Maildir for u in george do mkdir -p /home/$u/Maildir/new mkdir -p /home/$u/Maildir/cur mkdir -p /home/$u/Maildir/tmp chmod -R 700 /home/$u/Maildir chown -R $u:$u /home/$u/Maildir done
■新規ユーザー用メールディレクトリ作成
mkdir -p /usr/share/skel/Maildir/new mkdir -p /usr/share/skel/Maildir/cur mkdir -p /usr/share/skel/Maildir/tmp chmod -R 700 /usr/share/skel/Maildir/
■メール中継チェック
spamメールの踏み台になってしまうと、メールサーバがブラックリストに登録され、メールがブロックされてしまう。
以下のサイトなどを使って、自分のメールサーバが中継に使用できないことをチェックしておく。
http://www.abuse.net/relay.html
「Address to test:(as host name or dotted quad)」欄にメールサーバのホスト名、またはIPアドレスを入れ、 「Test for relay」ボタンを押すとリアルタイムでチェックしてくれる。
以下のような表示が最後に出てくれば、メールの中継は許可されていないという意味。
Relay test result All tests performed, no relays accepted.
■Procmail設定
/usr/local/etc/procmailrcを編集。
Maildir形式でメールを受信して書き込む指定を行う。
SHELL=/bin/sh PATH=/bin:/usr/bin:/usr/local/bin DROPPRIVS=yes MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ #LOGFILE=$MAILDIR/procmail.log #VERBOSE=ON
上のサイトを見ながら設定開始。
■dovecot設定
/usr/local/etc/dovecot.confを編集
# Dovecot configuration file # dovecotが提供するサービス(プロトコル) #protocols = imap pop3 imaps pop3s protocols = imap # plain text 認証を禁止する disable_plaintext_auth = yes # SSL/TLS サポートはしない ssl = no # maildir形式を使用。各ユーザのホームディレクトリ直下のMaildirを使用 mail_location = maildir:~/Maildir # メールファイル操作をする時のグループID mail_privileged_group = mail # ファイルロックはO_EXCLを信じる # (O_EXCLはNFS v3上、および、ローカルファイルシステム上で使用できる) dotlock_use_excl = yes # psで見た場合、ユーザー名とIPアドレスを見せる verbose_proctitle = yes # 有効なUIDの範囲 # (FreeBSD 8.xの場合、一般ユーザーは1001から開始) first_valid_uid = 1001 #last_valid_uid = 0 # 有効なGIDの範囲 # (FreeBSD 8.xの場合、一般ユーザーは1001から開始) first_valid_gid = 1001 #last_valid_gid = 0 # メールをコピーする際にハードリンクを使用する maildir_copy_with_hardlinks = yes # imapプロトコルの設定 protocol imap { # メールクライアントのバグ回避 imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep } # pop3プロトコルの設定 protocol pop3 { # UIDLの形式はUW-imap, Courier, Cyrus, tpop3dでバラバラ。以下の設定なら共通で使える。 pop3_uidl_format = %08Xu%08Xv # メールクライアントのバグ回避 pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } # Local Delivery Agent設定 protocol lda { # メール送信に使用するバイナリ。Postfixの方を使用 sendmail_path = /usr/local/sbin/sendmail } # 認証時、ユーザー名の検索は、全部小文字にしてから比較する auth_username_format = %Lu # デフォルトの認証設定 auth default { # 以下から認証方式を選択 # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey # gss-spnego # 注意 : disable_plaintext_auth 設定にも影響を受ける # mechanisms = plain login cram-md5 mechanisms = cram-md5 # パスワードデータベース設定 ファイルを使う passdb passwd-file { args = /usr/local/etc/dovecot.users } # ユーザーデータベース設定 ファイルを使う パスワードと共通 userdb passwd-file { args = /usr/local/etc/dovecot.users } # ユーザーデータベースとパスワードデータベースにアクセスする時のUNIXアカウント # pamとshadowのみrootが必要。 user = root # 認証インタフェースを他のプログラムから使えるようにする socket listen { # Dovecotのlocal delivery agentがメールボックスの位置を知るのに使う master { path = /var/run/dovecot/auth-master mode = 0600 } # postfixからの認証問い合わせを受け付けるためのUNIX domain socket client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } # end of file
■/usr/local/etc/dovecot.users ユーザーデータベース兼パスワードデータベースファイル作成
dovecotpwコマンドを使って、パスワードをハッシュ化して表示
dovecotpw
ssh root@e6850 /usr/local/etc $ dovecotpw Enter new password: Retype new password: {CRAM-MD5}d2xxxxxxx48xxxxxf0cxxxxxxxxxb4xxxxxxxxexxxxxx
ユーザーデータベース兼パスワードファイルを作成する
touch /usr/local/etc/dovecot.users chmod 0600 /usr/local/etc/dovecot.users
先ほど表示したハッシュ化パスワードを 「ユーザー名:ハッシュ済みパスワード:uid:gid:(gecos):ホームディレクトリ:(shell):extra」 の1行形式で/usr/local/etc/dovecot.usersに記載。
george:{CRAM-MD5}d2xxxxxxx48xxxxxf0cxxxxxxxxxb4xxxxxxxxexxxxxx:1001:1001::/home/george::
■/etc/rc.conf設定
dovecot_enable="YES"
■dovecot起動
/usr/local/etc/rc.d/dovecot start
■hald, dbus起動設定 /etc/rc.conf編集
FreeBSD Handbook の記述に従って、以下の記述を/etc/rc.confに追加する。
hald_enable="YES"
追加後、shutdown -r nowする。
haldは、ハードウェア情報収集デーモン。 X serverや、いくつかのソフトからハードウェア情報を得る窓口として使用される場合がある。
もっとも、haldが有効になっていると、こんなキーボードやマウスは知らないから無視するよ!などと、かえってソフトが動作しない場合もあり、必須というわけではない。
最近では、HALは旧式のものとみなされており、使わない方向のLinuxディストリビューションが多いらしい。
FreeBSD Handbook の記述に従って、以下の記述を/etc/rc.confに追加する。
dbus_enable="YES"
追加後、shutdown -r nowする。
dbusはX11アプリケーション間メッセージ通信用のデーモン。 これは有効にしておいて良いと思う。
さすがに全部コンパイルするのは大変なので、バイナリパッケージを使うと良い。
pkg_add -r xorg
全部コンパイルする場合は以下。
cd /usr/ports/x11/xorg && make install clean
■X11の設定。
Xorg -configure
Xorg -configure を実行すると、グラフィックカード情報などを調査して、/root/xorg.conf.new を作成してくれる。
/root/xorg.conf.new を適当に編集した後、/etc/X11/xorg.confにコピーしてXサーバの表示テストを行う。
Xサーバの表示テストを行う場合は、 -retro オプションを付けるのが良いらしい。 -retroをつけないと、真っ黒な画面しか出なくて、動いているのかわからない。
Xorg -config /etc/X11/xorg.conf -retro
動いていれば、白黒ドット模様の背景に×マークのマウスカーソルが表示される。
■キーボードやマウスが動かない場合
/var/log/X.log.0に以下のような警告メッセージが出て、キーボードとマウスが効かない場合は、
(WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled. (WW) Disabling Mouse0 (WW) Disabling Keyboard0
/etc/X11/xorg.confに以下のように記載し、HAL(hald)で得た情報を無視させる。
Section "ServerFlags" # pattern(3) do not use HAL Option "AutoAddDevices" "False" Option "AutoEnableDevices" "False" Option "AllowEmptyInput" "False" EndSection
というわけで、できあがった/etc/X11/xorg.confは以下。
e6850用(Radeon HD 4850)
ちなみに、ウチではvesaでないとうまく動作しなかった。
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "ServerFlags" # pattern(3) do not use HAL Option "AutoAddDevices" "False" Option "AutoEnableDevices" "False" Option "AllowEmptyInput" "False" EndSection Section "Files" ModulePath "/usr/local/lib/xorg/modules" FontPath "/usr/local/lib/X11/fonts/misc/" FontPath "/usr/local/lib/X11/fonts/TTF/" FontPath "/usr/local/lib/X11/fonts/OTF" FontPath "/usr/local/lib/X11/fonts/Type1/" FontPath "/usr/local/lib/X11/fonts/100dpi/" FontPath "/usr/local/lib/X11/fonts/75dpi/" EndSection Section "Module" Load "extmod" Load "record" Load "dbe" Load "glx" Load "dri" Load "dri2" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" #DisplaySize 410 310 # mm Identifier "Monitor0" VendorName "DEL" ModelName "DELL 2001FP" HorizSync 31.0 - 80.0 VertRefresh 56.0 - 76.0 Option "DPMS" EndSection Section "Device" ### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional #Option "NoAccel" # [<bool>] #Option "SWcursor" # [<bool>] #Option "Dac6Bit" # [<bool>] #Option "Dac8Bit" # [<bool>] #Option "BusType" # [<str>] #Option "CPPIOMode" # [<bool>] #Option "CPusecTimeout" # <i> #Option "AGPMode" # <i> #Option "AGPFastWrite" # [<bool>] #Option "AGPSize" # <i> #Option "GARTSize" # <i> #Option "RingSize" # <i> #Option "BufferSize" # <i> #Option "EnableDepthMoves" # [<bool>] #Option "EnablePageFlip" # [<bool>] #Option "NoBackBuffer" # [<bool>] #Option "DMAForXv" # [<bool>] #Option "FBTexPercent" # <i> #Option "DepthBits" # <i> #Option "PCIAPERSize" # <i> #Option "AccelDFS" # [<bool>] #Option "IgnoreEDID" # [<bool>] #Option "CustomEDID" # [<str>] #Option "DisplayPriority" # [<str>] #Option "PanelSize" # [<str>] #Option "ForceMinDotClock" # <freq> #Option "ColorTiling" # [<bool>] #Option "VideoKey" # <i> #Option "RageTheatreCrystal" # <i> #Option "RageTheatreTunerPort" # <i> #Option "RageTheatreCompositePort" # <i> #Option "RageTheatreSVideoPort" # <i> #Option "TunerType" # <i> #Option "RageTheatreMicrocPath" # <str> #Option "RageTheatreMicrocType" # <str> #Option "ScalerWidth" # <i> #Option "RenderAccel" # [<bool>] #Option "SubPixelOrder" # [<str>] #Option "ShowCache" # [<bool>] #Option "ClockGating" # [<bool>] #Option "VGAAccess" # [<bool>] #Option "ReverseDDC" # [<bool>] #Option "LVDSProbePLL" # [<bool>] #Option "AccelMethod" # <str> #Option "DRI" # [<bool>] #Option "ConnectorTable" # <str> #Option "DefaultConnectorTable" # [<bool>] #Option "DefaultTMDSPLL" # [<bool>] #Option "TVDACLoadDetect" # [<bool>] #Option "ForceTVOut" # [<bool>] #Option "TVStandard" # <str> #Option "IgnoreLidStatus" # [<bool>] #Option "DefaultTVDACAdj" # [<bool>] #Option "Int10" # [<bool>] #Option "EXAVSync" # [<bool>] #Option "ATOMTVOut" # [<bool>] #Option "R4xxATOM" # [<bool>] #Option "ForceLowPowerMode" # [<bool>] #Option "DynamicPM" # [<bool>] #Option "NewPLL" # [<bool>] #Option "ZaphodHeads" # <str> Identifier "Card0" # Driver "radeonhd" Driver "vesa" # Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV770 [Radeon HD 4850]" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Viewport 0 0 Depth 24 Modes "1600x1200" # Modes "1024x768" EndSubSection EndSection
startx で試しに起動。ウィンドウマネージャはtwm、xtermが3個、xclockがインストール済みならxclockが起動するはず。
一番大きなxtermをexitすればXサーバも終了する。
軽量なデスクトップ環境 xfce4 。 xfce バージョン4からはGtk2+で書き直されたらしい。
さすがにこれはコンパイルするには大物すぎるので、バイナリパッケージを使う。
pkg_add -r xfce4
コンパイルする場合は以下。
cd /usr/ports/x11-wm/xfce4 && make install clean
startxfce4で実行。
xfce4でソフトウェアを起動するときは、デスクトップを右クリックしてGNOMEメニューから選択するか、 画面左下のxfceメニューから選択する。
rubyで書かれたports支援ツール。
インストールされた全てのports/packagesを再ビルドすることもできる。
cd /usr/ports/ports-mgmt/portupgrade && make config-recursive && make install clean
使用例をいくつか以下に示す。
# xfce4と名前の付いたパッケージを再ビルド&インストールする portupgrade --force --force-config --package xfce4 portupgrade --force --force-config --package twm portupgrade --force --force-config --package emacs portupgrade --force --force-config --package gnome2 portupgrade --force --force-config --package xorg portupgrade --force --force-config --package -R hal # xfce4と名前の付いたパッケージを再ビルド&インストールする portupgrade --force --force-config --package --recursive xfce4 # インストールされた全てのports/packagesを再ビルドする portupgrade --all --force --force-config --package --recursive
これは大物なので、コンパイル済みのバイナリパッケージを使う。
pkg_add -r gnome2
■ ~/.xinitrcの配置
ホームディレクトリに.xinitrcが無い場合は、/usr/X11R6/lib/X11/xinit/xinitrcをコピーする。
cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc
■ ~/.xinitrcの変更
~/.xinitrcの以下の部分をすべてコメントにする。
#twm & #xclock -geometry 50x50-1+1 & #xterm -geometry 80x50+494+51 & #xterm -geometry 80x20+494-0 & #exec xterm -geometry 80x66+0+0 -name login
更に、最下行に以下を追加する。
exec gnome-session
■gnome2 実行
startx
でXが起動し、gnome2になる。
cd /usr/ports/www/apache22 && make config-recursive && make install package clean
コンフィギュレーションは、デフォルトのまま。
/etc/rc.confに、以下の内容を追記。
# for apache 2.2 apache22_enable="YES" apache22_http_accept_enable="YES"
/usr/local/etc/apache22/httpd.confの編集 以下の内容を記述する。
ServerName e6850.tokyo3.nerv:80
apache設定ファイルの文法チェックを行う。
apachectl configtest
apacheを起動する。
/usr/local/etc/rc.d/apache22 start
試験アクセスを行う。apacheが動作している場合は、It works!と表示される。
http://e6850.tokyo3.nerv/ http://dv6.tokyo3.nerv/
ログファイルの分割設定
/etc/newsyslog.confを編集して、以下の行を追加する。
後でヴァーチャルホスト設定を行うので、ここではまとめて色々追加している。
/var/log/httpd-access.log 644 12 100 @01T00 B /var/run/httpd.pid 30 /var/log/httpd-error.log 600 12 100 @01T01 B /var/run/httpd.pid 30 /var/log/e6850.tokyo3.nerv-access.log 644 12 100 @01T04 B /var/run/httpd.pid 30 /var/log/e6850.tokyo3.nerv-error.log 600 12 100 @01T05 B /var/run/httpd.pid 30
robots.txtを設置する。
cat > /usr/local/www/apache22/data/robots.txt << "EOF" User-Agent: * Disallow: / EOF
cd /usr/ports/www/tomcat6 && make install package clean
/etc/rc.confに、以下の内容を追記。
今回はopenjdk6でtomcatを動かす。
# for tomcat 6.0 tomcat60_enable="YES" tomcat60_java_home="/usr/local/diablo-jdk1.6.0" tomcat60_java_home="/usr/local/openjdk6/" tomcat60_java_os="native" tomcat60_java_vendor="freebsd"
/usr/local/apache-tomcat6.0/conf/tomcat-users.xmlを変更し、tomcat管理人のロール(admin)とパスワード(xxxxxxxx)を記入しておく。
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <role rolename="admin"/> <user username="admin" password="xxxxxxxx" fullName="" roles="admin,manager"/> </tomcat-users>
/usr/local/apache-tomcat6.0/conf/server.xmlにて、アクセスログを取るように設定する。
ここでは、Host name=localhostタグの中にあるValveタグのコメントを外して有効にする。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> (...中略...) <!-- (←この行を削除) <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> --> (←この行を削除)
ファイルのパーミッションなど確認。
tomcat 6は、ユーザー:グループ www:wwwで動作するようにインストールされるため、設定ファイルが読めなくて起動失敗することが昔のportsであったので。
tomcat 6を起動する
/usr/local/etc/rc.d/tomcat6 start
試験アクセスを行う。
http://e6850.tokyo3.nerv:8180/ http://e6850.tokyo3.nerv:8180/index.jsp http://e6850.tokyo3.nerv:8180/docs/
http://core2duo.tokyo3.nerv:8180/ http://core2duo.tokyo3.nerv:8180/index.jsp http://core2duo.tokyo3.nerv:8180/docs/
http://dv6.tokyo3.nerv:8180/ http://dv6.tokyo3.nerv:8180/index.jsp http://dv6.tokyo3.nerv:8180/docs/
portsからTomcatをインストールした場合、TomcatへのHTTP接続ポート番号は8180となる。 (ポート番号8080は、HTTP PROXYソフトが使う場合が多いため)
/usr/local/etc/rc.d/tomcat6の編集
マジ邪道だが、Tomcatを動かすロケールを日本語に設定する行を追加する。
export LANG=ja_JP.eucJP
Apache 2.2とtomcatの間を取り持つ「mod_jk」のインストール
cd /usr/ports/www/mod_jk-apache2 && make install package clean
/usr/local/etc/apache22/mod_jk.confの編集
/usr/local/etc/apache22/mod_jk.conf.sampleを元に作る。 jsp-hostnameとなっている部分を、localhostに変更する。 Tomcatに処理させたいURLのWebアプリ名と、転送先のホスト名をJkMountで指定する。
<IfModule mod_jk.c> JkWorkersFile etc/apache22/workers.properties JkLogFile /var/log/jk.log JkShmFile /var/log/jk-runtime-status JkLogLevel error # Sample JkMounts. Replace these with the paths you would # like to mount from your JSP server. # JkMount /*.jsp localhost JkMount /docs/* localhost </IfModule>
/usr/local/etc/apache22/workers.propertiesの編集
/usr/local/etc/apache22/workers.properties.sampleを元に作る。 jsp-hostnameとなっている部分を、localhostに変更する。
worker.list=localhost worker.localhost.port=8009 worker.localhost.host=localhost worker.localhost.type=ajp13 worker.localhost.lbfactor=1
/usr/local/etc/apache22/httpd.confを編集して、以下の記述を追加する。
LoadModule jk_module libexec/apache22/mod_jk.so <IfModule jk_module> # mod_jk settings Include etc/apache22/mod_jk.conf </IfModule>
apache設定ファイルの文法チェックを行う。
apachectl configtest
apacheを再起動する。
/usr/local/etc/rc.d/apache22 restart
試験アクセスを行う。
http://e6850.tokyo3.nerv/ こちらは Apache の It works! 表示 http://e6850.tokyo3.nerv/docs/ こちらは Tomcat のドキュメント表示
http://core2duo.tokyo3.nerv/ http://core2duo.tokyo3.nerv/docs/
http://dv6.tokyo3.nerv/ http://dv6.tokyo3.nerv/docs/
【解説】 ポート番号を指定していないので、ポート番号はデフォルトの80番でapacheにアクセスする。 JkMount指定により /docs/ の場合、ApacheはTomcatに処理を回送している。
Tomcatにありがちなセキュリティリスクの改善 http://www.atmarkit.co.jp/fjava/rensai4/safetomcat_04/safetomcat_04_4.html
■/usr/local/apache-tomcat-6.0/conf/Catalina/localhost/manager.xml の編集
アクセス制限の指定は、/usr/local/apache-tomcat6.0/conf以下のディレクトリに [Engine名]/[Host名]のディレクトリが用意されているので、 その下のmanager.xmlを以下のように記述する。
ここでは、192.168.1.0/24のアドレスからのアクセスのみを受け付けるように設定する。
<?xml version="1.0" encoding="UTF-8"?> <Context antiResourceLocking="false" privileged="true" path="/manager" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="192.168.1.*" /> </Context>
Tomcatを再起動する。
/usr/local/etc/rc.d/tomcat6 restart
管理マネージャを見る
/usr/local/etc/apache22/httpd.conf を編集する。
いくつかの掲示板スクリプトとwikiスクリプトをディレクトリ指定だけで起動するように設定する。
# # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # <IfModule dir_module> DirectoryIndex index.html wiki.cgi cyclamen.cgi </IfModule>
拡張子がcgiの場合、スクリプトとして起動する。 拡張子がshtmlの場合、SSIを処理する。
<IfModule mime_module> AddHandler cgi-script .cgi AddType text/html .shtml AddOutputFilter INCLUDES .shtml </IfModule>
MIME type設定を有効に。
MIMEMagicFile etc/apache22/magic
言語設定は有効に。
# Language settings Include etc/apache22/extra/httpd-languages.conf
各種デフォルト設定を読み込む行を有効に。
# Various default settings Include etc/apache22/extra/httpd-default.conf
ここまでの設定をテストする。
apachectl configtest
問題が無いようなら、apacheを再起動する。
apachectl restart
http://kazmax.zpp.jp/apache/apache4.htmlを参考に、名前ベースのVirtualHostを設定してみる。
/usr/local/etc/apache22/httpd.conf を編集し、Virtual Host設定ファイルの読み込みを有効にする。
# Virtual hosts Include etc/apache22/extra/httpd-vhosts.conf
VirtualHostの設定ファイルを設定する。
/usr/local/etc/apache22/extra/httpd-vhosts.confファイルを編集。
注意:VirtualHostを有効にした場合、VirtualHostではない箇所で設定した公開URLに関する設定は基本的に無視される。 VirtualHost内部で、VirtualHost毎に設定を記載する必要がある。
UserDirの指定については下のサイト参照。
ここでは一個しか<VirtualHost>〜</VirtualHost>を書いていないのでありがたみが無いが、 DynDNS名からのアクセスを自宅用とは別設定にしたい時には便利なものだ。
# # Virtual Hosts # # If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn't need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at # <URL:http://httpd.apache.org/docs/2.2/vhosts/> # for further details before you try to setup virtual hosts. # # You may use the command line option '-S' to verify your virtual host # configuration. # # Use name-based virtual hosting. # NameVirtualHost *:80 # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # <VirtualHost *:80> ServerAdmin george@yk.rim.or.jp DocumentRoot "/usr/local/www/apache22/data" ServerName e6850.tokyo3.nerv ServerAlias e6850 ErrorLog "/var/log/e6850.tokyo3.nerv-error_log" CustomLog "/var/log/e6850.tokyo3.nerv-access_log" common # UserDir UserDir public_html UserDir disabled UserDir enabled george webpub # Directory settings (george, webpub) <Directory "/home/george/public_html"> AllowOverride FileInfo AuthConfig Limit Options MultiViews SymLinksIfOwnerMatch Includes ExecCGI XBitHack full # Access control Order allow,deny Allow from 127.0.0.1 Allow from localhost Allow from 192.168.1.30 Allow from 192.168.1.29 Allow from 192.168.1.28 Allow from 192.168.1.27 Allow from 192.168.1.26 Allow from 192.168.1.25 Allow from 192.168.1.24 Allow from 192.168.1.23 Allow from 192.168.1.22 </Directory> # Directory settings (webpub) <Directory "/home/webpub/public_html"> AllowOverride FileInfo AuthConfig Limit Options MultiViews SymLinksIfOwnerMatch Includes ExecCGI XBitHack full # Access control Order allow,deny Allow from all </Directory> # for tomcat <IfModule mod_jk.c> JkLogFile /var/log/e6850.tokyo3.nerv-jk.log JkMount /docs/* localhost </IfModule> </VirtualHost>
ここまでの設定をテストする。
apachectl configtest
問題が無いようなら、apacheを再起動する。
/usr/local/etc/rc.d/apache22 restart
アクセステスト
e6850.tokyo3.nerv名義では、アクセスを許可する。 http://e6850.tokyo3.nerv/ http://e6850.tokyo3.nerv/~george/ http://e6850.tokyo3.nerv/~george/jindex.html http://e6850.tokyo3.nerv/~george/jdiary_last.html
IPアドレス指定では...アクセスできちゃうなw http://192.168.1.23/ http://192.168.1.23/~george/ http://192.168.1.23/~george/jindex.html
アクセステスト(CGI)
http://e6850.tokyo3.nerv/~george/cgi-bin/ http://e6850.tokyo3.nerv/~george/cgi-bin/env.cgi
掲示板テスト(CGI)
http://e6850.tokyo3.nerv/~george/cgi-bin/cyclamen/ http://e6850.tokyo3.nerv/~george/cgi-bin/freestylewiki/ http://e6850.tokyo3.nerv/~george/cgi-bin/usemodwiki/ http://e6850.tokyo3.nerv/~george/cgi-bin/WalWiki2/
JSP/Servletテスト
http://e6850.tokyo3.nerv:8180/ http://e6850.tokyo3.nerv/docs/
■インストール
cd /usr/ports/www/wwwoffle && make install package clean
■設定ファイル編集
/usr/local/etc/wwwoffle.confを編集する。 ここでは、purge条件にmtimeを使用するため、use-mtime=yesとし、個別URLでpurgeするため、use-url=yesとする設定を行う。
ssh root@e6850 /usr/local/etc $ rcsdiff -r1.1 -u wwwoffle.conf =================================================================== RCS file: wwwoffle.conf,v retrieving revision 1.1 diff -u -r1.1 wwwoffle.conf --- wwwoffle.conf 2010/10/09 18:01:07 1.1 +++ wwwoffle.conf 2010/10/09 18:15:54 @@ -139,8 +139,8 @@ password = none - max-servers = 8 - max-fetch-servers = 4 + max-servers = 4 + max-fetch-servers = 2 } @@ -535,15 +535,15 @@ iframes = yes - scripts = no + scripts = yes - objects = no + objects = yes webbug-images = yes - icon-images = no + icon-images = yes - only-same-host-images = no + only-same-host-images = yes } @@ -779,6 +779,8 @@ { localhost 127.0.0.1 + e6850 + e6850.tokyo3.nerv ::ffff:127.0.0.1 @@ -837,7 +839,7 @@ AllowedConnectHosts { - +127.0.0.1 #### Example #### # Only allow connections from hosts in the foo.com domain. # *.foo.com @@ -1299,12 +1301,12 @@ Purge { - use-mtime = no + use-mtime = yes max-size = -1 min-free = -1 - use-url = no + use-url = yes del-dontget = yes del-dontcache = yes ssh root@e6850 /usr/local/etc $
■/etc/rc.conf編集
/etc/rc.confに以下の行を追加する。
# for wwwoffle wwwoffled_enable="YES"
■起動
/usr/local/etc/rc.d/wwwoffled start
■動作確認
環境変数 HTTP_PROXY に、wwwoffle待ち受けポートを指定し、proxyとして使用する。 wwwoffleをオンラインモード(要求されたデータはすぐに取りに行く)にして、ブラウザを起動。
export HTTP_PROXY=http://localhost:8080/ wwwoffle -online w3m http://www.yk.rim.or.jp/~george/
wwwoffleをオフラインモード(要求されたデータがあれば返してくる。無ければ取得予約)にして、ブラウザを起動。
wwwoffle -offline w3m http://www.yk.rim.or.jp/~george/
環境変数 HTTP_PROXYを解除する。
unset HTTP_PROXY
■ 概要
■ 参考
■ インストール
gnome2をインストールした後だと、自動的にインストールされているが、 UTILSが入っていない(ldbsearchなどがインストールされていない)
make config では、UTILSにチェックを入れて、再インストールする。
cd /usr/ports/net/samba4-devel && make config && make deinstall reinstall clean
■ グループ users の作成
provisionコマンドは、グループ users が必要らしい。
ここでは、pw(8)を使ってグループ users を作成し、georgeを所属させておく。
pw groupadd -n users -g 2001 -M george
■ 設定 provisionコマンド
samba4では、/usr/local/sbin/provisionコマンドを使って 設定ファイルの雛形を作成したり、LDAPの初期登録データを作成したりする。
オプション指定はたくさんあるので、provision --helpで見物しておくと良い。
provision --realm=tokyo3.nerv \ --domain=tokyo3 \ --adminpass=secret \ --server-role=standalone \ --setupdir=/usr/local/share/samba4/setup
FreeBSD 8.1のportsでインストールした場合、設定ファイルは /usr/local/etc/smb4.conf に。 LDAPデータなどは /var/db/samba4/private/ 以下に作成されている。
provision実行時の様子。
ssh root@e6850 /usr/ports/net/samba4-devel $ provision --realm=tokyo3.nerv \ > --domain=tokyo3 \ > --adminpass=secret \ > --server-role=standalone \ > --setupdir=/usr/local/share/samba4/setup Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=E6850 pdc_fsmo_init: no domain object present: (skip loading of domain details) Adding configuration container naming_fsmo_init: no partitions dn present: (skip loading of naming contexts details) Setting up sam.ldb schema Reopening sam.ldb with new schema naming_fsmo_init: no partitions dn present: (skip loading of naming contexts details) Setting up sam.ldb configuration data Setting up display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up sam.ldb users and groups Setting up self join Setting up sam.ldb rootDSE marking as synchronized Please install the phpLDAPadmin configuration located at /var/db/samba4/private/phpldapadmin-config.php into /etc/phpldapadmin/config.php Once the above files are installed, your Samba4 server will be ready to use Server Role: standalone Hostname: e6850 NetBIOS Domain: E6850 DNS Domain: tokyo3.nerv DOMAIN SID: S-1-5-21-1891439357-3798478124-1179405570 Admin password: secret ssh root@e6850 /usr/ports/net/samba4-devel $
■ /usr/local/etc/smb4.conf の設定
ウチの場合、ワークグループ名はWORKGROUPにした。
自分のホームディレクトリを公開してみた。
samba4に登録したユーザーは自分だけなのでこんなんでいいけど、 ユーザー別に違うディレクトリをアクセス可能にする設定方法は不明。
Samba3系とは異なり、特殊セクション[homes]は動かないようだ。
ssh root@e6850 ~ $ cat /usr/local/etc/smb4.conf [globals] netbios name = E6850 workgroup = WORKGROUP realm = TOKYO3.NERV server role = standalone [george] path = /home/george comment = george's home directory read only = no ; ; end of file ;
■ 設定ファイルのチェック
■ /etc/rc.conf編集。以下の設定を追加。
# for samba 4 samba4_enable="YES" samba4_config="/usr/local/etc/smb4.conf"
■ sambaサーバを開始
/usr/local/etc/rc.d/samba4 start
■ smbclient で試験アクセス
smbclient -L localhost -U%
standaloneモードだと、netlogonとかsysvolが表示されてなくて寂しい。
ssh root@e6850 ~ $ smbclient -L localhost -U% Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.0.0alpha11) ADMIN$ Disk DISK Service (Samba 4.0.0alpha11) REWRITE: list servers not implemented ssh root@e6850 ~ $
■ ユーザー登録
Active Directoryドメインで管理されているWindowsと同じく、 コマンドラインからnet newuser ユーザー名などと入力する。
パスワードを聞いてくるので、入力する。
ssh root@e6850 ~ $ net newuser george New Password: ssh root@e6850 ~ $ net enableaccount george ssh root@e6850 ~ $
■ smbclient で試験アクセス
ssh root@e6850 ~ $ smbclient //localhost/george/ -Ugeorge Password for [WORKGROUP\george]: smb: \> pwd Current directory is \ smb: \> ls . D 0 Sun Oct 24 06:02:09 2010 .. D 0 Sun Aug 15 18:28:11 2010 .ssh D 0 Sat Aug 7 15:13:12 2010 .login 258 Sat Dec 27 08:40:36 2008 .mail_aliases 379 Sat Dec 27 08:40:36 2008 .login_conf 167 Sat Dec 27 08:40:36 2008 .cshrc 759 Sat Aug 7 21:59:41 2010 .mailrc R 309 Sat Aug 7 22:04:09 2010 .profile R 1008 Sat Aug 7 22:04:37 2010 .shrc R 990 Sat Aug 7 22:05:15 2010 .rhosts R 284 Sat Aug 7 22:05:01 2010 .bash_history 24319 Sun Oct 24 04:03:23 2010 .cache D 0 Fri Jan 9 01:59:39 2009 .config D 0 Sun Oct 10 03:45:34 2010 .emacs.d D 0 Fri Jan 23 20:43:01 2009 ...skip 1320252204 blocks of size 512. 1154466384 blocks available smb: \> q ssh root@e6850 ~ $
■ Windowsから試験アクセス
\\e6850\george\
■ ユーザーgeorgeのパスワード変更
net setpassword george
「New Password: 」と表示されるので、ユーザーgeorge用の新しいパスワードを入力。
■ ユーザーgeorgeの有効期限設定(うまく動いていない....)
net setexpiry george --days=365
■ 余談 LDAPエントリの確認
make config にてUTILSを有効にしてインストールしている場合は、 LDAP エントリを見物できる。
ldbsearch -H /var/db/samba4/private/sam.ldb
以下はユーザーgeorgeのエントリを抜粋。 本当にLDAPしてるなぁ。
# record 132 dn: CN=george,CN=Users,DC=E6850 objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: george instanceType: 4 whenCreated: 20101023190047.0Z uSNCreated: 3577 name: george (後略)