Vistaではセキュリティの設定がXPとは違っているらしく、デフォルトの状態ではSAMBAに対してId/Passが通らない。
コントロールパネルの管理ツールから「ローカルセキュリティポリシー」→「セキュリティオプション」→「ネットワークセキュリティ:LAN Manager認証レベル」を「NTLM応答のみ送信」にしてあげるとつながるようになる。
Vistaではセキュリティの設定がXPとは違っているらしく、デフォルトの状態ではSAMBAに対してId/Passが通らない。
コントロールパネルの管理ツールから「ローカルセキュリティポリシー」→「セキュリティオプション」→「ネットワークセキュリティ:LAN Manager認証レベル」を「NTLM応答のみ送信」にしてあげるとつながるようになる。
Fedora Core5をいじっていて「smbmountがない!!」とあわてていたら、CIFSというやつでアクセスするんだそうだ。
mount -t cifs //192.168.1.91/ITADMIN /mnt/log
こんな感じ。
共有名以降、フォルダ名でのマウントは出来なかった。
取引先の要望で、ファイルアクセスログをとらなきゃいけない。
ということでNASに使っているTeraStationでログ項目があったなぁと思ってチェックすると…ログサーバへログを吐けますよ、と。
本体でログ保存してくれるわけじゃないんだね。
仕方がないのでログホストを立てる。ついでにこのログホストにNTPサーバもやらせて、NAS間でタイムスタンプの整合性がとれるようにしてやる。
— 追記 —
どうやら、本体でもログは取れる。が、設定変更とかするとそれ以前のログを消しているようだ。
いずれにせよ、ログホストで取っておくほうがよさそうである。
———-
使っているディストリビューションがFedora Coreなので、ログホストにするには/etc/sysconfig/syslogで以下のような変更を書く。
SYSLOGD_OPTIONS=”-m 0″ < この行を
SYSLOGD_OPTIONS="-m 0 -r" < このように変更
で、サービスをリスタートすれば良し。
あとはTeraStation側の管理画面でログホストとしてこのホストを指定してやれば、/etc/log/messageにざぶざぶとログが吐かれる。
が、ちょっと待てよ。
取引先から”ログとっとけ”っていわれるってことは、”ログ見せろ”とか言われる可能性があるってことですよ。
そうすると/var/log/messageで取っててると要らないログまで見せなきゃいけないことになる。
ログ抜き出しで見せてもいいけど、なんにせよ編集しているのだから諍いのもとになる。
そうすると、Terastationのログ吐き出しがどのファシリティ値で来ているのかを調べなきゃいけない。
ファシリティ値というのは/etc/syslog.confで
cron.* /var/log/cron
と書かれているエントリ中の、例えば「cron」の部分。ドットで区切った後にログのレベルを書いて、最後にファイル名を書くのだ。
上記のエントリでは、「cronについては全てのレベルのログを/var/log/cronに書いといてね」となる。
ログファイルをわけるならば、このファシリティ値がわからないと指定が出来ないわけです。
local7というのがboot.logで使われているので、まぁこんなもんだろうとアタリをつけて切り分けてどこへ吐かれているのか見てみた。
local0.* /var/log/local0.log
local1.* /var/log/local1.log
local2.* /var/log/local2.log
local3.* /var/log/local3.log
local4.* /var/log/local4.log
local5.* /var/log/local5.log
local6.* /var/log/local6.log
local1とかになってるってことはRemote1とかあるんじゃねーのかとか思いながらも、まずは実験。
結果、TeraStationからのシステムログはlocal0へ、smbログはlocal6へ出ていることが判明。
めでたく切り分けが出来ることになった。
…だからさぁ、俺はマーケターだっつーのに。
——– 追記 2007/08/24 ————-
ファシリティがlocal0, Local6で飛んでくるのはTerastation “PRO”でした。
Terastationでは少し違うみたい。これらのファシリティでは切り分けてくれませんでした。
SCコマンドを使う。
sc stop Browser
sc config Browser start= disabled
1行目でサービスを止め、2行目でサービスを無効にする。
バッチファイルで配布し、実行してもらえばブラウザ問題で悩まなくてよくなる、と。
– 追記 –
と、思ったらVistaでは「権限がねーじゃーん」とか言われる。Sudo見たいなことしなきゃいかんのだろうが、もう調べるのがめんどくさい。
数も少ないので、手作業で片付けてまわった。
手元のsamba サーバでは/var/cache/sambaにいろいろなデータが書かれている。
ブラウズリストはbrowse.datにこんなふうにかかれている。
“WORKGROUP” c0001000 ”MASTER_WINS” ”WORKGROUP”
“MASTER_WINS” 408d9a03 ”WINS SERVER” ”WORKGROUP”
“MSHOME” c0001000 ”HOGEHOGE” ”MSHOME”
“TS-HTGL356″ 40019a03 ”NAS” ”WORKGROUP”
“PC-12345″ 40011003 ”Client PC” ”WORKGROUP”
“PRT_GOTA_01″ 40000202 ”Printer” ”WORKGROUP”
“NAS-MEGURO” 40809a03 ”Sat-Office NAS” ”WORKGROUP”
NetBios名、種別、コメント、グループ/ドメイン名となっているらしい。
ドメインそのものであるWORKGROUPとかMSHOMEでは、コメント欄にドメインマスタブラウザのNetBios名が書いてある。
種別はsambaのメーリングリストに情報があった。
各文字列が何を意味するのかは、マイクロソフトのヘルプでも一覧表がある。
/* these are used in NetServerEnum to choose what to receive */
#define SV_TYPE_WORKSTATION 0×00000001
#define SV_TYPE_SERVER 0×00000002
#define SV_TYPE_SQLSERVER 0×00000004
#define SV_TYPE_DOMAIN_CTRL 0×00000008
一番下の一桁はネットワーク上での役割を示す。
1ならワークステーション、2ならサーバだ。4ならSQLサーバで、8ならドメインコントローラだ。
上の例ならばPRT_GOTANDA_01の下一桁は2なので、サーバであることがわかる。PC-12345の該当桁は3なので、ワークステーションであり、サーバーでもある、と読み取る。このように役割の数字を足し算していくのだ。
全部やっているホストなら、8+4+2+1=15だが一桁に納めるために16進で示す。15なら、fだ。
#define SV_TYPE_DOMAIN_BAKCTRL 0×00000010
#define SV_TYPE_TIME_SOURCE 0×00000020
#define SV_TYPE_AFP 0×00000040
#define SV_TYPE_NOVELL 0×00000080
次の桁は…なんじゃこりゃ? ごたまぜだねぇ。
ドメインバックアップコントローラは、BDCのことだ。タイムソース…マイクロソフト版NTPサービスをやるサーバがあるんだろうね。AFPはApple File Protocolのこと。ノベルはNetWareサーバだろう。
なんとなく、時代を感じる桁である。
#define SV_TYPE_DOMAIN_MEMBER 0×00000100
#define SV_TYPE_PRINTQ_SERVER 0×00000200
#define SV_TYPE_DIALIN_SERVER 0×00000400
#define SV_TYPE_SERVER_UNIX 0×00000800
ドメインメンバーってなんだよ、と思うがLan Managerのメンバーであるかどうかだそうだ。うわぁ。ここにも時代の波が。
プリントキューを持っているサーバであるかどうか、ダイアルインサービスをやっているかどうか - VPN/PPTPはここに含むのかね? - 、Unixサーバであるかどうか。
上記の例ではNASであるTS-HTGL356の該当桁は、”a”だ。8+2なのでUnixサーバであり、プリントキューを持ってる/プリンタ共有サービスが動いているよ、ってことだ。
#define SV_TYPE_NT 0×00001000
#define SV_TYPE_WFW 0×00002000
#define SV_TYPE_SERVER_MFPN 0×00004000
#define SV_TYPE_SERVER_NT 0×00008000
動いているネットワークサービスの種類。
NT、Windows For Workgroup(うはぁ!!)、Microsoft File and Print for NetWare(うわわわわ!!!!!!!!!!)、NT Serverと。
もはや涙なしでは読み解けないよ。「係長!! NetWareにつながらないんですけど!!」とか言われてたなぁ。あのころ。
#define SV_TYPE_POTENTIAL_BROWSER 0×00010000
#define SV_TYPE_BACKUP_BROWSER 0×00020000
#define SV_TYPE_MASTER_BROWSER 0×00040000
#define SV_TYPE_DOMAIN_MASTER 0×00080000
ブラウザがらみの桁。
ブラウザになる可能性があるかどうか、つまりwindowsであればComputer Browserサービスが動いているかどうか。Unixであればnmbdがうごいているかどうか、だ。
バックアップブラウザとして動いているか、ローカルマスターか、ドメインマスターか、とブラウザ関連フラグが続く。
上述の例でいくと、ドメインマスターブラウザであるMASTER_WINSの該当桁は”d”=13なので8+4+1。ドメインマスターで、ローカルマスターで、nmbd動いてますよ、と。
#define SV_TYPE_SERVER_OSF 0×00100000
#define SV_TYPE_SERVER_VMS 0×00200000
#define SV_TYPE_WIN95_PLUS 0×00400000
#define SV_TYPE_DFS 0×00800000
OSFってのはぐぐってもあんまり説明が見当たらないが…まさか、Open Software Foundationか? 次のVMSはそうすると…VAXでうごくあれか? その次がWIN95の…PLUS? おまけパッケージの? とおもったら95以降かどうかを識別するんだそうだ。
DFSは”分散ファイル共有”だそうで、比較的新しい機能らしい。Samba3.xを入れたサーバでは”8”がついていて、買ってきてそのまま使っているNASでは”0”だというのは、そういうことなんだろう。
#define SV_TYPE_CLUSTER_NT 0×01000000
#define SV_TYPE_TERMINALSERVER 0×02000000
#define SV_TYPE_CLUSTER_VS_NT 0×04000000
この桁の情報は他の部分とは違うところから持ってきてます。つまり、Sambaのソースには入ってないかもしれないってことです。
中身としては「どんなNTサーバ?」ってことですね。
#define SV_TYPE_ALTERNATE_XPORT 0×20000000
#define SV_TYPE_LOCAL_LIST_ONLY 0×40000000
#define SV_TYPE_DOMAIN_ENUM 0×80000000
で、先頭の桁。
オルタネートエクスポートはよくわかんない。違うプロトコル間でリストを融通できるか、とかそんなことだと思う。
ローカル/ネットワークセグメント内のホストかどうか、ドメインそのものかどうか、と。
c0001000だとローカルにあるドメインで(物理的実体はないんだけど)NTワークステーションだってことですね。
408d9a03だとローカルにあって分散ファイルサービスができて、ドメインマスターで、ローカルマスターで、nmbd動いてて、NTサーバーかつNTワークステーションで、Unixでプリンタ共有サービスが動いてて、クライアントかつサーバーだってことだ。
なるへそ。
あらためて、WIndowsファイル共有というやつがあちこちの概念 – NetWareだの、OSFだの、サーバーだのNTサーバーだの – が重複して、ごたまぜなのがよくわかる。
シマンテックさんのパーソナルファイアウォールでは、デフォルト設定でNETBIOSのインバウンド、アウトバウンド、WINDOWS共有といった「項目」が閉じられている。
で、当然ファイル共有が出来ないのでこれら「項目」をあけるわけだ。
が、NETBIOSのアウトバウンドとかを開け忘れたりする。
そうすると、せっかく作ったローカルマスタブラウザサーバがマスターになれない。マスタブラウザ選定シーケンスの途中でファイアウォールによって通信が行われなくなり、ファイアウォールが設定されている機械がマスタブラウザになってしまうのだ。OS LEVELを25000とかにしても、ダメ。
で、NETBIOSのアウトバウンドが閉まっているので他の機械はブラウズリストが取得できなくなる。
このあたりの「項目」をあけてやると、いとも簡単にブラウズリストが復活する。
“パーソナル”じゃない環境ではあるんだろうけれどねぇ。
中小企業向け一括設定キットなんてもんはないもんか。
メインオフィス側ネットワーク(192.168.1.0/24)のWINSサーバへ分室側ネットワーク(192.168.2.0/24)から名前登録をさせるだけでは、コンピュータ一覧に分室側ネットワークのマシンが表示されない。でも名前でアクセスできる。不思議だ。調べてみたら理由は単純でローカルマスタブラウザはサブネットを越えないからだ。
ふざけんなよ、まったくもう。名前登録したら、一覧ぐらい見えるようにしとけってんだ。
NetBIOSはもともとブロードキャストによる名前解決、つまり部屋の中で大声で「PC_0001_001はどこですか??」と叫び、該当する機械が「おぉ、俺ここ!!」と答えるような仕組みである。この方法ではサブネットを越えられない。大声で叫ぶのはサブネットまで、とTCP/IPでは決められている。つまりサブネットごとに別の部屋になっていて大声出しても隣の部屋には聞こえないわけだ。
でもねぇ。だからWINSを使ってサブネットを越えるんじゃないのかよ。
これが、ちがうのだ。どうやらWINSは”名前解決”だけに使われていて、コンピュータの一覧を提供するのは「マスタブラウザ」であるらしい。再びたとえ話をするならば…だれがどこにいるのかを知っているWINSさんのところへ行って「PC_0001_001はどこですか??」と聴くと「あぁ、それならさっき192.168.1.62って届けがあったよ」と教えてくれるのだが、登録されている情報のリストは見せてくれない。あくまでも個別の問い合わせにたいしてアドレスを答えるのみなのだ。
コンピュータの一覧は「ドメインブラウザさん」のところへ行って見せてもらうのだけれど、これはWINSと同じ機械/プロセスで動いていても、WINSで獲得した名前のリストを一覧として提供するようにはなっていないらしい。「ドメインブラウザ」氏は、上述したブロードキャストでしかコンピュータ一覧を作らないのでやはりサブネットは越えない。なので「ローカルドメインブラウザ」というやつでサブネット/当該セグメントのコンピュータ一覧を作って「マスタードメインブラウザ」で全部のセグメントの一覧表をまとめあげるように、なっている。
ったく、めんどくせぇなぁ、おい。
ということで、以下のような論理構成になる必要がある。
192.168.1.0/24側ネットワーク
192.168.2.0/24側ネットワーク
で、どうやってローカルマスタブラウザはドメインマスタブラウザに”ここにもサブネットがあって、こういうマシンがあるぜ”というブラウズリスト交換をやるのか?? どうやらそれはそれでWINSを使うらしい。
WINSさんのところへ行って「WORKGROUPのドメインマスタブラウザは誰ですか?」と聞いて「あ、それなら192.168.1.10だよ」と教えてもらって「192.68.1.10さーん!! これ、うちのブラウズリストね」とやるらしい。
—追記—
WINSを使うかどうかは良く分からんが、smb.confのパラメータで指定できる。
remote browse sync (G)
このオプションにより、 別セグメントにある Samba サーバのマスタブラウザと 定期的にブラウズリストの同期要求を行なうように nmbd(8) が 構成される。 このオプションにより、 ルーティングされたネットワーク上に存在する 複数ワークグループからなるブラウズリストを 構築することが可能になる。 これは Samba 固有の方式で動作するため、 Samba 以外のサーバでは機能しない。
これは、Samba サーバおよび同じセグメント上のクライアントマシンを 通常のブラウズリストの交換ができない別のワークグループ上に表示させたい場合に有用である。 別のワークグループは、IP パケットを送信できるところであれば どこにあってもよい。
以下に例を示す:
remote browse sync = 192.168.2.255 192.168.4.255
上記の設定は、nmbdが指定されたサブネットのアドレスに対して ローカルサーバとのブラウズリストの同期を要求する設定である。
設定するIPアドレスとしては、 通常リモートネットワークのブロードキャストが用いられるが、 ネットワークが安定していれば、 マスタブラウザのIPアドレスを指定することもできる。 IPアドレスが設定された場合、Sambaはそのマシンが起動していて、 要求を待っているかについても、そのセグメントのマスタブラウザであるかどうかについても確認しない。
デフォルト: remote browse sync = <空文字列>
ドメインマスタブラウザ側のsmb.confにこのパラメータを分室のローカルドメインブラウザを直接指定する形で記述したら、めでたくマシン一覧が表示されるようになりました。
—追記ここまで—
したがってsmb.confの記述はこうなる。
192.168.1.0/24側ネットワークのWINS/ドメインマスタブラウザ/ローカルマスタブラウザサーバ
[global]
domain master = Yes
local master = Yes
preferred master = Yes
os level = 35
wins support = Yes
remote browse sync = 192.168.2.10 << これ、追記しました
192.168.2.0/24側ネットワークのローカルマスタブラウザサーバ
[global]
domain master = No
local master = Yes
preferred master = Yes
os level = 35
wins server = 192.168.1.10
このようであることの利点は…ユーザが気にしなきゃいけないことが減るってことかな。たぶん。「コンピュータつなげば、一覧表にポチッと出てきてネットワークリソースとして利用できるようになる。プラグを外せばコンピュータ一覧から消えて、利用できなくなる。」っていう利用感をリアルタイムに、スムーズにやろうとしたらこうなった、っていうことなんだろう。
わかるけど、めんどくさいなぁ、これ。
先日来SAMBAやWINSのエントリを投稿していたらそこそこの方々が検索経由で訪れてくれている。
しかしながらSAMBAよりNFSのほうが簡単で使いやすい気がするんです。もちろんユーザ視点ではなくて管理者視点です。ユーザ視点で見た場合には当然のことながら「つなげば使えるワークグループ設定のWindowsネットワーク」の方が圧倒的にラクでしょうが、ネットワーク管理とかディレクトリ制御とかはじめたとたんに、WINS+WINBIND+SMBD+LDAPよりも、LDAP+NFSをRedHat/ubuntuで実現したほうが楽な気がするんです。
なによりもネットワーク内で環境が標準化されること、ウイルスの心配が減ること、管理者の自由度とオフィスネットワークとしてのエコシステムの柔軟性が上がること、偉そうに「うちのVistaの方が〜」と言われずに済むことなど、メリットはたくさんあります。
いまはOpenOfficeもあることだしね。Officeなんてばか高いアプリケーション入れなくてもいいわけですよ。
————————————————————-
という声とMicrosoftは毎日闘ってんだろうなぁ。
でも、実際問題その方が安くてラクな気がする。
わかりやすいもん。コンピュータシステムとして。いろんな概念の折衷で成り立っているWindows環境はやっぱり僕は使いにくい。
lftpというプログラムがある。
sshやtelnetでftpを使っているとサブディレクトリもふくめて再帰的/Recursiveにファイルを転送できなくて困ってしまうことがあるが、lftpはMirrorというコマンドを持っていて、ディレクトリごとミラーリング/転送してくれるのだ。素晴らしい!!
なぜにSAMBAカテゴリでこの話題かというと…NASが壊れたのだ。IO-DATAのLANDISKが壊れたらしく、電源をいれても云ともうんとも言わなくなった。では、というのでディスクを外してDebian入りのLinkStationにつないて別のNASにサルベージをしようと思ったら…文字化けしまくる。いったん別のNASにUSBでつないで、と思ったらNAS製品のUSB接続は先頭パーティションしか見てくれない。ハックしようかとも思ったが、このディスクには200GバイトのWAVや3gp音楽ファイルがつまっている。うっかりデータを失うと再作成にものすごい労力がかかる。
いろいろ調べたらどうやらこのディスクのフォーマットはext2で行われ、文字コードはsjisで保存されているらしい。これをマウントしようとして、
root@LINKSTATION:~# mount -t ext2 /dev/sda3 /mnt/usbdisk -o codepage=932,iocharset=sjis
とやっても、
mount: wrong fs type, bad option, bad superblock on /dev/sda3,
missing codepage or other error
In some cases useful info is found in syslog – try
dmesg | tail or so
とか言われる。しょうがないのでオプションなしでマウントすると、できる。
root@LINKSTATION:~# mount -t ext2 /dev/sda3 /mnt/usbdisk
システムロケールはUTF-8なので、当然日本語ファイル名は化ける。どうやってみても、シェルを通している以上は化ける。convmvも試してみたが、うまくいかない。システムは”文字コードはUTF-8″だと思っているんだろうから、そりゃうまくいかないわい。
Windowsでext2フォーマットを読めるようにするツールをクライアントPCに入れて、USBでディスクをつないでやると文字化けせずに読める。が、クライアントから200Gを転送するのは時間がかかってげんなりしちゃう。
と困っていたら、ftpコマンドの転送ではうまくいく!! 受け側のNASでFTPサーバー機能を立ち上げたところへDebian入りLinkStationにUSBでつないだディスクからFTPで送り込むと、きちんと日本語ファイルが化けずに転送される。どうやらファイル名をロケールを通さずにダイレクトに読んでいるらしい。あとはサブディレクトリを掘り下げていってディレクトリツリーごと転送するツールがあれば、と思って探したら…あったのよ lftp!
lftpでつないだ後にmirror -Rと打ち込んでやると、ローカルのカレントディレクトリからリモートのカレントディレクトリへミラーリングをしてくれる。
200Gをすべてクライアント経由で送信しなきゃいけないかと思った。
たすかりました。
引き続き分室用の準備諸々を行っている。
何かのときに迅速に対応できるように会社に転がっていたLinkStationにFreelinkを入れてDebian化した。
これに以前別のSambaサーバーで使っていたHDをマウントして…と思ったら。
root@LINKSTATION:~# mount -t ext2 /dev/sda1 /mnt/usbdisk -o codepage=932,iocharset=euc-jp
mount: wrong fs type, bad option, bad superblock on /dev/sda1,
missing codepage or other error
In some cases useful info is found in syslog – try
dmesg | tail or so
とか言いやがる。
コードページモジュールも入っているのだけれど、認識していないんだよねぇ。