タイトル/名前 | 更新者 | 更新日 |
---|---|---|
技術/プロトコルまとめメモ(HTTP,SMTP,POP3) | msakamoto-sf | 2009-04-11 00:43:25 |
技術/Linux/dateコマンドメモ | msakamoto-sf | 2009-04-11 00:10:00 |
技術/Linux/etc/issue(.net)ファイル | msakamoto-sf | 2009-04-11 00:06:20 |
日記/2005/04/08/Ethernetにおける物理的切断のソケットレベルの検出方法 | msakamoto-sf | 2009-04-05 20:37:40 |
日記/2005/05/08/DefaultRoot(chrootによるディレクトリ移動制限)の罠:ProFTPD | msakamoto-sf | 2009-04-05 20:35:31 |
日記/2005/04/07/Oracleデッドロックの解説PDF | msakamoto-sf | 2009-04-05 20:13:03 |
日記/2005/04/07/Oracleのデッドロック検出機構メモ | msakamoto-sf | 2009-04-05 20:07:42 |
日記/2005/04/06/Javaのソケットについてreadタイムアウトやケーブルが外れたとき | msakamoto-sf | 2009-04-05 20:06:03 |
日記/2005/04/03/シーケンスをデフォルト値に。MySQLのauto_incrementをPostgreSQLで | msakamoto-sf | 2009-04-05 20:03:39 |
日記/2005/03/27/sshでのログイン制限 | msakamoto-sf | 2009-04-05 19:58:58 |
日本語資料としては「Studying HTTP」を良く参照させて貰っている。
Windowsのコマンドプロンプトから叩く例:
DOS> telnet Microsoft Telnet> set localecho ローカル エコー: オン Microsoft Telnet> o ( to ) www.google.com 80 接続中: www.google.com... GET / HTTP/1.1 Host: www.google.com HTTP/1.1 302 Found Location: http://www.google.co.jp/ ... Microsoft Telnet> q
途中、表示が著しく崩れたりするので注意。
telnet例
$ telnet smtp.example.com 25 220 smtp.example.com ESMTP Postfix > HELO relay.example.org 250 Hello relay.example.org, I am glad to meet you > MAIL FROM:<bob@example.org> 250 Ok > RCPT TO:<alice@example.com> 250 Ok > RCPT TO:<theboss@example.com> 250 Ok > DATA 354 End data with <CR><LF>.<CR><LF> > From: "Bob Example" <bob@example.org> > To: Alice Example <alice@example.com> > Cc: theboss@example.com > Date: Tue, 15 Jan 2008 16:02:43 -0500 > Subject: Test message > (空行改行) > Hello Alice. > This is a test message with 5 headers and 4 lines in the body. > Your friend, > Bob > . 250 Ok: queued as 12345 > QUIT 221 Bye
APOPではない平文パスワードでの例
$ telnet pop3.example.com 110 +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us> > USER foo +OK User accepted > PASS bar +OK Pass accepted > STAT +OK 2 320 > LIST +OK 2 messages (320 octets) 1 120 2 200 . > RETR 1 +OK 120 octets ... > DELE 1 +OK message 1 deleted > QUIT +OK dewey POP3 server signing off (maildrop empty)
Linux系のPOP3メールサーバは、inetd/xinetd経由で起動される構成になっている場合が多い。
上手く接続できない場合は、/etc/inetd.conf または /etc/xinetd.conf/ディレクトリ以下の設定ファイルも確認してみると良い。
現在時刻と日付を表示する :
$ date
現在時刻を設定する :
# date -s 1534 → 15時34分にセット。管理者ユーザーで行う必要あり。
日付も一度に指定する :
2001年12月24日15時にセット。 # date -s "12/24/01 15:00"
2001年12月24日0時0分にセット。 # date -s "12/24/01"
但し、これらはシステムクロックの設定しか行っていない。マザーボードが管理するハードウェアクロックは直っていないので、再起動したら元に戻ってしまう。以下のようにhwclockコマンドを実行し、ハードウェアクロックをシステムクロックに合わせることができる。
# hwclock --systohc
mingettyやagettyといったターミナルプログラムは、ログイン時に /etc/issue ファイルを読み込んで、
Turbolinux Server 7.0 (Esprit) Linux 2.4.9-3 on an i686 (localhost.localdomain)
のようなプロンプトを出力します。
コンソールログインの場合が /etc/issue ファイル、telnet経由ログイン時が /etc/issue.net ファイルを読み込みます。
issueファイルには、幾つかのエスケープシーケンスを使って端末名やマシン名を埋め込むことが出来ます。例えば、TLS7では次のようになっています。
Turbolinux Server 7.0 (Esprit) \s \r on an \m (\n)
\sがOS名、\rがリリース番号、\mがアーキテクチャ、\nがホスト名に置換されて表示されます。
どういうエスケープシーケンスが利用でき、どういう内容が表示されるかはgettyプログラムに依るようです。
例えばTLS7では、inittabを見ると /sbin/mingetty が起動されます。mingettyでは「\l」(小文字のエル)というシーケンスを使うとコンソール番号を表示できます。
Turbolinux Server 7.0 (Esprit) \s \r on an \m (\n) VC: \l
とすると、
Turbolinux Server 7.0 (Esprit) Linux 2.4.9-3 on an i686 (localhost.localdomain) VC: vc/1
という風に表示されます。
mingettyの場合は、manページにどういうシーケンスを利用できるか載っています。
そんなものは仕様上、無い、だそうです。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/newbie.html#abnormalclose
を参照。Ethernetでのリンクエラーはソケットレベルでは検知しないということだそうです。
あともう一点、上記ドキュメントにもありますが結局、物理切断を検出する手法としては必ずエコーを返すようにするか、定期的なパケット送受信で検出するかの二つが現実解となるようです。
いやー・・・。やられた。罠にはまった。
ProFTPDで、ログインユーザーのルートディレクトリを制限(chroot)するための指示子、DefaultRootですが、ず~~~~~っと勘違いしてました。
たとえば、webmasterとmemberグループに対して~/public_htmlに制限するために、こんな風にしてました。
DefaultRoot ~/public_html webmaster, member
・・・動かないんですよ。これ、よ~~~~っくProFTPDのDefaultRootドキュメントを読めばすぐ解るんです。
http://www.proftpd.org/docs/directives/linked/config_ref_DefaultRoot.html
引用:
The optional group-expression argument can be used to restrict
the DefaultRoot directive to a unix group, groups or subset of groups.
The expression takes the format: [!]group-name1[,[!]group-name2[,...]].
The expression is parsed in alogical boolean AND fashion, such that each
member of the expression must evaluate to logically TRUE in order for
the DefaultRoot directive to apply.
The special character '!' is used to negate group membership.
・・・そう。グループ部分は全てAND結合されてチェックされるわけです。ということは、結局これだと「web_masterかつmemberグループ」ということになり、片方だけじゃそもそも無理と言うことです。
では、どちらか一方なら適用させる。というふうにはどうすればいいのか?
http://www.proftpd.org/docs/faq/linked/faq-ch5.html
ここのDefaultRootで検索した項から引用するが、
You can usemultipleDefaultRoot directives to create multiple jails
inside the same directive context.
とのこと。
結論から言うと、今回の例であればこのように二つに分ければ良いことになる。
DefaultRoot ~/public_html web_master DefaultRoot ~/public_html member
http://homepage3.nifty.com/yamada_ken1/starthp/DEADLOCK_Attach.pdf
が、Oracleデッドロックについてまとめてあります。便利。
本来はサポートに問い合わせるべき内容らしいですが、偶然
http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cgi?communityid=otn-901234&bbsid=1&no=12649&view=8
にありましたので引用しておきます。
~~引用ここから~~
サーバプロセス(DB接続する度に生成されるプロセス)がSQL文を実行
する際にロックを取得する際に検知します。
ロック取得時にデータディクショナリを参照してロックリソースを
確認します。
お目当てのリソースに既にロックがかかっている場合、そのロックを
誰が取得しているか等を遡っていき、最終的に自分のロックに行き着くと
デッドロックとしてエラーが発生します。
~~引用ここまで~~
以上、メモ。
Javaのソケットを使ったとき、クライアント側の立場に立った場合以下の状況を考慮する必要が生じました。
1.サーバー側からの応答待ちの時に、ケーブルが抜けた。
2.サーバー側からの応答待ちの間に、サーバー側でソケットをclose()してしまった。
このとき、どうなるのか?結論として、
1.のときはSocketExceptionが発生する。
2.のときは、読み込んだ値が -1 や null となる(例外は発生しない)
1.のときですが、ケーブルが外れた瞬間にSocketExceptionが発生します。
2.ですが、タイミングはわかりませんがInputStreamからバイト配列として読み込んだ場合は読み込んだバイト数が-1で返されます。BufferedReaderなどからreadLine等で文字列として読み込む場合は、nullオブジェクトが返されます。
以上。(JDK1.4)
結構簡単でした。
create sequence s1; create table t1 ( id integer default nextval('s1'), data integer, reg_date date default current_date ); insert into t1(data) values(123);
こんな感じで、シーケンスや現在日をデフォルトとして保存できます。便利。
いろいろTipsが載ってます。
http://www.itmedia.co.jp/help/tips/linux/l0315.html
とかもそうですが、AllowUsersがあるならAllowGroupsもあるだろうと調べたら普通にありました。
これつかって、/home下のグループ以外はアク禁にしました。
AllowGroups webmaster hoge bohe
以上。