The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > UNIXのダミー質問と回答のため > よくある質問への回答 > ヒントとチュートリアル
Googleのunix.com



ヒントとチュートリアル 我々のユーザからの役立つ記事。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
学習のOracle ADF :初級の物語 アイボット Oracleの更新情報( RSSフィード) 0 2008年4月6日 05:10午前
セップと魚たちの物語 アイボット CEPのRSSニュース 0 2007年12月17日 05:50午前
バンコクポスト記事: Linuxオペレーティングシステムの背後にある物語 ネオ ニュース、リンク、イベントのお知らせ 0 2003年4月5日 09:05午前

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2007年3月31日
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unixのデーモン
  
 

参加日: 2001年8月
場所: Ashburn 、バージニア州
投稿数:9119
物語の全体# ! / usr / binに/ ksh

はじめに

もともと、私たちはUnix上で1つのシェルをしていた。コマンドを実行したときには、シェルの実行( )システムの起動を試みるとそれを呼んでいる。これは、コマンドの実行可能ファイルは、実行するコマンドを実行し成功するというものだった。場合は、実行( )失敗は、シェルは、代わりに、コマンドファイルを解釈していたかのようにシェルスクリプトを放棄しようとしなかった。これは1つしかなく、システム上でシェルが長いと正常に動作します。しかし、もしあなたのインタラクティブシェルとして何を使用していると求めているのは別のシェルの言語で書かれたスクリプトを実行しますか?

これは、ここでは、 # !トリック# cshと発祥のコメントはすぐにBourneシェルを使用して表現するために追加されましたインチのアイデアだ。今すぐ後に、すべてのシェルを無視するように知っているものは、 # 。だから、 "リード線のような何かを追加することができます# ! / usr / binに/ ksh " 。この行はコメントをされているシェルに。しかし、もし、カーネルと、通訳を実行するには、指定したファイルを実行すると以下の行をし、そこには、スクリプトを渡します。ので、かなり現実の実行可能ファイルのようなシェルスクリプトを実行可能になっている。する場合、シェルはシェルスクリプトを実行しようとすると、それは成功します。

何を残す場合は、 # !ライン?さて、カーネルの実行は失敗します。あなたの平均は、シェルスクリプト自体を実行しようとします。いくつかの言語を推測するためのシェルスクリプトを検査することを試みる。これは良くはありません。あなたはインタラクティブシェルとして実行されているkshとkshのスクリプトを書くことができます。保存する場合は、対話型のシェルとしてはbashに切り替える一方、失敗することがありますは、一部のスクリプトの実行を続けることができます。また、行 はコメントです その人は、スクリプトでそれを理解してプログラマに重要な手掛かりを提供しています。どの言語を使用するように試みているの著者を知ることは大きな助けです。

一方私は"シェル"は、実際にこの手法では、シェルではない多くのプログラムで使用できるという用語を使用している。ここでは、複数のメッセージを表示する"スクリプト"です:
コード:
#! /usr/bin/cat
Line 1
Line 2 
Line 3
これは、 " # ! / usr / binに/猫"の行、それ以外はかなりうまく機能が表示されます。

引数を渡す

このような1つの引数を渡すことができます:
# !は/ usr / / binに/ローカルperlの -ワット
しかし、一般的に、次の操作が制限されています 1 引数。ほとんどのシステムでは、のような行: " # ! /一部/通訳- AとB "の"結果は、 AとBの" 1つの引数として渡される。しかし、 1つの引数を始めるにはハイフンで制限されていません。私たちのメッセージをスクリプトを改善することができます:
コード:
#! /usr/bin/sed 1d
Line 1
Line 2 
Line 3


の一例を使って全てを一緒に言っておこう。ここにいる perlの 私perlargsスクリプトが呼び出されます:
コード:
#! /usr/local/bin/perl -w

#! /usr/local/bin/perl -w
print "script name is ", $0, "\n";
while (@ARGV) {
        $ARGV = shift @ARGV;
        print "argument ", $i++,  " is ", $ARGV, "\n";
}

system "ps -f -ww";

ワットを要求する perlの 問題の警告メッセージ。このスクリプトは、単に、 psコマンドを実行し、その引数が表示されます。私はそれを実行するときに、私が手に入ります:
コード:
$ ./perlargs one two three
Name "main::i" used only once: possible typo at ./perlargs line 10.
script name is ./perlargs
argument 0 is one
argument 1 is two
argument 2 is three
                 UID        PID   PPID    STIME TTY     TIME CMD
                 perderabo   69      1 17:47:28 n01  0:00.24 /bin/ksh -l
                 perderabo  201     69 18:28:22 n01  0:00.03 /usr/local/bin/perl -w ./perlargs one two three
                 perderabo 2055    201 18:28:22 n01  0:00.01 ps -f -ww
$
通知は、 perlの プロセス5引数で呼ばれていた。 2つ目の引数は、スクリプトの名前です。それまでのことです perlの プロセスは、引数リストには、スクリプトで見られるように最終的な3つの引数が存在する。また、カーネルは、開始を実現 perlの 処理します。その後、それをすることです perlの このスクリプトを開いて、それを実行し、それぞれの行を読んでください。このため、スクリプトを読むことが必要です。あなた以外のスクリプトを実行することはできません読める。

結論

これが起こっていると理解するのに十分な情報をする必要がありますが# !行。は、以下の記事で、私は、プロセスのさまざまな側面についての詳細が追加されます。
  #2固定リンク)  
Old 2007年3月31日
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unixのデーモン
  
 

参加日: 2001年8月
場所: Ashburn 、バージニア州
投稿数:9119
パート2 -の詳細

のフォーマットは、 # !ライン

私たちは、特定のためには、最初の2文字"#!".しなければならないと言うことができますまたはすることができますか。多くのシステムでは、ホワイトスペースを削除するようリードしている。私の推薦を開始することです。 # ! 。また、伝統的だ。

横にあるオプションのスペースれることがあります。いくつかのドキュメントをこの空間は限り誰でもスペースを必要とする唯一のUnixのBSD 4.1のリリースを決定することができるのスナップショットをリリースしましたが必要だという...これは一般公開)されていない。実際には、以下のような場合は、いくつかのスペースがある場合がありますが表示されます。とタブ文字をいくつかのテストを完了されており、動作しているようです。私の勧告を0または1つの空間に滞在することです。

横に通訳して、フルパスはすべてフルパスのように、それを起動する必要がありますが/ 。おっと、別の例外... Linuxカーネル(バージョン2.0.34以上)は、相対パスを受け入れてくれている。私の推薦しないとしている。

は完了することがあります。私たちは私たちの単一の引数やオプションのホワイトスペースにつながる可能性があります。ただし、 FreeBSDの複数の引数を処理の一部のバージョン。

BSDとのほとんどのバージョンのHP - UXの空白を削除するストリップされます。他のバージョンのUnixの空白を削除する有効な文字として扱う。とBSDのいくつかのバージョンでは、 #文字で区切り、末尾のコメントを受け付けることができます。

どのくらいの行することができますか? Unixのいくつかのバージョンが32文字の低い上限を設定します。 FreeBSDのどうやら8192文字を扱うことができます。

少なくとも、 Unixの標準で終わる行は、常に\ Ñ文字は、右か?うーん、そうとも限りません。 Unixの一部のバージョンを許容してしまう\研究\ Ñ終わると\研究をするのは無理だから、他のストリップだ。

このようになるが、標準ではありません...

引数が0の過程ではなく、スクリプト

もう一つの方法は、実装が異なることがあります。を考慮 perlの スクリプトは、私はパート1のArの終了した。自分の殻のおおよその同等でした
execl ( " 。 / perlargs " 、 " 。 / perlargs "、 " 1 " 、 " 2 " 、 " 3 " 、 (文字* )はNULL )
と、カーネルは、ほぼ同等のへと変貌
execl ( "は/ usr / local / binに/perlの" 、 "は/ usr / local / binに/perlの"、 " - w "の、 " 。 / perlargs " 、 " 1 " 、 " 2 " 、 " 3 " 、 (文字* )はNULL )

赤で強調表示は、大会では、プログラムのパスを引数と同じですが実行されてゼロです。注目すべきは、ログインプログラムが実行されるようなもの"が設定されます- ksh "です。当初は、実行可能なシェルスクリプトではなく、通訳者の名前は、スクリプトの名前には、引数0に設定した。最近では、通訳者の名前が一般的です。最後のホールドアウトを知っている私のHP - UXのは、スクリプトの名前を引数を0にセットする。
  #3固定リンク)  
Old 2007年3月31日
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unixのデーモン
  
 

参加日: 2001年8月
場所: Ashburn 、バージニア州
投稿数:9119
パート3 -スードシェルスクリプト

最初の時に実行可能なシェルスクリプトは、スードビット光栄に導入されました。これは、災害時のセキュリティのためだった。スクリプトを呼び出しを考えては/ usr / sbin /災害。していた:
はchownルートは/ usr / sbin /災害
chmod 4755は/ usr / sbin /災害
当然のことながら、 / 、は/ usrは/ usr / sbin rootでのみ書き込み可能。また、スクリプト自体だけです:
# ! / bin / shに
そうだよ。このスクリプトは非表示の文字を1つのラインです。これはコメントしているがないため、他の行を終了されているシェルは無視します。このスクリプトはすでに2種類の攻撃に対して脆弱です危険です。

への攻撃1 :リンク- ı

もしください:
ln - sをは/ usr / sbin /災害。 / - ı
シンボリックリンクと呼ばれる新たなアレンジを実行するために" - i "を。我々の場合に相当するかの/ sbin /災害、 :実際は/ usrを実行
( " / bin / shに" 、 "は/ usr / sbin /災害" 、 "は/ usr / sbin /災害" 、 (文字* ) NULL )のexecl
問題はない。そんなことだろうと期待されています。だが、 "コピーと呼ばれる特別なリンクを実行- i "を我々は:
( " / bin / shに" 、 " - i "を、 " - i "を、 (文字* ) NULL )のexecl
これは、対話型のシェルとして動作するシェルスード原因!すぐにスイッチは、シェルの設定の最後の引数として1つのハイフンを受け入れるように変更されました。だから、読んで私たちの1行のスクリプトを変更:
# ! / bin / shに-
今では同じ結果になってしまうのトリック:
( " / bin / shに" 、 " - i "を、 " - " 、 " - i "を、 (文字* ) NULL )のexecl
まだAugumentゼロ" - i "を、これは無害です。ので、この攻撃は、 psコマンドで顕著になると考えても、役に立つかもしれません。

攻撃2 :リンクを変更する

これは説明が困難です。これまでのように、私たちは、攻撃の下にあるスクリプトへのシンボリックリンクを、この時間は、名前は関係ない。そして我々の新しいシンボリックリンクを経由してスクリプトを実行します。次に、 素早く のシンボリックリンクを変更することは、悪のスクリプトを指定します。私たちは何を変更するには、シンボリックリンクをポイントにした後、カーネルが、オープン前に、通訳が開きます。これは、競合状態であり、すべての時間は動作しません。また、巧妙なプログラミングの1つを成功させるには少し必要です。しかし、正常に完了、我々は悪のスクリプトをrootとして実行している必要があります。

スードスクリプトを無効に

これは安全なスードシェルスクリプトは、シェルスクリプトスードの概念を記述することはできませんでしたUnixから削除されました。 sudoの書かれたプログラムを、この大部分スードシェルスクリプトの必要性をoviatedこの頃。私はUnixのは、過去15年間で、これらの問題のいずれかのバージョンをリリースしているとは思わない。 (そして、もし、私はこれらの攻撃がないと説明した。 )でお会いできることを願っなぜ今、多くの古い時間システム管理者(のような自分自身)は、シェルスクリプトスードに懐疑的な見方があります。

スードスクリプトの戻り

Solarisのスードするシェルスクリプトをサポートしていますが、これらの攻撃に免疫されています。これは、スクリプトを一度だけ、スードスクリプトの場合に開かれるようにすることでこれを行います。スードビットが設定されている場合は、 Solarisのスクリプトは、インタプリタに渡すことは、 fdファイルシステムを使用しています。私のperlargsスクリプトをSolarisにスードていたら、それを実行されているようなものだ:
execl ( "は/ usr / local / binに/perlの" 、 "は/ usr / local / binに/perlの" 、 " - w "の、 " / dev/fd/3 " 、 " 1 " 、 " 2 " 、 " 3 " 、 (文字* )はNULL )
perlの オープン/ dev/fd/3 、それは別のdescripter開いているファイルは同じファイルとして3 fdとして開かれているものを指し得る。は、スクリプトの中には、 / dev/fd/3よりも他の名前を取得する方法はありません注意してください。

これは、名前を使用していたintrepreterから隠していますが、何ら問題はない場合、その名前のような奇妙なものだった" - i "を。これは、スクリプトを1回開かれると、害がない場合には、邪悪なスクリプトのシンボリックリンクを突然に切り替えている。

しかし、これが最後の舞台へのコメントのみを含む1行のスクリプトを安全に実行することができます私たちを取得します。はまだ不十分スードスクリプトで書かれた他のセキュリティ問題をすることができます。スード場合は、シェルスクリプトを使用する必要があります、ここではいくつかのヒントを紹介します:

1 。使用ksh
デイブのKornシェルスクリプトでは、攻撃のすべてを分析してできるだけ多くの穴を閉鎖した。特に、 ksh IFS社に攻撃をベースに免疫されています。また、対話型の場合、それが本当のUIDのルートではない、それには、 UIDを本物の前にプロンプトを発行するために効果的なUIDを設定するにはroot権限を使用すると効果的なルートのUIDを一緒に行くことができる。

2 。コントロールのPATH
PATH変数を明示的に設定するスクリプトの最初のステップとして。のディレクトリのリストを作成可能な限り短い。開始しないでくださいまたはコロンでリストを終了または2つの連続するコロンしている。とすることはありません。または..一覧。明示的にエクスポートパス。とは、すべてのディレクトリパスに記載のルートだけで書き込みができることを確認します。たとえば、は/ usr / local / binには、 PATHにしては/ usr / local / binにされていない書き込みのための明白な必要性に加えて、あなたはまた、 / 、は/ usr 、を/ usr / localを確保するために必要なものすべてがあります書き込みはできません。 、それ以外のことはできませんする必要がある場合は/ usr / localにマウントされてファイルシステムのrootユーザの手配は/ usr / localマウント解除される。また、可能な限りほとんどのPATHに依存して、スクリプトを保護することができます。そのためには、たとえば、 " / usr / binに/ rm "単なる" rmむしろ"より。

注意:私は/ usr / localの例として、 / binに使用すると、私は強く抵抗するとパット/スードスクリプトのPATHにUSR社/ local / binに。再び:としてディレクトリのリストを作成して可能な限り短い。私はめったに"を超えるとのPATH \u003dは/ usr /スードスクリプト"のbin 。

3 。制御IFS社
スペース、タブを設定するIFSは、改行。輸出してIFS社。 kshは、 IFS社を攻撃する免疫中ですが、いくつかの他のシェル免疫されていません。あなたのやりたいことを間接的に別のシェルスクリプトを呼び出すことができます。

4 。は、スクリプトの書き込みではないことを確認します
ファイルとしては、プロセスは、ユーザーがファイルの所有者とは異なるが所有によって書かれている上のビットが削除されますスード最近のほとんどのバージョンのUnix 。しかし、それは行動に依存することはありません。

5 。直接的または間接的にユーザを実行しないでください入力供給
あなたは、ユーザの入力は、シェルの実行可能コードとして解釈することが確実に配信する必要があります。方法を知っている場合は、このようにしないと、任意のユーザー入力を処理してはならない。は、スクリプトのパラメータをユーザの入力を考慮する必要があります注意してください。

6 。注意してプログラムを起動する場合は、ユーザからの入力を求める
プログラムは、任意のプログラムを実行するためには、ユーザーを起動しないでください。たとえば、ユーザーにメッセージを表示しない ファイル。 ユーザのためのサブを実行する方法を提供しています。はい、 kshの内蔵保護では、ユーザーが対話的に呼び出すkshはあなたを守ります。しかし、残念ながら、他のシェルが存在します。とは、ユーザーとのインタラクティブなシェルを必要としない 。のようなコマンドを" : ! rm / etc / passwdの"より動作します これは、インタラクティブなシェルを使用していません。

の手順を実行するスクリプトを書くのスードの確保に向けての長い道を行くでしょうが、私は十分に確保しているスクリプトを完全に保証することはできません。
  #4固定リンク)  
Old 2007年4月1日
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unixのデーモン
  
 

参加日: 2001年8月
場所: Ashburn 、バージニア州
投稿数:9119
パート4 :ざっぴん

デニスリッチーが発明

というコンセプトで生まれたデニスリッチー:
コード:
>From dmr Thu Jan 10 04:25:49 1980 remote from research
The system has been changed so that if a file being executed
begins with the magic characters #! , the rest of the line is understood
to be the name of an interpreter for the executed file.
Previously (and in fact still) the shell did much of this job;
it automatically executed itself on a text file with executable mode
when the text file's name was typed as a command.
Putting the facility into the system gives the following
benefits.

1) It makes shell scripts more like real executable files,
because they can be the subject of 'exec.'

2) If you do a 'ps' while such a command is running, its real
name appears instead of 'sh'.
Likewise, accounting is done on the basis of the real name.

3) Shell scripts can be set-user-ID.

4) It is simpler to have alternate shells available;
e.g. if you like the Berkeley csh there is no question about
which shell is to interpret a file.

5) It will allow other interpreters to fit in more smoothly.

To take advantage of this wonderful opportunity,
put

	#! /bin/sh

at the left margin of the first line of your shell scripts.
Blanks after ! are OK.  Use a complete pathname (no search is done).
At the moment the whole line is restricted to 16 characters but
this limit will be raised.


From uucp Thu Jan 10 01:37:49 1980
BSDのUnixのバージョン8の研究からピックアップして、有名になりました。

どのようなコンセプト請求する

結局、 # !行は、 " sharpbang " sharpbangラインと呼ばれるようにはまだいくつかのカーネルのソースコードの中で見つけることができますした。この"シバン"何とかに短縮された。私は" shabang期待があるだろう"しかし、それは"シバン"ほとんどの人が何を使用しているようだ。いくつかの人々 " hashplingを使用するように"見える。どうやら、上海協力機構は、スイッチを" "で、この機能を有効にするには、カーネルのビルド時間を設定する必要がありますhashplingenable求めている。と私は、いくつかの人々は"言葉"を使用しているhashbangされている。 sharppling (誰? )


特別なルールを Perlの

リコールは、上で複数の引数は、 # !行を、多くの場合、 1つの引数として渡されます。もし perlの "のような引数が渡され、 AとBの" 。それ以外のような"行為ブレークするのは" 、 " - b "が渡されていた。同様に perlの 無視していませんが# !行。 Perlの して検査するとしても、それを見つけるのスイッチがオンになります。このシステムのために補償するための非常に短い# !行を制限します。 perlの スキャンする# !行まで"という文字列が検出さperlの" 。その後、スイッチのスキャンが開始されます。このスキャン中に、 " -* "と" - "は無視されます。場合は# !ライン"という文字列が含まれていませんperlの" 、 perlの 処理する# !これはUnixのカーネルとなる行は、適切な通訳者を呼び出す方法です。

処理を別のパス

のいくつかのシステムには、例があるとしましょう、は/ opt /perlの/ビン/perlの や/ usr / local / binに/perlの。どのように書くこと perlの スクリプト?私の気持ちは、システム管理者に提供するために必要な共通の滝です。私置くと perlの には/ usr / local / binです。場合は、 perlの インストール手順を置く perlの には/ opt /perlの/ビン/perlの、それはそれでいいです...しかし、その後私とのシンボリックリンクを/ usr / local / binにを指し perlの 実行可能。同じことで perlの。私の管理" # !は/ usrの下にすべてのシステムでは/ local / binに/ Pythonの"仕事やPythonを保証されていますがシステム上ではご利用いただけません。同じことで perlのなどそれは私のようなディレクトリへのリンクを追加するのは珍しいは、 / usr / binにあります。しかし、私のためにこれを行う予定ksh 、 bashのシェルのOSのいずれか欠けている必要があります。と私はいつものようなものが/または/ usr / localオプトインはbash 、 ksh動作しますがマウントされていないか確認します。これらの貝殻はどこでインストール手順をオーバーライドする場合、必要が唯一のケースです。私のシステムのようなので、この動作するもの:

# ! / usr / binに/ ksh
# ! / usr / binに/ bashの
# !は/ usr / / binに/ローカルperlの

このようなものまで作品を、私は完全にOSのインストールを検討することはありません。スクリプトは、外の世界からの輸入が予想を実行するための別の場所を微調整する必要があるかもしれませんが、通訳。しかし、 "設定"のようなプログラムが見つかります perlの 場合には、 / usr / / binにローカルです。だからこれは私のアプローチです。しかし、他のアイデアをしている...

別のアプローチを使用することですが# !の中間的なプログラムは、経路探索した後、希望のインタプリタを起動するの行は結果だ。最も頻繁に使用される例のように" # ! / usr / binになるだろう/環境変数 perlの" 。これは、環境変数と仮定している/ usr / binに(ない場合は、例えば、 Unicosが、上記の環境変数には適用のコメントを私と私)は、必要なリンクを追加する。それも想定していますが perlの をPATHのどこかにされています。より複雑な例です。
コード:
#! /usr/bin/sh -- # -*- perl -*- -p
eval 'exec perl -S $0 ${1+"$@"}'
さらに複雑な例としては、本にしている プログラミング Perlの ラリーウォール氏ら。

そして、 のPosix 規格に このページ チェックして
引用:
さらに、システム上では、 ( " # ! " )を構築実行可能なスクリプトのサポートは、アプリケーションを実行可能なスクリプトの使用は推奨されてgetconf - vを決定するためにシェルのパス名を使用して、更新プログラムのインストール時に" # ! "スクリプトを適切な例として、削除するsed )に(用にインストールされています。
インストールスクリプトは、提案のためのリンクページをご覧ください。

kshの拡大は、環境

のは、排他的に使用してkshスクリプトがあると、 "#!".オフのままと仮定あなたのインタラクティブなスクリプトを実行し、失敗ksh試みる。というわけでkshスクリプトとしてスクリプトを実行している秋に戻ってあなたのインタラクティブksh 。これはサブにそれ自身のコピーを作成することによって、この分岐ありません。このフォークサブし、効果を、 "環境"の標準的なUnixのコンセプトに展開することができます。プロセス実行時に別のプロセスは、新しいプログラムは、オープンファイル、カレントディレクトリ、環境ものの束を継承します。文字列の環境は、大会では、設定の形をとるような変数を設定:パス\u003d / usr / binに:は/ usr / local / binになります。しかし、フォークkshサブサブは、親のすべてを知っている。初期のkshバージョンの配列、エイリアスをエクスポートすることによって、この方法を悪用し、機能しています。これを回避する必要が# !ラインを作成するため、この問題を持って生活する。ほとんどのサイトの使用を強く奨励するが# !ラインと、これは環境の概念を損なうksh拡大。そしてそれは、輸出のエイリアスは、ドキュメントに記載のようなものを見た初心者の混乱。 kshの最近のバージョンでは、環境の概念の拡大から後退している。だから私の提案をkshエクスポート配列、エイリアスの詳細については、忘れて、機能を使用している# !行。
 

ブックマーク

タグ
perlのperlのシフトシバンシフトperlのシフト

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 10:32午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0