最新 追記

だめだめ日記

ツッコミの内容は検索サイトからの検索やサイトのレーティングに影響します。そのため問題があるキーワードを含むと思われるツッコミについては、当方の判断で削除することがあります。予めご了承ください。 なお、コメントspamと判断されたツッコミは自動的に消去されます。ご容赦ください。
2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|05|06|09|10|11|12|
2013|01|02|02|03|08|09|
2014|01|
2015|09|10|11|
2016|01|04|

執筆、翻訳などに関わった書籍類


【改訂新版】Samba [実践]入門

Linux教科書
LPICレベル3 300試験

マスタリング Nginx

実践 パケット解析 第2版

改訂版 Sambaのすべて

アンドキュメンテッド
Microsoftネットワーク

その他の書籍は だめだめ日記のおみせ@本店でどうぞ。



2010年03月01日 [長年日記]

[Samba] Samba 3.5.0リリース

今回は、予告どおりリリースされました。


2010年03月03日 [長年日記]

[Samba] Samba 3.5.0 の時刻精度

リリースノート

Support for full Windows timestamp resolution has been added. 
This effectively makes us use Windows' full 100ns timestamp
resolution if supported by the kernel (2.6.22 and higher) and 
the glibc (2.6 and higher).

と書いてあったので、lenny (linux 2.6.24 & glibc 2.7) 環境で確認してみました。

時刻を取得する - GetFileTime関数とかを参考にして、Windows 上のシステム時刻からとってきた 100ns 単位の時刻を SetFileTime() するプログラムを作って確認してみたんですが、1秒単位の精度でしか扱ってくれてないっぽく見えます。

[Samba] Samba 3.5.0 の時刻精度(2)

考えてみれば、ファイルシステムが EXT3 だったのがいけなかったっぽいです。XFS でやったら問題なくうまくいきました。

以下のようなプログラムをコンパイルして

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
 
int main (int argc, char *argv[]) {
  struct stat sb;
  stat(argv[1], &sb);
  printf("Last file access:         %s", ctime(&sb.st_atim.tv_sec));
  printf("Last file access nano:    %d\n", sb.st_atim.tv_nsec);
}

stattest という名前のバイナリを作って

$ echo aaa > dame.txt
$ stattest dame.txt
Last file access:         Wed Mar  3 02:05:52 2010
Last file access nano:    799746954

のように、ナノ秒が設定されていることを確認のうえ、Windows 側でもこんなプログラム

#include <windows.h>
#include <stdio.h>
 
int main(int argc, char* argv[])
{
	FILETIME tmTime;
	HANDLE hFile;
 
	GetSystemTimeAsFileTime(&tmTime);
 
	hFile = CreateFileA(argv[1], 
		GENERIC_READ | GENERIC_WRITE,
		0, NULL, OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL, 0);
 
	SetFileTime(hFile, NULL, &tmTime, NULL);
 
	CloseHandle(hFile);
	return 0;
}

から、Samba 上のファイルの最終アクセス時刻を現在時刻で更新してみて、再度 Linux 側で参照してみると

$ stattest dame.txt
Last file access:         Thu Mar  4 01:06:19 2010
Last file access nano:    15625000

こんな感じで、ちゃんと更新されてました。もちろん Windows 側から Samba 共有上のファイルを GetFileTime() してちゃんとナノ秒(1秒より細かい単位)の時刻が取得できることも確認しています。

ナノ秒の時刻精度は EXT4 もサポートしているっぽいですね。

[Samba] Samba 3.5.0 の SMB2 プロトコルサポート

とりあえず、

  max protocol = smb2

の設定を行って、Windows 7 マシンから接続してみました。

結果は、以下のとおり、接続OKでした。192.168.135.249 が Windows 7 マシンで、192.168.135.247 が Samba 3.5.0 の稼動する lenny3 というマシンです。

SMB2プロトコルによる接続

2010年03月04日 [長年日記]

[コンピュータ] Windows の時刻精度

Samba の検証やってて気づいたんですが、 Windows って基本的にマイクロ秒単位の精度しかないのかしら。

以下のようにファイルを作成して作成時刻を確認すると、マイクロ秒単位であることがわかります。

明示的に100ナノ秒の時間を設定するとちゃんと設定はできるんですが、なんとなく微妙なかんじ。

ファイルの作成時刻

[Samba] Samba 3.5.0 の nmbd bind explicit broadcast パラメータ

試してみました。

デフォルトでは yes になっているので、この状態で netstat すると以下のようになります。

netstat -an | egrep '13[789]|445'
tcp        0      0 192.168.135.247:139     0.0.0.0:*               LISTEN
tcp        0      0 192.168.135.247:445     0.0.0.0:*               LISTEN
tcp6       0      0 fe80::20c:29ff:fe44:139 :::*                    LISTEN
tcp6       0      0 fe80::20c:29ff:fe44:445 :::*                    LISTEN
udp        0      0 192.168.135.255:137     0.0.0.0:*
udp        0      0 192.168.135.247:137     0.0.0.0:*
udp        0      0 0.0.0.0:137             0.0.0.0:*
udp        0      0 192.168.135.255:138     0.0.0.0:*
udp        0      0 192.168.135.247:138     0.0.0.0:*
udp        0      0 0.0.0.0:138             0.0.0.0:*

赤字の部分が、このパラメータが yes であることで追加されているバインドになります。


2010年03月31日 [長年日記]

[Samba] net sam createlocalgroup によるローカルグループ作成と net groupmap add コマンドによるローカルグループ作成

Winbind 環境では、net sam createlocalgroup コマンドによりローカルグループを作成することも可能です。

以前試した際はどっちも同じようなものだと思ってましたが、理解が浅かったようです。

net sam createlocalgroup コマンドを用いると、UNIXユーザの情報も含めて Winbind 機構が自動生成してくれます。したがって、事前にローカルグループに対応する UNIX グループを作っておく必要がありません。

net groupmap add ... type=local コマンドは、あくまで既存の UNIX グループにローカルグループを割り当てて、Samba 経由で操作できるようにするためのコマンドになります。ですので、事前に UNIX グループを作成しておく必要があります。、

コマンドの出力を見た方が手っ取り早いかも。上は net sam createlocalgroup local1 のようにして作ったローカルグループで、下はあらかじめ local2 という UNIX グループを作ったうえで、net groupmap add ... type=local を指定した場合です。

# net groupmap list
local1 (S-1-5-21-1747882611-3121684158-2562734412-1004) -> CENTOS54\local1
local2 (S-1-5-21-1747882611-3121684158-2562734412-1005) -> local2

UNIX 上に local1 という UNIX グループを作っても、当然 CENTOS54\local1 とは無関係です。

$ getent group 'CENTOS54\local1'
CENTOS54\local1:*:10012:
$ getent group local1
local1:*:1011:

Copyright (C) 2003-2017 TAKAHASHI, Motonobu
webmaster@monyo.com