• Samba3で一般的なファイルサーバー構築完全版 – その他設定 p.3

    << | 1 | 2 | 3 |

    前回でSambaサーバー自体の設定は完了しました。

    今回は、iptables設定や自動起動スクリプトの設置等、まわりの設定を行っていきます。

    (CentOS / Fedora / RH*の方のみ)
    まずは、使用するポートを開けましょう。

    使用するポートは、次の4つです。

    nmbd : 137/UDP、138/UDP
    smbd : 139/TCP、445/TCP

    nmbdは、マイネットワークでマシンをブラウジングする機能を提供します。
    smbdは、本来のファイル転送の機能を提供します。
    ファイル転送のみであれば、139/TCP(もしくは445/TCP)のみを開けば機能します。

    私は普段NetBIOS over TCP/IPしか使わないので139/TCPのみしか開放していませんが、4つ全てのポートを開けておけば確実でしょう。今回は紹介しませんが、SWATを利用される場合は 901/TCP も開いておきましょう。

    ■ iptablesの設定 (CentOS / Fedora / RH*)

    # vi /etc/sysconfig/iptables

    この行を追加
    ・ /etc/sysconfig/iptables

    18
    19
    20
    21
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT
    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

    SWAT利用の場合は901/TCPも

    18
    19
    20
    21
    22
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j ACCEPT
    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    # service iptables restart

    ■ ライブラリのパスを通す (CentOS / Fedora / RH*)

    ここまで来たら後はsambaを起動するだけですが、configure オプションに –prefixを設定したのでライブラリのパスが通っていない可能性があります。

    試しに nmbd を起動してみて次のようなエラーが出たらパスを通しましょう。

    # /usr/local/samba3/sbin/nmbd
    /usr/local/samba3/sbin/nmbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory

    ライブラリのパスを通す。

    (CentOS / Fedora / RH*)
    # echo "/usr/local/samba3/lib" > /etc/ld.so.conf.d/samba.conf # ライブラリのパスを設定
    # ldconfig # パスをキャッシュ化する。 # 設定したパスを通す

    パスを通したら起動できるかを確認。
    無事にライブラリが読み込まれると起動します。

    # /usr/local/samba3/sbin/nmbd

    何も表示されなければ起動してます。
    起動したら止めておいてください。

    # killall nmbd

    ■ 動作確認

    nmbd、smbd を起動します。

    # /usr/local/samba3/sbin/nmbd
    # /usr/local/samba3/sbin/smbd

    起動したらWindowsからアクセスしてみます。
    マイコンピュータかIEを開いてアドレスバーのところに次のように入力します。

    \\[sambaサーバーのIPアドレス]\

    既にファイルサーバーとして機能するはずです。

    プロセスは一度落としておきます。

    # killall nmbd smbd

    ■ 自動起動スクリプト

    ■ OS起動時に起動してくれさえすればいい場合 (RHクローン/*Linux/*BSD)

    ・ vi /etc/rc.local

    09
    10
    11
    12
    13
    14
    15
    16
    # nmbd
    if [ -x /usr/local/samba3/sbin/nmbd ]; then
      /usr/local/samba3/sbin/nmbd -D
    fi
    # smbd
    if [ -x /usr/local/samba3/sbin/smbd ]; then
      /usr/local/samba3/sbin/smbd -D
    fi

    ■ RHのクローンをお使いでchkconfigでプロセスを管理したい場合。

    chkconfig用の起動スクリプト作成。

    ・ vi /etc/rc.d/init.d/samba

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #!/bin/sh
    #
    # Startup script for samba
    #
    # chkconfig: 345 85 15
    # description: samba
     
    # Source function library.
    . /etc/rc.d/init.d/functions
     
    SMBD='/usr/local/samba3/sbin/smbd'
    NMBD='/usr/local/samba3/sbin/nmbd'
     
    SMBPID='/usr/local/samba3/var/locks/smbd.pid'
    NMBPID='/usr/local/samba3/var/locks/nmbd.pid'
     
    case "$1" in
    start)
      echo -n "Starting samba"
      $SMBD -D
      $NMBD -D
      echo
      ;;
    stop)
      echo -n "Shutting down samba"
      PIDS=`cat $SMBPID`
      PIDS="${PIDS} `cat $NMBPID`"
      kill $PIDS
      echo
      ;;
    restart)
      $0 stop
      $0 start
      ;;
    *)
      echo "Usage: $0 {start|stop|restart}"
     
    exit 1
      esac
     
    exit 0
    # chmod +x /etc/rc.d/init.d/samba
    # chkconfig --add samba # chkconfigに追加
    # service samba start # 起動してみる
    # ps ax | grep samba # 起動できてる?
    1737 ? Ss 0:00 /usr/local/samba3/sbin/smbd -D
    1739 ? Ss 0:00 /usr/local/samba3/sbin/nmbd -D
    1740 ? S 0:00 /usr/local/samba3/sbin/smbd -D
    1742 pts/0 S+ 0:00 grep samba
     
    # chkconfig samba on  # OS 起動時に service samba start を実行

    これで一通り作業は終了です。

    # service samba start
    # service samba stop

    でプロセスを管理できます。

    << | 1 | 2 | 3 |


  • Samba3で一般的なファイルサーバー構築完全版 – smb.conf設定 p.2

    << | 1 | 2 | 3 | >>

    Samba サーバーの設定に入ります。
    前回で SWAT も同時にインストールしましたが使いません。

    今回は、基本的なファイルサーバーを構築するのに最低限必要なパラメータのみしか設定しませんので、空のファイルから作成します。サーバーアプリケーションの本質/構造を手っ取り早く理解する為にもそちらの方が良いです。

    英語で説明が書かれたサンプルも用意されています。
    ./samba-3.2.7/examples/smb.conf.default

    ■ Samba用UNIXユーザの追加

    ファイルサーバー用にUNIXユーザーを追加します。
    ここで追加するユーザーは、ファイルがアップロードされた時にそのファイルの所有者として設定されます。
    ファイルサーバーのパス(ドキュメントルート)もこのユーザのホームディレクトリ内に設置することとします。

    # adduser -u 200 -d /home/samba samba

    ・共有フォルダ作成

    # mkdir /home/samba/public
    # chown samba /home/samba/public
    # chgrp samba /home/samba/public

    もし /var/samba/public ディレクトリをファイルサーバーのドキュメントディレクトリとしたければ、samba ユーザのホームディレクトリを /var/samba としてください。

    (/var/samba/public をドキュメントルートとする場合)
    # adduser -u 200 -d /var/samba samba
    # mkdir /var/samba/public
    # chown samba /var/samba/public
    # chgrp samba /var/samba/public

    ■ ログディレクトリの作成

    # mkdir /var/log/samba

    ■ 設定ファイルの作成

    # vi /usr/local/samba3/lib/smb.conf

    取り合えず完成形。

    ・/usr/local/samba3/lib/smb.conf

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [global]
    workgroup = MYGROUP
    server string = Samba Server
    security = share
    hosts allow = 192.168.200.
    unix charset = UTF-8
    dos charset = CP932
    netbios name = linux
    guest account = samba
    log file = /var/log/samba/log.%m
    max log size = 50
    dns proxy = no
     
    [public]
    path = /home/samba/public
    public = yes
    only guest = yes
    writable = yes

    1つずつ説明していきます。

    smb.conf には、「セッション」と「パラメータ」との2種類の要素が存在します。

    上記の設定内容だとセッションは、[global] と[public]という部分に当てはまります。global は特殊なセッションで、Sambaサーバー全般に関わる設定を記述する部分です。public は、Windows共有でいうところの共有フォルダとなります。このセッション名は任意です。publicでもshareでもmyspace構いません。
    共有フォルダは後からいくつでも増やすことができ、それに対するパスも自由に指定できます。

    そして、パラメータとは、それらのセッションに対して値を設定していくものです。
    work group や path がそれに当たります。

    では、それぞれ設定していきます。
    まずは global セッションから。

    ■ 設定ファイルの修正 – [global]セクション

    ■ workgroup : ワークグループ名

    NetBIOS (Windowsネットワーク) のワークグループ名を指定します。既存のWindowsクライアントと設定を合わせてください。大体「WORKGROUP」とか「MYGROUP」とか「HOME」とかになってます。

    ・確認する方法

    マイコンピュータ、右クリック => プロパティ
    -> 「システムのプロパティ」ダイアログボックスが表示されます。
    「コンピュータ名」タブをクリック
    ->「ワークグループ」と表示されます。

    それがNetBIOSのワークグループ名です。
    わかりやすい名前に変更しても良いでしょう。

    ■ server string : サーバーの説明

    「マイネットワーク」でネットワーク上のマシンを一覧表示した時に、サーバー名の下に表示されるコメントっぽい文字列です。

    ■ security : セキュリティモード

    認証なしのゲストユーザーのみで使用する場合は「share」を指定してください。
    PAMやsambapass等によってユーザ単位の認証機能を利用する場合は「user」を指定してください。

    ■ hosts allow : 許可ホスト

    その名の通り、接続を許可するホストです。
    192.168.1.* からの接続を許可したい場合は次の様に指定する。

    hosts allow = 127. 192.168.1.

    ※)最後のドットを忘れない事! 基本的にSambaは、NetBIOS over TCP/IP をサポートしているので、制限を掛けずにグローバルに出すと、全世界からアクセスが可能になります。ローカルに設置したとしてもセキュリティの為に hosts allow は設定しておきましょう。

    ■ unix charset : Unix文字セット

    Unix上の文字コードです。 日本語等のマルチバイトを含む名前のファイルやディレクトリを受信した際に、どの文字コードを使ってファイルシステムへ保存するか、という指定になります。 (※ファイルの中身ではありません。ファイル名です。)

    unix charset = UTF-8

    と指定した場合、WindowsクライアントからSambaサーバーに「てすと.txt」というファイルがアップロードされる時、Sambaはそのファイル名をCP932(日本語Shift-JIS)からUTF-8へ変換してからファイルシステムへ保存します。 UNIX上ではUTF-8で「てすと.txt」と保存される事になります。 unix charset に関しては、OSごとに合わせれば良いのではないでしょうか。 CentOS、Fedora、RH*等、デフォルトのローケルにUTF-8が使われているOSならば「UTF-8」を、FreeBSD、NetBSD、 OpenBSD等、デフォルトのローケルにEUC-JPが使われているOSならば「EUC-JP」を指定します。 とは言っても、無理にローケルに合わせなくても正常に動作はします。ただ、ローケル以外の文字コードを指定した場合、ターミナルから ls とした時に日本語が文字化けします。

    ■ dos charset : Dos文字セット

    Sambaがクライアントにファイルの一覧を出力する時に、どの文字コードを使って出力するか。という指定になります。 Windowsクライアントからファイルを参照したい場合は、 CP932(日本語Shift-JIS)を指定する必要があります。 クライアントが*BSDのみとか、Linuxのみの場合は、UTF-8やEUC-JP等で良いと思います。 いちいちCP932にコンバートする必要がなくなりますから。

    ■ netbios name : NetBIOS名

    Sambaサーバーに割り当てるNetBIOS名(コンピュータ名)です。

    ■ guest account : ゲストアカウント

    「samba用UNIXユーザの追加」で追加したUNIXユーザ名を指定します。

    guest account = samba

    「user=guest : pass=なし」というアカウントでログインした時にマップされるUnixユーザです。 マップされたユーザは、ファイルやディレクトリを保存する時に、その所有者として設定されるユーザとなります。

    ■ log file : ログファイル

    ログファイルを指定します。

    log file = /var/log/samba/log.%m

    「%m」にNetBIOS名が置き換えられます。 接続、読み取り、書き込み等の記録を保存します。

    ■ max log size : 最大ログサイズ

    log file パラメータに指定したログファイルの最大サイズをKB単位で指定します。

    ■ dns proxy : DNSプロキシ

    NetBIOS名をDNS経由で解決するか。 今回は特にセキュリティに神経質ならなくても良いような内容なので、 no にしています。

    ■ 設定ファイルの修正 – [public]セクション

    public セッションの設定です。 「public」という文字は任意です。share や myspace 等に変更しても構いません。

    ■ path

    共有フォルダのパス(ドキュメントルート)。 アップロードされたファイルの保存場所となります。 guest account で指定したUNIXユーザが書き込み可能である場所を指定する必要があります。(security = share時)

    ■ public ( = guest ok )

    パスワードなしでのアクセスを認める。securityに share 以外のパラメータを指定した場合、無視されます。

    ■ only guest

    ゲストアカウントでのみ接続を許可する

    ■ writable

    書き込みを許すか。yesにしないとファイルをアップロードできません。 次回は、その他設定、動作確認と自動起動設定です。

    << | 1 | 2 | 3 | >>


  • Samba3で一般的なファイルサーバー構築完全版 – インストール p.1

    | 1 | 2 | 3 | >>

    OS : CentOS, Fedora, RH*, *BSD

    Sambaでファイルサーバーを構築しましょう。

    Samba3.2からActiveDirectoryやドメインへの参加機能の強化、VISTAへの対応の強化が行われました。
    しかし、ただのファイル置き場用途でしか利用しない私には新機能は不要です。
    今回は、最低限の機能しか付けないインストール方法をご紹介します。

    設定に関しても SWAT 等の設定ツールは利用せず、設定ファイルを修正して構築していきます。

    まずは、インストール。

    ・インストール

    ※)公式FTPから最新のパッケージを選択してください。
    ftp://ftp.samba.gr.jp/pub/samba/
    (2008/01/13現在ではsamba-3.2.7.tar.gzが最新)

    ・コンパイル~インストール

    # tar zxvf samba-3.2.7.tar.gz
    # cd samba-3.2.7/source
    # ./configure --prefix=/usr/local/samba3 --with-pam --enable-swat
    # make
    # make install

    /usr/local/samba3 へインストールされます。

    「–enable-swat」は、私は明示的に指定しているだけですが、default=yesですので 特に指定なしでも問題ありません。
    そして、認証機能の為に「–with-pam」も基本的に指定が必要です。
    PAMのソースファイルも必要となります。インストールされていない場合は事前にインストールしてください。

    # yum install pam-devel

    (CentOS / Fedora / RH*)

    ・Samba3.2 – よく使われそうなconfigureオプション

    –enable-swat : swatの有効化
    WEBベースのsamba設定GUIツールのインストール
    default : yes

    –enable-cups : プリンタサポートの有効化
    default : auto

    –with-pam : PAMサポート
    PAMサポートの有効化。
    default : no

    –with-syslog : syslogのサポート
    syslogサポート。/var/log/message, secure等にエラーを出力。
    default : no

    –with-quotas : ディスククォータサポート
    容量制限
    default : no

    –with-sys-quotas : システムクォータサポート
    容量制限
    default : auto

    次はファイルサーバーの設定です。

    | 1 | 2 | 3 | >>