|
>>3684 Phantom 履歴や変更点の確認をしたいということなら、cvs や subversion などのバージョン管理ツールを使うのがよいでしょう。 履歴を何段階でもとることができ、細かい修正点を記録できるという 利点がありますが、その一方でファイル更新とバージョン管理とが 密に連携しているわけでないので、バージョン管理ツールへの登録 忘れが発生する可能性がある、という欠点があります。 あるいは > ユーザ名、時間、アクセス先 だけの情報だけでよいなら、 - ユーザ名、時間、ファイル名を記録する - エディタを起動する - (必要なら) 編集前と編集後のファイルをどこかに保存する というファイル編集用スクリプトを作成し、それを使うように すればよいでしょう。もちろん、このスクリプトを使わずに直接 ファイルを修正してしまうとアウトです。 もっと厳密にやりたいならシステムコールをフックするタイプ のものが必要です。たとえば Linux Security Module (LSM) や Sysrace: http://www.citi.umich.edu/u/provos/systrace/linux.html など。 しかしこれらの主目的はシステムコールを許可するかしないかを 決めるためのものなので、ログを記録できるような仕組みがある のかどうかはわかりません。 > Unix系OSで実現するのが難しいから情報が少ないのでしょうか? Windows なんかだと API のフックが簡単にできますが、UNIX は そこらへんの機能が弱いのです。 |
|
>>3685 68user 凄く素早いレス有難う御座いました。 沢山の情報を与えてくださって感謝しております。 > cvs や subversion 成る程。バージョン管理ツールという手が有りましたか。 > ファイル編集用スクリプトを作成 作ってみたいと思います。ただ、仰る通り私、忘れっぽいので直接ファイル 編集しちゃって失敗しそうです。 > LSM や Sysrace 私には難しいみたいですが、一つの手として調べてみます。 |
|
>>3686 Phantom >作ってみたいと思います。ただ、仰る通り私、忘れっぽいので直接ファイル >編集しちゃって失敗しそうです。 エディタコマンドと同じ名前のスクリプトを作成し、 スクリプトを格納したディレクトリを環境変数PATHの先頭に追加しては如何なでしょうか? |
|
Solaris7にて/dev/consoleに出力しているログを横取りして ファイルに落としたいんですが、なにかいい方法はありますか? ありましたらご教授願います。 |
|
こんにちは。 あるSolarisからLinuxにPingすると、 do you want to ping broadcast? Then -b というメッセージがかえってくるのですが、 どういう意味ですか?他にも10台あって、この2台以外はお互いちゃんとPingできるのですが、どうしてでしょうか? SolarisのIPとホストは172.17.155.01 AT002といいます。 Linuxのほうは172.17.155.17 AI007といいます。 SolarisからLinuxにPingすると"no answer from AI" といわれ。 LinuxからSolarisにPingすると"do you want to ping broadcast? Then -b" なります。 教えてください。 MM |
|
>>3688 scott syslog に出力するようにして、syslog.conf の方で ログファイルにも落とすようにする、という方法しか 思いつきませんでした。 >>3689 MM > do you want to ping broadcast? Then -b > どういう意味ですか? x.y.z.255 などのブロードキャスト宛に ping したいので あれば、-b オプションを付けなさい、ということです。 とりあえずネットワーク設定がうまくいっていないようなので、 そこを見直すのがよいのではないでしょうか。たとえば /etc/hosts に変な記述がないかとか、ネットマスクは同じか とか、IP アドレスを直接指定して ping するとどうなるかとか。 で、質問です>どなたか 質問 1. 「Do you want to ping broadcast」でぐぐると、 http://licensing.steeleye.com/open_source/diffs/ping.c が見つかりました。 #ifdef linux if (source.sin_addr.s_addr == 0) { int probe_fd = socket(AF_INET, SOCK_DGRAM, 0); dst.sin_port = htons(1025); if (connect(probe_fd, (struct sockaddr*)&dst, sizeof(dst)) == -1) { if (errno == EACCES) { if (broadcast_pings == 0) { fprintf(stderr, "Do you want to ping broadcast? Then -b\n"); exit(1); } } } } bind(s, (struct sockaddr*)&source, sizeof(source)); #endif とありますが、何をやってるのかさっぱりわかりません。 source.sin_addr.s_addr が 0 なら、UDP でポート 1025 に connect? なんのために? connect したら、それを bind? なんのため? 質問 2. あるディストリビューションの Linux で採用している ping の ソースを見たいんですが、どこを探せばいいでしょうか? たとえば RedHat ならどこを見ればよいですか? |