公開日 2023-11-13 更新日 -
2001年1月。WindowsMe機の追加導入が決まったことと、Windows98がたまにシャットダウンの最終で消えないという問題があって、年度途中ながらsambaのバージョンアップをして、備えることにしました。入れてみると、かなりの改善が行われていました。今回のバージョンアップに使ったファイルはこれ。
samba-2.0.7-ja_1.3.i386.rpm
OSは引き続き Red Hat Linux 6.1J です、
この時期sambaは日本語化に力を入れて大きな変化がありましたし、日本のユーザー会も立ち上がり、マニュアルの翻訳が行われていました。また、Windows2000が普及する中で、Windows9X系との差もわかってきた時期でもありました。
付属文書のDOMAIN.txtの設定の手引きに次のようにありました。
注意: Samba 2.0.4 から 2.0.5 にかけては、移動ユーザプロファイル回りに関して、いろいろな混乱がみられた。Samba 2.0.6 からは移動ユーザプロファ イルの実現方式が変更になった。Samba team は現在 Windows NT と Windows 9x の両方について、移動ユーザプロファイルがどのように動作するかを理解 しているので、この機能がこれ以上変更になることはないであろう。
注意: 移動ユーザプロファイルの実現方式は Windows 9x と Windows NT とで異なっている。
DOMAIN.txt for Samba release 2.0.7 26 Apr 2000/ 翻訳者: 高橋基信 更新日: 2000/05/02
変更になったのは2.0.6からとなっていますが、manpageの記述が変わるのは2.0.7からなので、番号の取り違いだと思われます。
smb_confのmanpageの「logon home」の説明には、
以前ののSambaのバージョンでは、"logon path" パラメータが "logon home" パラメータの代わりに用いられていた。これにより、"net use /home" がうまくいかなくなる代わりに、ホームディレクトリ外にプロファイルを作成する事ができた。現在の実装は改善され、上記のトリックを使えば、このパラメータをプロファイルの位置の指定に使うことができる。 smb_conf(5)..."28 Feb 1999(JP-2000/05/14)" "Samba2.0.7"
ここに出てくる「上記のトリック」とは、
このパラメータを Windows 9X ワークステーションで使用した場合、移動プロファイルを、ユーザのホームディレクトリ中のサブディレクトリに格納される事が可能となる。これはたとえば以下の方法で行なう。
" logon home = \\%L\%U\profile"これによって、Sambaは、クライアントが NetUserGetInfo 関数等を使ってホームディレクトリの情報を要求した場合に、上記の文字列を返すようになる。 Windows 9Xクライアントはユーザが "net use /home" コマンドを発行すると指定された文字列を \\server\share に切り捨てる。しかし、プロファイルを扱う時には上記で指定された完全なフルパス文字列で扱う。
smb_conf(5)
つまりは、Windows9xがユーザープロファイルの1項目としてユーザーホーム(ディレクトリ)を扱っていたのに合わせて、logon path
だけを使い、WindowsNTではlogon path
とlogon home
を分けて使っていた。これを混同した解説があって、双方でlogon home
をうまく使えるように実装を変更したということなのだと思います。
当時の記録を見ると、/home/username にprofileデータがコピーされるようになったと書かれています。たぶんsmb.confに設定しても無視されていた logon home = \\%L\%U
という記述が、有効になったということなのでしょう。これをlogon path
と同じに、logon home = \\%L\profiles\%U
として急場をしのいでいます。
年度替わりを機に移動プロファイルの保存位置を新しいsambaに合わせます。
これまで
logon path = \\%L\Profiles\%U logon home = \\%L\Profiles\%U
これを変更
logon path = \\%L\Profiles\%U logon home = \\%L\%U\.profile
logon path の方は無視されます。profileにドットがついているのはsmb.confの例としてあったからです。ドットで始まるファイルやフォルダはLinuxでは隠しファイルになるので、Linux側から見ると煩わしくなくなります。しかし、Windows側から見ると隠しファイルにならないので意味がありません。そこで、ある時からドット無しで使うようになっていますが、これは決め方の問題です。\\%L\%U\profile としても同じです。
いままで
net time \\zebedee /set /yes net use s: \\zebedee\share net use /home
これを変更
net time \\zebedee /set /yes net use s: \\zebedee\share net use u: /home
これで \\zebedee\username を U:ドライブに割り当てる w1.js は不要になりました。しかし、これまでの98SE機にはレジストリの中に AddNetDriveという値が残っていて、w1.jsを実行してu:ドライブに接続しようとします。しかし、logon.bat 中の net use u: /home ですでにu:ドライブに接続されているので、上記と同じ「ローカルデバイス名がすでに使用されている」というエラーになります。w1.js を書き換えて、w1.jsを実行する設定を消去することにします。
var objShell; var nResult; var strReg = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\run\\AddNetDrive"; objShell = WScript.CreateObject("WScript.Shell"); objShell.RegDelete(strReg);
複数回実行しても大丈夫なはず。全機でログインされたら、w1.jsはサーバーから削除します。
このように、第二期のポイントはsambaのバージョンアップに伴い logon home の扱いが変更になったので、これに従ったというところです。この後、以下に表にしたようなことがあって、さらに小さな変更があります。
年月日 | サーバー名 | できごと |
---|---|---|
2001/01/14 | zebedee | samba2.0.7に合わせて、logon home の変更(上記) |
2001/04/某 | zebedee | WindowsMe機40台追加と新学年に伴い設定に若干の変更 |
2001/08/06 | zebedee | システム用HDDが故障で停止。データ用HDDを分けていたので生徒のデータは無事。 |
2001/08/07 | joel | 新しいサーバーを製作し、移行。OSが Miracle Linux に変更になる。新サーバー名をjoelとする。 |
2001/08/20 | zebedee | HDDを交換して復活させる。内部DNSとインターネットアクセス用のproxyの役割を分担させることにする。OSは Miracle Linux |
ユーザーホームが、Linuxのユーザーホームと同じ //zebedee/<usernsme>/ を指すようになり、プロファイルの位置が //zebedee/<usernsme>/.profile に移動してきたので、マイドキュメントの位置を //zebedee/<usernsme>/user に変更しました。これがどの時点だったかははっきりしません。
以下は、サーバーがまだ zebedee だったときに変更になったとして記述しています。
第一期に準じて設定を概観します。
主要な部分のみ。
#======================= 全体的な設定 ================================== [global] client code page = 932 # coding system = EUC coding system = HEX workgroup = vine server string = Samba %v security = user encrypt passwords = yes domain master = yes local master = yes preferred master = yes os level = 65 domain logons = yes logon script = logon.bat logon path = \\%N\%U\.profile #Windows 95/98では無視されます logon home = \\%N\%U\.profile wins server = 192.168.1.1 #教員用のsambaサーバーがwinsの役目をしています wins support = no dns proxy = no hosts allow = 192.168.1. 127. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 oplocks = no log file = /var/log/samba/log.%m max log size = 50 deadtime = 15 read size = 65536 ; level2 oplocks = Yes level2 oplocks = no # ========================== 各共有の定義 =========================== [netlogon] comment = Network Logon Service path = /home/netlogon write list = adachi,otawa browseable = no [printers] comment = All Printers path = /var/spool/samba browseable = no printable = yes [homes] comment = %U s Home Directories browseable = no writable = yes # デフォルトでは、UNC で指定することで、他人のホームディレクトリにも接 # 続が可能です。これを禁止する場合は、以下を設定してください。 valid users = %S [public] path = /home/public/%U write list = %U create mask = 0755 directory mask = 0755 browseable = No [share] path = /home/share write list = adachi,otawa guest ok = Yes [www] path = /shome/httpd/html valid users = adachi,otawa,ohno write list = adachi,otawa,ohno create mask = 0775 directory mask = 0775 browseable = No [prog] path = /shome/dosprog create mask = 0755 directory mask = 0755 writeable = Yes ; write list = adachi,otawa,ohno browseable = Yes
[profiles]のサービスは不要になり、削除しています。(Widowx9Xはユーザーホームに置くため)
sambaは \\サーバー名\サービス名 (UNC)でアクセスします。例えば[share]には \\zebedee\share でアクセスします。[home]だけは例外で、サービス名はhomeでなく、ユーザー名が当てられます。
それぞれのサービスの用途は次のとおりです。
サービス | 用途 |
---|---|
[netlogon] | 第一期からあり。ドメインログオンするときに使用する logon.bat などを格納する |
[printers] | samba経由でサーバーのプリンタを使えた。授業で使ったプリンタはこれでなく、ネットワークアダプタを取り付けた1教室4台の EPSON PM-880C,または770C を使う。 |
[homes] | 第一期からあり。ユーザーホーム。profilesとマイドキュメントがここに置かれる。普通path=の指定をせず、Linuxのユーザーホームを使う。 |
[public] | 生徒が授業で作成するウェブページの場所として用意 |
[share] | 第一期からあり。生徒に配布するファイルを置く。 |
[www] | 第一期からあり。授業で使うテキストを置く。 |
[prog] | 第一期からあり。Windowsのソフトウェアを置く。クライアントPCのショートカットから起動する。 |
前にも書きましたが、%に英字(大小を区別)は置換されて接続に応じた値になります。主なものをいくつか書いておきます。
- %L = サーバの NetBIOS 名。 これを用いれば、クライアントから呼ばれた名前に応じて設定を変更することが 可能となる。 サーバは「2 つの人格」を持つことができる。
- %U = セッションのユーザ名。 (クライアントに要求されたユーザ名であるが、 必ずしもそこから取得した名前と同じものではない)
- %S = 現在のサービス名。([home]でユーザーのみ)
- %N = NIS のホーム・ディレクトリ・サーバの名前。 これは NIS の auto.map エントリから取得される。 Samba を --with-automount オプションなしでコンパイルしてあると、この値は %L と同じになる。
smb_conf(5)
.profileとすることでLinuxでは隠しファイルになりますが、Windowsからは見えてしまうので、マイドキュメント中に自分で作ったものでないフォルダを生徒が目にすることになります。そこで、\\zebedee\<username> の中に user というフォルダを作っておいて、\\zebedee\<username>\user をマイドキュメントに指定するという構成にしました。実はこうすることで、Al-Mailのメールボックスフォルダも見えなくなるので好都合です。
例として、alphaというユーザーがログオンしているときの接続の様子を図示します。
Windows\Profiles\alpha の内容と /home/alpha/.profile の内容が同期されます。
U:はあくまで /home/alpha に接続されていて、マイドキュメントは u:\user に割り当てられます。
今回も授業の前日になってしまいました。販売店に並ぶのと同じ設定のWindows機が40台で、最初は一台ずつ設定しなければなりません。情報科の教員2人に加え一般教員が3人応援に入ってもらっての作業でした。
LANを通して接続、 プロキシは設定しない、 すぐに接続はしない。
Microsoft ネットワーク クライアント ネットワークカードを指したアダプタ TCP/IPプロトコル
NTドメインにログオンをチェック。ドメイン名は vine クイックログオンにする。
IPアドレス 192.168.1.201~250 サブネットマスク 255.255.255.0
ホスト <machinename> ドメイン seiai.ed.jp DNSサーバー 192.168.1.129 <machinename> は fish01~fish40
コンピュータ名 <machinename> ワークグループ vine コンピュータの説明 空白にする<machinename> は fish01~fish40
<yesというのはキーボードからy[enter]と入力したことにする仕掛けです。実際のファイルは残っていませんが、たぶん y\d\a の3バイトが入ったファイルでしょう。
rem はコメントです。
rem desktop del "c:\windows\デスクトップ\オンライン サービス\*.*" <yes rmdir "c:\windows\デスクトップ\オンライン サービス" del "c:\windows\デスクトップ\Windows Media Player.lnk" del "c:\windows\デスクトップ\Acrobat Reader 4.0.lnk" copy "c:\windows\デスクトップ\お知らせ.LNK" c:\backup del "c:\windows\デスクトップ\お知らせ.LNK" copy "c:\windows\デスクトップ\ユーザーズ マニュアル.pdf" c:\backup del "c:\windows\デスクトップ\ユーザーズ マニュアル.pdf" rem プログラム del "c:\windows\スタート メニュー\Windows Update.lnk" del "c:\windows\スタート メニュー\プログラム\オンライン サービス\*.*" <yes rmdir "c:\windows\スタート メニュー\プログラム\オンライン サービス" del "c:\windows\スタート メニュー\プログラム\ゲーム\インターネット スペード.lnk" del "c:\windows\スタート メニュー\プログラム\ゲーム\インターネット ハーツ.lnk" del "c:\windows\スタート メニュー\プログラム\ゲーム\インターネット バックギャモン.lnk" del "c:\windows\スタート メニュー\プログラム\ゲーム\インターネット チェッカー.lnk" del "c:\windows\スタート メニュー\プログラム\ゲーム\インターネット リバーシ.lnk" rem MyDoc mkdir "c:\backup\My Pictures" copy "c:\My Documents\My Pictures" "c:\backup\My Pictures" del "c:\My Documents\My Pictures\*.*" <yes rmdir "c:\My Documents\My Pictures" rem rmdir "c:\mydocu~1\mypict~1" mkdir "c:\backup\My Music" copy "c:\My Documents\My Music\*.*" c:\backup\Music" del "c:\My Documents\My Music\*.*" <yes rmdir "c:\My Documents\My Music"
機械固有の設定(HKEY_LOCAL_MACHINE)とデフォルトのユーザー設定(HKEY_USERS\.DEFAULT)を変更します。これをマージすることで設定が変わります。
これに対して、個々のユーザーの設定の初期値はUSER.DATで設定します。雛形ユーザーで設定したものを、プロファイルディレクトリ(/home/<username>/.profiles/ )にコピーします。
設定値や変更の制限はシステムポリシーファイル CONFIG.POLで行います。これは /home/netlogon に置くだけです。
REGEDIT4 [HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer\Main] "Start Page"="http://www.seiai.ed.jp/home/" "First Home Page"="http://www.seiai.ed.jp/home/" [HKEY_LOCAL_MACHINE\Network\Logon] "DontShowLastUser"=dword:00000001 [HKEY_USERS\.DEFAULT\Control Panel\desktop] "Wallpaper"="C:\\WINDOWS\\abblue.bmp" "TileWallpaper"="1" [HKEY_USERS\.DEFAULT\Control Panel\Colors] "Background"="0 0 128" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\DISPLAY\0000\MODES\32\1024,768] @="60,70,75,85" "RefreshRate"="60" [HKEY_LOCAL_MACHINE\Config\0001\Display\Settings] "RefreshRate"="60" [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemStart\.Current] @=""
最後のは起動時の音のファイルです。
ユーザー名とパスワードの作成については、第一期と同じです。
登録のもとになるユーザー名とパスワードの元ファイルをつくります。次のようなものです。
a8hanako 8ydq6din hanazawa hanako a8wakame hjrmr0kd isono wakame a8nobita t8wc1gxr nobi nobita a8sizuka jdbtu4j8 minamoto shizuka a8takesi 5nczum4c gouda takesi .....
これを使って3つの作業をします。(1)unixユーザー登録、(2)sambaユーザー登録、(3)プロファイルフォルダを用意 です。
今年のポイントはプライベートグループを使用することにして、その他の所属グループとして vine グループへ登録したことです。
-g オプションはプライマリーグループの指定です。これをなくせば自動的にプライベートグループになります。もっと昔は users というグループになりましたね。-G オプションはその他のグループに加えるオプションです。-m は/home/User を作って必要なファイルをコピーするオプションです。
#!/usr/bin/perl # -g $def_group for primary group # if not exist -g , set private group print "add new user\n"; $filename="nampast.txt"; open(SFILE,$filename) || die "cannot open $filename"; while (<sfile>){ chop; chop; ($uname,$password,$gc,$os)=split(/ /); print "$u - $p - $gc / $os\n"; $user_fullname=$gc . " " . $os; print "$user_fullname\n"; `/usr/sbin/useradd -c \"$user_fullname\" -m -G vine $uname`; open(CMD, "| /usr/sbin/chpasswd > /dev/null"); print CMD "$uname:$password\n"; close(CMD); } close(SFILE);
第一期で使ったものと同等です。
#!/usr/bin/perl print "set samba passwd\n"; $filename="nampast.txt"; $ct=0; open(SFILE,$filename) || die "cannot open"; while (<SFILE>){ chop; chop; ($uname,$password,$gc,$os)=split(/ /); print "\n"; $user_fullname=$gc . " " . $os; print "$uname $user_fullname -"; #`/usr/bin/smbadduser $uname:$password`; open(CMD, "| /usr/bin/smbpasswd -as $uname > /dev/null"); print CMD "$password\n$password\n"; close(CMD); $ct=$ct+1; print "$ct\n"; } close(SFILE);
-a は add でユーザーの追加。-s は標準入力からデータを受け入れる指定。
ユーザーの削除は /use/bin/smbpasswd -x username と -x オプションを使います。
/home/<username> は /usr/sbin/useradd の -m オプションでやってくれているので、その中に .profile フォルダを作成して /home/testu/.profile/ にある雛形ユーザーのプロファイルデータをコピーし、マイドキュメントになる user フォルダを用意しています。
#!/usr/bin/perl print "helo!\n"; $filename="nampast.txt"; $ct=0; open(SFILE,$filename) || die "cannot open"; while (<SFILE>){ chop; chop; ($uname,$password,$gc,$os)=split(/ /); print "$gc $os -"; `mkdir /home/$uname/.profile`; `mkdir /home/$uname/user`; `cp -rf /home/testu/.profile/* /home/$uname/.profile`; `chown $uname:$uname /home/$uname/.profile -R`; `chown $uname:$uname /home/$uname/user`; `chmod 0755 /home/$uname/`; `chmod 0700 /home/$uname/.profile -R`; `chmod 0770 /home/$uname/user`; $ct=$ct+1; print "$ct\n"; } close(SFILE);
今回は、Windows98SEとWindowsMeの二種類の生徒機があって、授業ではクラスごとに実習室を固定しているものの、放課後や情報以外の授業では渡り歩くことも考えられます。どちらからログインしてもマイドキュメントは同じで、少なくとも授業で使うソフトについては同じというところを目指しました。概ね良好でした。
サーバーにプロファイルがないと、各機械のデフォルトユーザーのプロファイルが使用されます。多少違っていても問題なかったのだろうと思います。
もともとWindows98SEだけの場合でもプロファイルのフォルダ名が異なる場合がありました。「NetHood」と「ネットワークコンピュータ(半角)」、「Recent」と「最新」と言う具合です。Meが加わって全角カナのフォルダも出現し手に負えなくなって放置しました。顕在化した不具合は一つだけで、ディスプレイの色深度に関するものでした。これは別の機会に解説することとします。
実習室が2つとなり、両方を同時に使うと最大で80台のクライアント機が一つのサーバーにぶら下がることになります。特に、2つ目の実習室は1GBのケーブル1本でつないでいるので多少不安ではありましたが、どちらの要因でも動作が遅く感じられることはありませんでした。
2001年の8月6日に、授業用のサーバーであったzebedeeのシステム用HDDが動作不良になり、強制的に停止させました。夏休み中ですから授業に支障なく、生徒データの入ったHDDは無事でしたので、こちらも問題ありません。
もともと、このサーバーはWindows機として退役したものに Linuxをインストールしたものです。HDDの寿命を考慮してデータ用のHDDは新品で追加しました。ですから、想定内の故障の仕方です。
データ用HDDは/homeにマウントされていました。/home以下のフォルダ名がユーザー名ですから、ユーザー名とパスワードの表があれば戻せます。ただし、各フォルダの所有者はuidという番号になっています。ユーザー名とuidが正しく対応付けられないとフォルダのとりちがいが起こります。uidは大抵1000番から登録順につけられていきますから、登録順に注意すればなんとかできるはずではあります。今回は、/etc/passwd と /etc/shadow と /etc/smbpasswd が救出できましたので、新OSをインストール後に1000番以降をコピーすることで手間を省くことができました。
故障したサーバーは Red Hat Linux 6.1J でしたが、新しいサーバーは Miracle Linux 1.0 にしました。このディストリビューションはsambaの日本語版を使用することを中心に考えられているものなので、設定のわかりやすさと不具合の修正がいち早く入ることを期待しての選択でした。Linuxのディストリビューションでは普通ですが、OSは無料で使え、もし、サポートを必要とするなら有料でいたしますというものでした。無料で使わせていただきました。Turbo Linux というディストリビューションをベースにしたものでした。
サーバー名はjoelにしました。やはり X は入れずにCUIで運用することにしました。普段使用しているWindowsから TeraTrem というソフトを使ってtelnetで操作して使うというやり方が便利です。セキュリティ上の理由からtelnetがsshに代わるのは、2002年でした。
新サーバーを設置して落ち着いた後、故障したzebedeeのHDDを交換して復活させ、(1)内部DNSと(2)インターネットアクセス用のproxyの役割を分担させることにしました。OSはjoelとおなじ Miracle Linux 1.0 とし、proxyはsquidを使用。インターネット接続を実習室ごとに許可/不許可を切り替える働きをさせます。
当時作成した画像がありましたので掲載しておきます。
judasは教員用に以前(1997年)から動いていたもので、ちょうど同時期(2001/8/30)にシステムHDD故障してので更新したものです。
applicationとあるのはWindowsのソフトを置いてクライントから実行するための機能という意味ですが、実際にzebedeeで使っていたのはAl-Mailだけだったと思います。K2Editorはユーザーごとの設定ファイルをプロファイルではなくプログラムファイルの配下に保存しようとするので、書き込み権限が必要となり、joelに置かざるを得なくなっていました。
166MHzなどの記述はCPUの周波数、64MBなどはメモリ容量です。こういう時代でした。
記録には突然の停電が3回ほどあったとあります。8月6日の前後は筆者は出張中でしたが、そういえば毎年この時期に電気設備の点検のための停電があります。サーバーが常時動いていることは、まだあまり意識されない時代でした。
この年の10月に中古の無停電電源装置を導入します。