What to do when Tk reports that your display is insecure Kevin B. Kenny 19 May 1997 The Linux Japanese FAQ Project March 08, 2001 この文書には、どのように X 認証を設定すれば、 Tk を実行した時に "X サ ーバが安全ではない" と言われず send コマンドを使えるかについて書かれて います。 ______________________________________________________________________ 目次 1. はじめに 1.1 Copyright notice 2. どのようにシステムにログインしますか? 3. Mac もしくは PC で、サードパーティ製の X ソフトウェアを使用しています。 4. あなたは、ローカルコンソールで実行し、X を自身で起動しています。 5. あなたは、管理されていないリモートディスプレイで実行しています。 6. あなたは、ディスプレイマネージャとやりとりできるリモートディスプレイで実行していますが、やりとりで きていません。 7. あなたは、管理できるディスプレイで実行してますが、ディスプレイマネージャを見つけられません。 7.1 Step A - システムの xdm 設定ファイルを編集します。 7.2 Step B - システムの xdm サーバファイルを編集します。 7.3 Step C - xdm デーモンが起動されるよう準備する。 7.4 Step D - デーモンの起動 8. あなたは、ディスプレイマネージャを使用していますが、サーバはまだ安全ではありません。 8.1 Step A - あなたのホームディレクトリに .Xauthority ファイ ルを持つべきです。 8.2 Step B - .Xauthority ファイルはログインすると修正されるはずです。 8.3 Step C - .Xauthority ファイルはあなたのディスプレイのエントリを持つはずです。 9. あなたは、管理されていないローカルコンソールで実行しています。 10. X サーバは安全ですが、すぐに、Tk の接続が拒否されてしまいます。 11. 日本語訳について ______________________________________________________________________ 1. はじめに この文書には、どのように X 認証を設定すれば、 Tk を実行した時に "X サ ーバが安全ではない" と言われず send コマンドを使えるかについて書かれて います。 Tk を動作させる時にそのような不具合があるなら、解決するにはいくつかの 方法があります。どれが正しいのかは、あなたが、どういうシステムを使用し ているか、どういうディスプレイを使用しているか、システム管理者にどのぐ らい要求が出せるか、ということによって決まります。 下記のチェックリストをたどれば、いくつかのありうる解決策にたどりつくで しょう。私 (kennykb@crd.ge.com) 個人としては、 X Display Manager Communication Protocol (XDMCP) を使うことを強く勧めます。提案のほとん どが XDMCP を使うことを勧めています。 このドキュメントは WWW 上の http://ce-toolkit.crd.ge.com/tkxauth/ で、 入手できます。 Kevin B. Kenny Manufacturing & Design Integration Program Manufacturing Technologies Laboratory GE Corporate R&D 1.1. Copyright notice Copyright (C) 1995 General Electric Company. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of General Electric not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. General Electric makes no representations about the suitability of this software for any purpose. It is provided ``as is'' without express or implied warranty. This work was supported in part by the ARPA Manufacturing Automation and Design Engineering (MADE) Initiative through ARPA contract F33615-94-C-4400, P00002 subcontract CS0000762. This work was supported in part by the DARPA Initiative in Concurrent Engineering (DICE) through DARPA contract MDA972-92-C-0027. 2. どのようにシステムにログインしますか? o 着座しログインしようとした時に、私のスクリーンはダム端末 (テキスト のみ) のように見え、'login:' か 'Console login:' のようなプロンプト が表示されています。ログインすると、'xinit' か 'x11start' のような 入力をし (もしくは、'.login' か '.profile' が私の代わりにそれを実行 します)、そして X が起動します。 あなたは、管理されていないローカルコンソールで実行しています。 ``Section 4'' へ行ってください。 o 着座しログインしようとした時に、私のスクリーンでは既にウィンドウシ ステムが動いていて、その中央にユーザ ID とパスワードを促す小さな ウィンドウが表示されています。 あなたは、管理されたディスプレイで実行しています。おめでとう。たぶ ん、あとは簡単でしょう。 ``Section 8'' へ行ってください。 o 私は、Mac もしくは PC で実行している PC-XView, MacX, eXceed, eXodus のような製品を使って X を起動します。 あなたの X サーバとお気に入りのホストがどのように設定されているかに よって、ずいぶん変わります。 ``Section 3'' へ行ってください。 o 私は、X 端末を使用していて、メニューもしくはスタートアップダイアロ グから私のホストの xterm を起動します。 あなたは、リモートで、管理されていないディスプレイで実行していま す。 ``Section 5'' へ行ってください。 o 上記にありません。 ニュースグループもしくは著者にお知らせいただければ、助けられるよう 努力します。あなたが何をすればいいかを解決したなら、是非、著者にお 知らせください。そうしていただければ、この手順を更新できます。 3. Mac もしくは PC で、サードパーティ製の X ソフトウェアを使用してい ます。 X の起動時、何が起きましたか? o スクリーンの中央に、ホストコンピュータへのログインを促す小さなウィ ンドウが表示されます。 あなたは、管理されたディスプレイで実行しています。あとは簡単なはず です。 ``Section 8'' へ行ってください。 o メニューもしくはダイアログから、お気に入りのホストの xterm もしく は、クライアントを開始しなければなりません。 あなたは、リモートで、管理されていないディスプレイで実行していま す。 ``Section 5'' へ行ってください。 o 何か他のこと。 ニュースグループもしくは著者にお知らせいただければ、助けられるよう 努力します。あなたが手順を把握したなら、是非、著者にお知らせくださ い。そうしていただければ、これらの指示を更新できます。 4. あなたは、ローカルコンソールで実行し、X を自身で起動しています。 そのコンソールを使う誰かが、それを X11 以外のグラフィックアプリケー ションで使いますか? はい コンソール上で複数のウィンドウを扱えるシステムを動かすようにすべ きです。これをディスプレイマネージャと同時に使用することは困難で す。これらは、実現性が乏しいので、``Section 9'' へ行き、どのよう にリモートホスト上の認証を有効にするか理解してください。 いいえ 管理されていないコンソールを使っていますが、それを管理されたもの にできます。 ``Section 7'' へ行ってください。 5. あなたは、管理されていないリモートディスプレイで実行しています。 たぶん X を ディスプレイマネージャと共に動かしたいかもしれません。この ために、X ソフトウェアは XDMCP をサポートしています。X 端末と、PC と Mac のサードパーティ製の X ソフトウェアも、たいてい、これをサポートし ています。メニューもしくは文書の中で、'startup mode' もしくは 'session' のようなものを探してください。"XDMCP Query" が欲しいもので、 ログインしたいホストの名前もしくは IP アドレスをホスト問合せ (query host) に設定します。その後、X サーバをリセットします。 o ユーザネームとパスワードを聞いてくる小さなウィンドウが表示された ら、ディスプレイマネージャとの接続は成功しています。 ``Section 8'' へ行ってください。 o 小さなウィンドウが表示されず、X サーバがハングしたように見えるか、 もしくは、ディスプレイマネージャに接続できませんと文句を言われるな ら、ディスプレイマネージャを探す必要があります。 ``Section 6'' へ 行ってください。 XDMCP を使ったホストとのやりとりの方法が探せなかったなら、あなたの X サーバソフトウェアは、安全性においてひどく欠けていると思われます。 Tk の Makefile 中の SECURITY_FLAGS のコメントをはずすことは、単に不具合へ の妥協ですが、あなたのソフトウェアを更新することが唯一の代替手段です。 6. あなたは、ディスプレイマネージャとやりとりできるリモートディスプレ イで実行していますが、やりとりで きていません。 お気に入りのホスト上で、すべてのプロセスのリストを得て、xdm もしくは vuelogin が動作しているか確認してください。次のように ps -ef | grep xdm か、もしくは、 ps -ef | grep vuelogin か、あるいは、 ps aux | grep xdm とします (コマンドは実行している OS によって異なります)。 o xdm を実行しているホストを見つけたら、快調です―― ``Section 5'' に 戻り、xdm もしくは vuelogin を実行しているホストに、XDM ホストを変 更し、再度試してください。 o どこにも xdm もしくは vuelogin を見つけられないなら、``Section 7'' へ行ってください。 7. あなたは、管理できるディスプレイで実行してますが、ディスプレイマネ ージャを見つけられません。 次のどちらかの方法で X サーバを起動しているなら、管理されていないディ スプレイとして実行できます。 o Unix 系のシステムで x11start もしくは xinit を使用している。 o PC-XView, eXodus, eXceed のようなサードパーティの製品を使用してい る。 システム管理者を相手にしたくないか、もしくは、あなたがシステム管理者で 設定ファイルを扱いたくないなら、ちょっと ``Section 9'' へ行き、xdm を 使わず、安全な X サーバをいかに起動するか学んでください。 X 端末のような管理されていないリモートディスプレイで実行していて、ディ スプレイマネージャを見つけられず、システム管理者の助けがないなら、セ キュリティに深刻な問題があることになります。 Tk の Makefile 中の SECURITY_FLAGS のコメントをはずすことは、状況を悪化させるだけですが、 この環境下で Tk のすべての機能を使う唯一の方法です。 ディスプレイマネージャを見つけるために、システム管理者は下記の手順を行 わなければなりません。 7.1. Step A - システムの xdm 設定ファイルを編集します。 xdm ならば、このファイルは通常 /usr/local/lib/X11/xdm/config にあります。 HP-VUE ならば、それは、 /usr/vue/config/Xconfig にあります。 パスが正しくないなら、``Step C of Section 7'' に移って、パスを得てくだ さい。普通、システムを設置した後の設定は、ほとんど正しく行われていま す。 HP-VUE ならば、次で始まる行があります。 Vuelogin*xdmMode これは、たいていコメントをはずします。次で始まる行があります。 Vuelogin*authorize これは、間違いなくコメントをはずしてください。 環境に左右されますが、システム管理者はいくつかのファイルのパス名を変更 したいかもしれない。 Vuelogin.servers と DisplayManager.servers は、時々デフォルトの地点以外を示されます。 7.2. Step B - システムの xdm サーバファイルを編集します。 xdm ならば、このファイルは /usr/local/lib/X11/xdm/servers にあります。なければ、``Step A of Section 7'' へ移ってください。HP-VUE ならば、それは /usr/vue/config/Xservers にあります。 ローカルコンソールでログインすることを選ぶなら、このファイルにエントリ を書かなければなりません。通常、書かれているので、気にする必要はありま せん。もし、書かれてなければ、xdm もしくは vuelogin の man ページで調 べ、どう書けばいいか理解してください――普通、次のように :0 Local local /usr/bin/X11/X :0 と書きます。リモートディスプレイからログインし、そのコンソールで常に X を実行したくないなら、この行を削除すべきです。そうでなければ、システム の立ち上げでコンソール上に X サーバを起動します! 7.3. Step C - xdm デーモンが起動されるよう準備する。 システムの起動情報が保持されている /etc/rc, /etc/rc.local, /etc/rc2.d/S93xdmserver か、もしくは違ったファイルに、ブート時にディス プレイマネージャを起動させる行を追加します。Sun システムならば、これは 普通次のような /usr/bin/X11/xdm -config /usr/local/lib/X11/xdm/config です。HP-VUE ならば、それは /usr/vue/bin/vuelogin -config /usr/vue/config/Xconfig です。 7.4. Step D - デーモンの起動 root ディレクトリから 'root' 権限で上記のコマンドの一つを実行すること で、初めて、デーモンは起動します。ローカルコンソール上で X を実行しよ うとするなら、マシーンをリブートしてください。 運がよければ、ディスプレイ上の X サーバをリセットすることで、すぐに、 ユーザ ID とパスワードを質問する小さなウィンドウが表示されるはずです。 そうなら、おめでとう、あなたは、今、管理されたディスプレイで実行してい ます。 ``Section 8'' へ行き、次は何をするのか理解してください。 デバッグを行ってもディスプレイマネージャを得ることができないなら、著者 もしくはニュースグループにお知らせいただければ、助けられるよう努力しま す。あなたがローカルコンソールを使用しているなら、まだ、代わりに管理さ れていないディスプレイとして実行できます。試したければ、 ``Section 9'' へ行ってください。 8. あなたは、ディスプレイマネージャを使用していますが、サーバはまだ安 全ではありません。 下記に従いチェックしてください。 8.1. Step A - あなたのホームディレクトリに .Xauthority ファイ ルを持 つべきです。 このファイルは、あなたのために xdm によって作成されます。管理された ディスプレイ上に作成する必要はありません。馬鹿な xauth の man ページは 無視してください (訳注;原文が書かれた当時は、誤った記述だったよう で、2001年02月08日現在、「通常、 xauth は最初に認証ファ イルを作成する ためには使われない。それは xdm が行う。」と、更新されています)。 8.2. Step B - .Xauthority ファイルはログインすると修正されるはずで す。 ls -l $HOME/.Xauthority を実行し、調べてください。 8.3. Step C - .Xauthority ファイルはあなたのディスプレイのエントリを 持つはずです。 xauth list を実行し、調べてください。 これらの step のどれかで失敗したら、ディスプレイマネージャのログインの 仕組みに不具合があります。``Section 7'' の事柄を再度注意深くチェックし てください。間違いが何も見付けられないなら、ニュースグループもしくは著 者にお知らせいただければ、他の人たちが間違いを見つけるかもしれません。 あなたのシステムに必要な普通でない何かを、単独で、見つけたら、著者にお 知らせください。そうしていただければ、このファイルにそれを追加できま す。 これらの step のすべてが成功しても、たぶん、まだ xhost 認証を使用して います。xauth を安全にするために、認証したホストがあってはなりません。 次のシェルスクリプトは確実にすべての認証したホストをリストから削除しま す。 #!/bin/sh for host in 'xhost | sed 1d' ; do echo removing $host from access control list xhost -$host done echo removing general access from access control list xhost - その後、Tk は安全に見えるはずです。 もう一つ考えられる困ったことがあります――すべてが完了するとすぐに、Tk はすべてのものの起動を拒否するかもしれません、なぜなら、ディスプレイ の接続が拒否されるからです。これが起こったなら、 ``Section 10'' へ行 き、何をすればいいか理解してください。 9. あなたは、管理されていないローカルコンソールで実行しています。 これは、多少難しい状況です。"xinit" もしくは "x11start" のような入力を 行うことにより、X サーバを起動し、サーバはデフォルトで安全ではないモー ドで起動されています。 Vivek Khera による文書 (ここ で も入手できます) があり、安全なモードで X を起動する方法を検討していま す。 (訳注;2001年02月08日現在、前者は認証が必要で、後者はリンクが切れ ています。 IIJ から入手できます。) Sun 向けの文書であることに注意してください――ニュースグループの読者な ら他のプラットフォームの助けができるかもしれません。 Bennett Todd も Vivek Khera のドキュメントの補遺 を作成していて、ディスプレイの安 全性をさらに向上することを検討しています。 安全な X サーバの管理するための優しい手引き (日本語訳 ) が Vincent Zweije によって書かれ、Linux 'mini-howto' として入手できます。 10. X サーバは安全ですが、すぐに、Tk の接続が拒否されてしまいます。 まず、xterm の起動を試してください。起動しましたか? はい なんて、不幸な人でしょう。あなたは、Ultrix マシーンで実行してい ますね。 DEC が提供している xterm のようなクライアントソフトウェ アは /usr/lib/libX11.a をリンクしているにも関わらず、DEC は xauth の機能を /usr/lib/libX11.a に含んでいないための不具合で す。残念ながら、唯一の解決策は MIT から本物の X11 の配布物を入手 し、構成し、あなたのシステムでコンパイルし、その libX11.a に Tk を再リンクすることです。 いいえ どういうわけか、あなたの xdm ログインの仕組みが失敗しています。 ``Section 7'' に戻り、注意深く動作をチェックしてください。不具合 を解決できないなら、 著者もしくはニュースグループにお知らせいた だければ、助けてもらえるでしょう。不具合の新しい対処方法を見つけ たら、ぜひ、著者にお知らせください。そうしていただければ、この文 書を更新できます。 11. 日本語訳について 日本語訳は Linux Japanese FAQ Project が行いました。翻訳に関するご意見 は JF プロジェクト 宛に連絡してください。 19 May 1997 版の訳 翻訳: 野本 浩一 校正: 武井 伸光さん 、 岡本 一幸さん