現在のユーザーを検出するセキュリティホールだからです。xdmの設定ファイル(kdmの設定ファイルと同じものです)に2行加えると、この制限を解除できます。 注:S.u.S.E Linuxディストリビューションにはこの行がデフォルトで含まれています。
これらの設定ファイルは他のシステムの/etc/X11/xdmや/usr/X11R6/lib/X11/xdmディレクトリにあります。以下は設定ファイルが/etc/X11/xdmにある場合についてですが、このときは別のディレクトリのために設定ファイルを翻訳する必要があります。
以下のことを行います。 Xstartupファイルを(xdm configディレクトリで)次のように編集または作成します。
#!/bin/sh /etc/X11/xdm/GiveConsole sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $USER |
Xresetファイルを次のように編集します。
#!/bin/sh /etc/X11/xdm/TakeConsole sessreg -d -l $DISPLAY $USER |
xdm-configがこれら2ファイルを参照するようにします。
DisplayManager._0.startup: /etc/X11/xdm/Xstartup DisplayManager._0.reset: /etc/X11/xdm/Xreset |
これでkdm(またはxdm)はユーザーをutmpにログインするようになります。そしてこれで正しいのです。私の考えでは、ユーザーをログインするのはkvtでもxtermでもなく、xdmとkdmです。しかし、startxを使うとユーザーはXユーザーとしてログインされません。この問題を解くヒントが何かないでしょうか?