花飯で走ることができます。
DISPLAY=:0 notify-send hullo
そして私の虫歯セッションでこのメッセージを見てください。しかし、rootとしてログインすると機能しません。 ...でもない
USER=toothrot DISPLAY=:0 notify-send hullo
ルートで機能させるにはどうすればよいですか?
私はxセッションに影響を与えるudevルールを作成したいので、これが必要です。アーチを使用してください。
答え1
Xは2つの方法でクライアントに権限を付与できます。 1つの方法はクッキーを使用することです。次に、とDISPLAY=:0
を設定する必要がありますXAUTHORITY=/home/yourusername/.Xauthority
。
あなたの場合は、xhostを介して完了したとします。それ以外の場合は、DISPLAYを設定するだけでは不十分です。xhost
誰が承認されたかを確認するには、入力してください。
~/.Xauthority
たぶんクッキーと承認があるかもしれませんxhost +SI:localuser:toothrot
。
display:0を使用してrootアクセスを許可できますが、DISPLAY=:0 xhost +SI:localuser:root
これは通常のユーザーとして実行する必要があります。クッキーを使用する方が良い方法です。
DISPLAY=:0 XAUTHORITY=/home/toothrot/.Xauthority notify-send hullo
ユーザーとして通知を送信するには:
su toothrot -c 'DISPLAY=:0 XAUTHORITY=/home/toothrot/.Xauthority notify-send hullo'
答え2
おそらくあなたはずっと前に問題を解決しました。しかし、完成のための一般的な解決策は次のとおりです。ここ):
$ my_user="toothrot"
$ my_user_id=$(more /etc/passwd | awk -F: '/^'${my_user}':/ {print $3}')
$ sudo -u $my_user DISPLAY=':0' DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${my_user_id}/bus /usr/bin/notify-send "hullo"
複数の画面セッションが表示される場合は、マイルが異なる場合があります。ディスプレイ=":0"懸念される点は上記です。しかし、それは別の記事です。
答え3
上記の回答は少し粗雑で、複数のユーザーや複数のモニターでは正しく機能しません。ユーザーが~/.Xauthority
保護されたファイルにシンボリックリンクを渡すと、昇格攻撃が発生する可能性があります。もう一つのオプションはudev
完全に忘れて使用することです。ウデブ、自分のXセッションでroot以外のユーザーとして実行されます。~/.config/uudev.conf
次の内容を含むファイルを設定するだけです。
* ACTION="bind", DRIVER="whatever", ...
notify-send hullo
または、ファイルsystemctl --user restart uudev
で実行している場合は、設定された適切な変数でのみ実行されます。~/.xsession
~/.xinitrc
notify-send
DISPLAY
XAUTHORITY