他のVT / TTYでXorgサーバーを手動で実行/初期化/起動する方法は?

他のVT / TTYでXorgサーバーを手動で実行/初期化/起動する方法は?

Xorgサーバーを起動したいです(xterm新しく作成された「raw」サーバーの最小限の端末エミュレーターのみが必要ですtty)。私はxinitaまたはaを発行するのと同じくらい簡単だと思いましたが、startxどちらも失敗しました。質問は次のとおりです。

他のVT / TTYでXorgサーバーを手動で実行/初期化/起動する方法は?

ここ

当面の問題についてのより長い後の話:

背景と私が試したことは次のとおりです。

man openvt新しく作成されたアイテムで何ができるかを見てみましょうtty(またはvt違いを正確に知りません)。バーモント<>端末)このように:

 $> sudo openvt -s /bin/bash

新しいttyから新しいtty / vtに直接切り替えられます。最小限のアプリケーションで起動する必要があるサーバーを-s手動で起動したいと思います。したがって、tty I(作成者)に切り替えられた新しいシェルで次のコマンドを実行します。Xorgman xinitxtermopenvt

 $> su -c 'xinit xterm -display :4 -- :4' - mahr &>/tmp/output

この出力を受け取ります。

$> cat /tmp/output
X.Org X Server 1.19.6
Release Date: 2017-12-20
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.4.0-148-generic x86_64 Ubuntu
Current Operating System: Linux scitech 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 12 10:36:11 UTC 2019 x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-4.15.0-70-generic root=/dev/mapper/ubuntu--vg-root ro
Build Date: 03 June 2019  08:10:35AM
xorg-server 2:1.19.6-1ubuntu4.3 (For technical support please see http://www.ubuntu.com/support) 
Current version of pixman: 0.34.0
    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/home/mahr/.local/share/xorg/Xorg.4.log", Time: Thu Nov 28 10:57:53 2019
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE) 
Fatal server error:
(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
(EE) 
(EE) 
Please consult the The X.Org Foundation support 
     at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "/home/mahr/.local/share/xorg/Xorg.4.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.

Session terminated, terminating shell...xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: unexpected signal 2
 ...terminated.

ベストアンサー1

xinit攻撃に弱いので使用しないでください。。使用startxxinit警告や文書なしですべてのユーザーIDのX接続を許可するように作成されたようです。 startx問題を解決しているようです。私はこれがなぜ受け入れられるのか、最初にこのようなことが起こったのかどうかわかりません。

働く方法がX「最近」変わりました。 Xset-uidルートに依存し、新しいVTに切り替えるために使用されます。この方法もXテキストVTで実行している場合にのみ機能できます。たとえば、root 以外のユーザーはX別のXセッションで開始できない場合があります。つまり、これが望ましい効果を得ることができるかどうかはわかりません。

Xを使用できるように変更されました。現在のVTに変更してください。いくつかのツールは、startx新しいデザインを使用するように動作を変更しました。

セキュリティを強化するためにrootとしてプログラムを起動する必要がないように設計されています。これは、logindより小さなバックグラウンドサービス(root権限で開始)を使用して達成されます。

ルートとして再X実行する場合は、権限は必要ありませんlogind。私はXこれと互換性があると思います。

X強制的にフル実行を実行せずに実行しようとしているようですroot。この場合は許可が必要ですlogindlogind何かできるようにするログインしたVTから。私は秘密を見つけたなりすましログイン

user=mahr
sudo systemd-run \
    --property PAMName=login \
    --property User="$user" \
    --property StandardInput=tty \
    --property TTYPath=/dev/tty8 \
    sh -c 'chvt 8 && exec startx /usr/bin/xterm'

ttyを動的に割り当てることも可能である必要があるようです(openvt -sおよびそのコマンドを使用するスクリプトを使用tty)。しかし、私はこれをやろうとしたときに数回画面を停止しました。 :-).

logind 故意にX サーバーなどの非 root プログラムによってシステムに発生するダメージを軽減するため。 AIUIの実装は非常に限られています。回復キーを提供しません。 logindカーネルシステムの注意キーを使用すると、重大な死亡につながる可能性があります。 )

カーネルコマンドSysRQ + Rを使用しても画面を復元できません。私はおそらく何かが壊れているlogindか、何かがあると思いましたgdm:-).

おすすめ記事