投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2013年7月31日水曜日

【Linux CentOS6 64bit】samba共有でのファイルやフォルダへの操作履歴をログに残す【samba 3.5.10】

ファイルをネットワークで共有するために、ファイルサーバーソフトウェアのsambaを用いている。

利用ユーザーが増えてくると、ファイルとフォルダの作成や削除などの操作を、
ログに残しておいた方が良い場合がある。

新しいバージョンのsambaでは設定を行えば、簡単に共有のファイルやフォルダに対する操作をロギングできる。
sambaの共有にファイルやフォルダへの何らかのアクセスがあると、
その情報がrsyslogdを通して、ログファイルに書き込まれていくようになる。



<手順>
■sambaの設定ファイルである smb.conf の編集を行った

操作情報を記録するための設定は、各共有ごとに行った。
次の例は、sharename という共有においてファイルやフォルダへの操作をロギングする設定だ。
[sharename]
(省略)
vfs objects = full_audit
full_audit:prefix = %u|%I|%S
full_audit:failure = mkdir rmdir pwrite rename unlink
full_audit:success = mkdir rmdir pwrite rename unlink
(省略)
・full_audit:prefix = %u|%I|%S
指定している三つの値でそれぞれ、ユーザー名、IPアドレス、共有名が、併せて操作ログに記録されるようになる。

・full_audit:success = mkdir rmdir pwrite rename unlink
ファイルやフォルダの操作が成功した場合にログに残す操作を設定している。

mkdir  …フォルダの作成
rmdir  …フォルダの削除
pwrite  …ファイルへの書き込み (ファイルの作成ではない)
rename …リネーム
unlink  …ファイルの削除

定義された操作は他にも色々ある。(†1)
ログファイルが膨れ上がったり、ファイルシステムに負荷をかけたり、
悪影響を及ぼすかもしれないので、必要最小の記録にとどめている。

smb.conf を保存するだけで、sambaにこの新しい設定が反映されたようである。
(場合によっては、sambaの再起動が必要になるかもしれない)



■ rsyslogの設定を確認した

以上の設定がsambaで完了すれば、操作情報が、rsyslogに送られるようになるようだ。
rsyslogのデフォルトの設定には、次の記述がある。
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
*.infoというデフォルト設定が効いて、/var/log/messages にログが記録されていくようだ。

デフォルトの設定のまま変更はしていない。



■動作確認を行った

○次のコマンドで、hiro というユーザーによるsamba共有(sharename)に対する操作を、grepで抽出して表示させた。

[root@FServer log]# grep hiro /var/log/messages | less
Jul 31 00:00:30 FServer smbd[15060]: hiro|192.168.7.31|sharename|rmdir|ok|tree/14/test
hiroは、共有名sharenameにあるtreeフォルダ内14フォルダ内にある testというフォルダを削除したということがわかる。
そして、そのクライアントPCのアドレスは192.168.7.31である。


○削除フォルダに、さらにサブフォルダやファイルが存在している場合

削除したフォルダに、ファイルやサブフォルダがさらに存在していた場合でも、
まず削除対象のフォルダ内にあるファイルが削除(unlink)されて、
続いてフォルダが削除(rmdir)されている様子がログから読み取れた。



(参考)
・Samba – file audit log with full_audit
< http://a32.me/2009/10/samba-audit-trail/ > 2013年7月31日

・vfs_full_audit — record Samba VFS operations in the system log (脚注 1)
< http://www.samba.org/samba/docs/man/manpages/vfs_full_audit.8.html > 2013年7月31日

2013年7月30日火曜日

【MS ACCESS 2000~2010】 ファイルがACCESS 2010 Runtimeで開けない!そのときの対応メモ

最終更新 2015年12月25日 (ACCESS Runtime 2010 Service Pack 2について追加)


開発環境としてACCESS 2000から、2010まで至り、細々とプログラムを開発してきた。
そうして開発したものはユーザー環境においてRuntimeで動作させる。

ACCESS 2010までなんとかやってきたのは良かったが、今までに経験しないエラーに見舞われ焦った。
開発したファイルが、開発環境と同じバージョンのACCESS 2010 Runtimeで開けないのだった。

だからと言ってACCESS 2010で変換したADEファイルは、ACCESS 2007 Runtimeでは開けなかった。

この一連の問題で気付いた点と対策のメモを残す。
最後のほうに対策とまとめ。


□ACCESS2000から2002を経て2003に至り、ADPファイルでVBAプログラム開発

かなり前にACCESS 2000でADPファイルでSQL SERVERと連動させたプログラムを開発した。

その後、開発環境は、ACCESS 2002を経て、ACCESS 2003になった。
ACCESS 2000では、予期せぬADPファイル破壊にたびたび見舞われていたからだ。
そうしてこの段階で、ADPファイルも2003形式に変換した。

さらに、安定動作を求めて、開発環境をACCESS 2010(32bit)に替えた。
ADPファイルの形式は、ここでも2003のままにしていた。



□ACCESS 2010で作成したADPファイルを、さらにADEに変換し、配布しようとしたが・・・

さて、こうしてACCESS 2010(32bit)で続けて開発したADPファイルを、
ADEファイルという配布用形式(ソースを見たり変更したり再開発が不可になる形式)に変換した。
これを、当然のようにそれまで使っていたACCESS 2007 Runtimeで動作させようとしたら、
次のエラーが発生して、終了。
”データベースの形式を認識できません
データベースは使用しているバージョンよりも新しいバージョンで作成されています。
現在のバージョンにアップグレードしてからデータベースを開いてください。”
( 後で気付いたが、ADPファイルは2003形式であっても、それをADE形式に変換すると、
その変換を行ったACCESSのバージョンが継承されるということではないか。
ACCESS 2010で開発を続けていたもともとの2003形式ADPファイルは、ACCESS 2007 Runtimeで開けた。)



□ACCESS 2010 Runtimeで、ファイルを開くが重症そうなエラーが発生した・・・

どうしてもADEファイルで配布したかったので、このACCESS 2010で変換したADEファイルを、
開発環境と同じバージョンであるACCESS Runtime 2010で実行させると、次のエラーが生じた。
”指定した式に、Microsoft Accessが見つけることができない関数名が含まれています”
そうして、「すべてのマクロを停止」というボタンしか押せない状態になって、次の情報が現れた。
・マクロ名 AutoExec
・アクション名 プロシージャの実行
・引数 main()
・エラー番号 2425
そうして、強制終了される。

しかし、ACCESS 2010では正常に動作していたADEファイルだったのだ。それがACCESS 2010 Runtimeでは動作しなくなった。
ADPファイルの場合でも同じエラーが生じた。

この段階ではACCESS 2010 Runtimeを使うことはあきらめた。



□2010で開発していようとも2003形式のADPファイルなので、ACCESS 2003に戻してみた

最終的にどうしたか。


以下の作業では保存作業が伴う。
オリジナルファイルの場合、言うまでもなく、バックアップファイルを作成しオリジナルをキープしておく。

そうして、Access 2010で開発したそのADPファイル(2003形式)を、再びAccess 2003で開いた。
そこでsql server接続の設定もきちんと行って、接続も成功させた。

さらに、とりあえず修復処理をして、続けてADEに変換した。
もし、ADEファイルへの変換に失敗したら、「VBAコードのコンパイル作業」をACCESS VBAのメニューでまず行って、ファイルを「保存」しておく。 

 ( 
 しかし、それでもACCESS2003において「ADEファイルを作成できませんでした」などとエラーが出る場合もあった。
このとき気づいたことは、すでに当該ADPファイルにおいてフォーム内の操作でイベント関係のエラーが発生していたことだった。
何かエラーがある場合、ADEに変換することができないようだ。 
 私の場合、ACCESS2003で開発してきたADPファイルにおいて、
既存フォームをコピー&ペーストして新しいフォームを作成した直後にこのエラーに遭遇した。
だから、コピー&ペーストして作成したフォームを全削除して、ACCESS2010を使って泣く泣く作成しなおした。
 すると先ほどのフォームのイベントエラーは発生しなくなり、無事にADEファイルに変換することができるようになった。
 )

こうしてようやく、ACCESS 2003で変換したADEファイルができた。
こうして作成したADEは、ACCESS 2007 Runtimeでも正常に開くことができました!
これで十分です。

Microsoft Office Access 2003

中古価格
¥8,100から
(2018/3/19 23:15時点)


この段階で、2015年12月25日現在でダウンロード可能なACCESS Runtime 2010 SP2でも、
起動可能になった。(下記、追申参照)



□まとめ

というわけなので、開発からユーザー配布までには次の手順を取らなければなりません。
ACCESS 2010で開発(2003形式ADPファイル) → ACCESS 2003で修復&VBAコンパイルして保存&ADE変換
そして、このADEファイルをACCESS Runtime 2007で動作させます。

この段階で、2015年12月25日現在でダウンロード可能なACCESS Runtime 2010 SP2でも、
起動可能になった。(下記、追申参照)


□思うこと
ACCESS2000から始めてACCESS 2003に開発環境を移し、さらにACCESS2010で開発を継続してきた場合、ADPファイルの中で何かおかしなこと、不整合でも生じているのだと思う。
なぜなら、フォームをコピー&ペーストして別のフォームから新しいフォームを作成すると、
作成したフォームでイベント関係のエラーが発生するようになったからである。
最初はうまく動作していても時間を経てからエラーを出すようになるのだから曲者である。
もうフォームなどのコピー&ペーストはしない。安全指向でいこう。
あとまだもうちょっとACCESSでの開発が残っているんだ。

ACCESS 2013では、ADP形式がサポートされなくなってしまうようだ。
悩み多きACCESSを開発環境とするのは卒業して、明々白々なASP.NETに完全移行しようと思っている。
開発中にADPファイルが壊れるのもうんざりだし、今までのやり方が通じないなら、ACCESS VBAにこだわらない。



追申:

ACCESS 2003で変換したADEファイルは、2015年12月25日現在にダウンロード可能な、
Access 2010 Runtime 32bit でも、開くことができました。
Windows 10 Pro 64bit(IPv6とIPv4のデュアルスタック)環境で動作テストしました。

ただし、SQL Serverへネットワーク越しにつながらない問題が生じたので、
ACCESS 2010 Runtime 32bit用のService Pack 2で、更新することで対応できました。

このようにWindows 10(IPv6とIPv4のデュアルスタック環境)で、ACCESS Runtime 2010が動作し、
ADPファイルを開けたものの、Windows 10は、今後どんどんとアップデートされていくらしいから、
またいつ、「開かない、動かない問題」に遭遇するか心配です。
ACCESS Runtime 2010 SP2は、いったいいつまでWindows 10でもサポートされるんだろうか。
持っている全てのパソコンのOSをWindows 10にアップグレードするかしまいか、迷っているところ。


ところで、ACCESS 2007 Runtimeの環境では、ネットワークのIPv6設定が有効化されていて、
グローバルIPv6アドレスが取得されている場合、IPv4環境のSQL Serverへアクセスできなかった。
Windowsのネットワーク設定から、IPv6設定を無効化することで正常につなげられた。
(たぶん、ACCESS Runtime 2010 SP2では、この問題は発生していない。)

2013年7月24日水曜日

【MS VisualStudio 2010 Pro】 VS 2010 Pro から CentOS6.4 64bit版で動作している「MYSQL 5.1.69」 に接続できるようにする 【Windows 7 Pro 64bit】

VS 2010 Pro の、「サーバーエクスプローラー」にある「データ接続」を使って、
別マシンで動作しているMYSQLサーバーに接続し、テーブルの作成作業などをしたい。

ところが、標準では VS 2010 Pro はMYSQLサーバーに接続することができないようだ。

MYSQLサーバーに接続できるようにするには、”専用のツール”をインストールするだけだった。



1、Visual Studio 2010 Proに対応した”専用ツール”のダウンロード

次のリンクから、6.3系の.NET Connectorをダウンロードする。
( mysql-connector-net-6.3.9.msiというファイルがダウンロードできた。)

http://dev.mysql.com/downloads/connector/net/6.3.html#downloads

(注意)
mysql-connector-net-6.7.4.msi という6.7系のものではダメだった
6.7系では、Visual Studio用の統合はないらしい。 (†1)
6.6系では、Visual Studio 2012のサポートがあるらしい。 (†2)


2、ダウンロードしたツールのインストール

ボタンが三つ表示されインストールタイプが選べたので、すべてをインストールするタイプを選んだ。



3、VS 2010 Pro を起動し、MySQLサーバに接続をする設定を行った

サーバーエクスプローラーを開き「データ接続」項目で、右クリックし、
接続の追加(A)を選択する。

開いたウインドウで、「データソース」欄の右にある変更(C)ボタンをクリックする。

データソースの変更ウインドウ内のデータソース一覧に、”MySQL Database”が加わっているので、
選択して、OKボタンを押す。

接続の追加ウインドウには、
Server name 、User Name 、Password が入力できるようになっている。
さらに、Database nameが一覧から選択できるようになっている。

MySQLサーバーで設定した情報に基づいて、適切な値を入力し、OKボタンをクリックすれば完了。


作成されたMySQLへの接続では、次の項目を確認できた。
・Tables
・Views
・Stored proceadures
・Stored Functions
・UDFs




(参考)
・ 21.2.3. Connector/Net Visual Studio Integration (脚注 2)
< http://dev.mysql.com/doc/refman/5.1/en/connector-net-visual-studio.html > 2013年07月24日

・Download Connector/Net (脚注 1)
< http://dev.mysql.com/downloads/connector/net/6.3.html#downloads > 2013年07月24日

・Introducing the MySQL Installer for Windows
< http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html > 2013年07月24日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad