Debian、Sid(存在する場合)があり、ディスプレイマネージャを使用する代わりにコンソールでXを起動したいが、入力すると次のstartx <RET>
メッセージが表示されます。
xinit: connection to X server lost
rootとしてログインするか、を使用するとsudo
Xを起動できるため、権限が問題の原因であると疑われます。
一般ユーザーがX(おそらく経由)を起動できるようにするにはどうすればよいですかstartx
?
権限操作を実装できますが、他の欠点を持つ単純なソリューションと、潜在的に複雑なソリューション(プロキシのようなものなど)に興味があります。非グラフィックディスプレイマネージャ、または他のもの…
答え1
.xauthorityファイルと.ICEauthorityファイルはrootユーザーが所有できます。取り外してみたり、破損しないように邪魔にならない場所に移動してください。
sudo mv ~/.Xauthority ~/.bak.Xauthority
sudo mv ~/.ICEauthority ~/.bak.ICEauthority
X以外の環境では、Ctrl + Alt + F2を使用して仮想端末に切り替えることをお勧めします。
答え2
~からこの問題(「root以外のユーザーとしてXを起動する」)とこの回答つまり、引用この記事、私は次の解決策を思い出しました
sudo chown $USER /dev/tty8
sudo chmod o+rw /dev/input/*
startx -- vt8 -retro -sharevts -logfile ~/.local/X.log &
Xorgサーバーが起動しました。正しい(?)しかし、考えられるすべてのセキュリティ問題にもかかわらず、次のような他の多くの問題が発生します。
X
Chrome検索ボックスに入力したものの一部は、少量のジャンクで実行されているコンソールに表示されます。- 一般的な順序でCtrlAltn他の端末に切り替えることはできません
- ディスプレイマネージャが自動的に提供する一部のクライアントはもはや存在しなくなり、最も迷惑な点は、Multi Key結合文字の使用を傍受してバスに入れることが何であれ(???)Chromeがこれを見て、そうでなければX組み合わせシーケンスを無視するという(アメリカのkbdレイアウトを使用しているので非常に迷惑ですが、Barbora Krejčíkováのようにコピーして貼り付けずに書き込みが好きです。
上記の問題に対する可能な解決策について(おそらくコメントで)聞きたいです。
答え3
これは長年にわたって基本的に可能でした。システムの一部の項目が成功しました。もうできない本当の質問は、「どのようなメカニズムを使って動作させるか」ではなく、「既存のメカニズムをどのように機能させるか」です。再び」。
権限のないstartxの使用を許可する2つのメカニズムがあります。
以前は(systemd以前)、Xサーバーは
/usr/bin/Xorg
setuidルートでした。これは、特に Xorg が PCI アクセスに直接使用されている場合、従来のメカニズムです。これで、Xorg自体はsetuidではなく、root権限を維持する必要があるかどうかを検出できるsetuidランチャー「Xorg.wrap」が付属しています。今システムログインデーモンは、フロントデスクttyに対応するユーザーに自動的に権限を付与します。この部分は、udev + ConsoleKitがさまざまな/ dev ACLに「フロント」ユーザーを追加するために使用されたため、systemdより前のバージョンです。ただし、systemd-logindは/dev/inputにさらにアクセスするXorgのプロキシとして機能します。そこから直接許可を受けてください。
systemd を使用しないディストリビューションではエロキンドデーモンも同じことができます。どんな対価を払ってもシステム化を避けたいディストリビューションでは座るデーモンを使用することは可能です(私が知っている限り、Xorgはまだ他のAPIをサポートしていませんが)。
Debian は主に systemd を使用するため、systemd-logind を実行し、PAM 設定では pam_systemd.so を呼び出してデーモンにコンソールログインを登録する必要があります。コンソールにログインすると、loginctl session-status
「seat0」のアクティブユーザーとして報告し、getfacl /dev/snd/pcm*
オーディオデバイスへの読み取りおよび書き込みアクセス権を持つものとしてリストする必要があります。
(注:あなたは実際に正しいユーザーとしてログインする必要があります。 rootとしてログインして使用してください。su -l <myuser>
確かにカウントしない- この操作のみを実行すると、「su」を使用してもセッション所有はrootになります。 )
すべてが正常に動作する場合、Xorgは/dev/driを介してGPUを直接開き、D-Busを介してsystemd-logindと通信して/dev/inputでデバイスを開くことができます。 Xorg.0でこれを見ることができます。丸太。 (これはシステムセッションバスではなくバス - dbus-launchの代わりにdbus.service。 )
systemd-logindまたはelogindを使用する場合は、テキストベースのログインのすぐ上で同じフロントVTでXorgを起動する必要があります。いいえ専用VTから。これはvt$(fgconsole)
代わりにstartxを使用することを意味しますvt8
(Debianのstartxはデフォルトでは正しいことをしますが)。
存在する一部場合によっては(例:カーネルモード設定をサポートせずに独自のnVidia GPUドライバを使用している場合)、systemd-logindのACLとプロキシが十分でない可能性があり、まだsetuid Xorgを使用する必要があります。この機能は、/etc/X11/Xwrapper.config
次の説明に従って有効にできます。Xorg.wrap(1)。