Ubuntu 12.04 サーバー再構築(7) samba導入

まずはファイルの共有をしよう。
samba と samba-swat をインストールしたい。

※2014/12/31 IP固定の記述等を追加。

と思ったが、samba-swatのパッケージファイル名がわからない。



■apt-fileの導入とsamba-swatの検索

パッケージを探したりするのに使えるらしいので入れる。

$ sudo apt-get install apt-file
$ sudo apt-file update
$ sudo apt-file search swat

うわ、大量に検索結果が・・・じわっと読んでみるとswatというパッケージみたい。

■sambaとswatのインストール

$ sudo apt-get install samba swat

■ufwでポートを開ける

ファイル共有サービス139tcpと、WINSサービス42tcp/udp, 137udpを開ける。
さらにSWATを使うのでVMwareのホストマシンからの901へのアクセスを解放。
※赤文字は後から追記

■swatでsamba設定

GUIでログインしてFirefoxを起動。
アドレスとして localhost:901 を入力して接続する。

ログインユーザーとパスワードを聞かれるので、

user: root
pass: rootのパスワード

を入力すると swat の画面が表示される。ここで色々と設定していく。
なお、swatにはタイムアウト?があるらしく、色々調べて時間がかかった後に更新ボタンを押したら値が反映されないことがあったので注意。

今回、実際にはかなり紆余曲折してごちゃごちゃ弄ったので、結果としてできあがったsmb.confをメモ代わりに残してみる。

[global]
        dos charset = SJIS ←日本語文字セット
        workgroup = HOGEGROUP
        server string = %h server
        obey pam restrictions = Yes ←PAM認証を使う(後述)
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        local master = Yes     2014/12/31追記
        os level = 65          ブラウズマスターになる
        preferred master = Yes ブラウズマスターになる
        domain master = Yes    ブラウズマスターになる
        wins support = Yes ←後々、dhcpdでクライアントに撒き散らす予定
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb
        bind interfaces only = yes   2014/12/31追記 IP固定
        interfaces = 172.16.nnn.1/16 2014/12/31追記 IP固定

[homes]
        path = /home/%U/samba
        create mask = 0700
        directory mask = 0700
        read only = No
        browseable = No ←homesは自動的にユーザー名に書き換わる

[share]
        comment = 共有領域
        path = /home/samba
        read only = No
        directory mask = 04777       ディレクトリ作成時の権限
        force directory mode = 04777 ディレクトリ作成時の権限
        guest ok = Yes

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers
        available = No ←使わない

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No
        available = No ←使わない

■sambaのユーザー認証にPAMを使う

サーバーにログインできるユーザーをそのままsambaのユーザーにしたいと思っていたら、方法があった。セキュリティ的には良くないのかもしれないが、ずぼらな管理者なので二重管理はやめたい。

$ sudo apt-get install libpam-smbpass

インストールした後、Ubuntuのパスワードを変更してアクセスしなおしてみた。

$ passwd

→ パスワード変更

Windows7からアクセスして試す。
なお、一度アクセスしたユーザー・パスワードの情報が残ってしまっているので、これを削除してからエクスプローラーを立ち上げなおして接続してみる。
別のユーザーで接続し直す、というやつ。

実際の手順は、以下の通り。

  1. hogeserver上でpasswdコマンドにてパスワード変更。これによってログイン&sambaパスワードが一緒に変更される。
  2. Windows7でエクスプローラーを閉じる。
  3. Windows7のコマンドプロンプトを開き接続先サーバーの情報を削除する。
    DOS> net use \\172.16.nnn.nnn /delete
    → まだ、名前解決のポートを解放していないのでIPアドレスで接続しているはず。なのでIPアドレス指定で削除。なお、
    DOS> net use
    で利用しているネットワーク共有がわかる。

  4. Windows7でエクスプローラーを開いてhogeserverにアクセスする。

※この操作方法は以下のページに記載されていた。VMwareで環境作っているのでログオフするわけにも行かず・・・助かりましたー。
http://kanrininta.blog38.fc2.com/blog-entry-161.html

■ここで、トラブル発生

  • swatに接続すると、ページの表示途中でエラーが発生するようになった。(エラー 324 (net::ERR_EMPTY_RESPONSE): サーバーはデータを送信せずに接続を切断しました。)
  • ログインしてしばらくすると、システムプログラムの問題が見つかりました 今すぐこの問題を報告しますか? というメッセージが表示されるようになった。

どうやら、クラッシュダンプが吐き出されているらしい。swatだ。

$ ll /var/crash
合計 3888
drwxrwsrwt  2 root      whoopsie    4096  5月 25 08:23 ./
drwxr-xr-x 13 root      root        4096  5月 25 08:16 ../
-rw-rw----  1 root      whoopsie       0  5月 25 08:16 .lock
-rw-r-----  1 hogeuser  whoopsie 3706625  5月 22 23:03 _usr_bin_nm-connection-editor.1000.crash
-rw-rw-r--  1 hogeuser  whoopsie       0  5月 22 23:06 _usr_bin_nm-connection-editor.1000.upload
-rw-------  1 whoopsie  whoopsie       0  5月 25 08:17 _usr_bin_nm-connection-editor.1000.uploaded
-rw-r-----  1 root      whoopsie  263567  5月 23 23:34 _usr_sbin_swat.0.crash

/var/log/samba/log.にエラーが出力されていた。

[2013/05/23 23:34:34.063295,  0] lib/fault.c:47(fault_report)
  ===============================================================
[2013/05/23 23:34:34.063378,  0] lib/fault.c:48(fault_report)
  INTERNAL ERROR: Signal 11 in pid 8491 (3.6.3)
  Please read the Trouble-Shooting section of the Samba3-HOWTO
[2013/05/23 23:34:34.063424,  0] lib/fault.c:50(fault_report)

  From: http://www.samba.org/samba/docs/Samba3-HOWTO.pdf
[2013/05/23 23:34:34.063463,  0] lib/fault.c:51(fault_report)
  ===============================================================
[2013/05/23 23:34:34.063491,  0] lib/util.c:1117(smb_panic)
  PANIC (pid 8491): internal error
[2013/05/23 23:34:59.320173,  0] lib/fault.c:47(fault_report)
  ===============================================================
[2013/05/23 23:34:59.320218,  0] lib/fault.c:48(fault_report)
  INTERNAL ERROR: Signal 11 in pid 8500 (3.6.3)
  Please read the Trouble-Shooting section of the Samba3-HOWTO
[2013/05/23 23:34:59.320258,  0] lib/fault.c:50(fault_report)

PAM認証を追加した途端にこうなった。
削除すればswatがちゃんと動くところまで確認。

$ sudo apt-get remove libpam-smbpass

でも、二重管理は嫌だー。

■対策・・・になっていないけど、ユーザーによるパスワード変更はできそう。

というか、これはかなり危険。
ファイルを消しちゃったりしないように注意。
仮に common-auth が消えると、その後、sudo なんかもできなくなるし、シャットダウンすらもできなくなる。・・・っていうかやっちゃいました。

$ sudo vi common-auth

こちらも中身を以下の通り変える。

#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
#auth   optional                        pam_smbpass.so migrate
#auth   optional                        pam_cap.so
# end of pam-auth-update config

この状態で一度swatに接続することで、VMwareのホストからアクセスが可能になったが、smb.confの内容を編集することはできない。
編集したファイルは元に戻して運用する。元に戻さないとWindowsからの接続でおかしな問題が発生する(rootで接続した後にhogeuserで接続すると、share, hogeuser, rootにアクセスができてしまう)。
ここ(https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1015935)の情報を見るとバグっぽいので、将来ファイルが修正されるのに期待して待つことにする。

■その他

swatが動かなくなってかなり困って色々とやったので、その過程で触ったファイルやコマンドをメモ。

testparm

設定内容をチェックしてくれる。-vパラメータをつけると、デフォルトで設定される値も含めて全てが表示される。

smbpasswd -D 10 -a hogeyuser

smbpasswdコマンドを実行した時に起こることを事細かに表示してくれる。パスワードファイルがどれか、なんてのもわかる。

smbd -b

どんなパラメータでビルドされたかわかる。

/etc/samba/smbpasswd

パスワードの管理方法が変わって/var/lib/samba/passdb.tdbになっている。

/var/log/samba

sambaの各種ログが出力されるディレクトリ。

/etc/pam.d/

PAM認証の手続が書かれているディレクトリ。

/etc/inetd.conf

swatはinetdから起動される。起動条件を記載。

/etc/services

各種サービスと使用ポートが書かれている。


2014/12/31 追記
新規購入したWindowsタブレットがLAN内のホストを認識できないので調べてみると、WINSが上手く動いていないことが判明。色々と調べてみたところ、SambaによるWINS及びマスタブラウザ設定に調べ方が書いてあった。

鯖が立った、クララがたtt(ry http://ry.tl:27888/ さんから引用—

◆マスタブラウザを調査
[root@Server ~]# nmblookup -M WORKGROUP
querying WORKGROUP on 192.168.0.255
192.168.0.3 WORKGROUP<1d>

「WORKGROUP」は環境によって変更する事。
自身のIPアドレスである事を確認
「name_query failed to find name WORKGROUP#1d」と出た場合は選出中の可能性があるので数分待ちましょう。

—–

◆マスタブラウザを調査2
[root@Server ~]# nmblookup -S WORKGROUP
Looking up status of 192.168.0.3
..__MSBROWSE__. <01> – H

「MSBROWSE」表記があるシステムがマスタブラウザです。

—–

◆マスタブラウザを調査3(Windowsコマンドプロンプトにて実行)
C:\Users\ad>nbtstat -a 192.168.0.3
..__MSBROWSE__.<01> グループ 登録済

これも同じように「MSBROWSE」となっているシステムがマスタブラウザになります。

— 引用終了

おかげさまで、2つ目に割り当てたIPアドレスがマスタプラウザとして動作していたため、Firewallがブロックしているところまで想定ができ、1つ目のIPアドレスを固定する設定で問題解消することができた。

なお、固定設定にあたっては、日本 Samba ユーザー会 Web サイトさんのManページを参考にさせていただいた。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です