環境
発端
MacOSからubuntuにsshしてsshのX11 Forwardingを利用してGUIアプリをMacOS側に表示させていた
XQuartzを使っている
GSmartControl を使おうと思って sudo gsmartcontrol
してみたがエラーになった
$ sudo gsmartcontrol X11 connection rejected because of wrong authentication. (gsmartcontrol:3072): Gtk-WARNING **: 08:10:34.175: cannot open display: localhost:14.0
ちなみにgsmartcontrolは、SMART(Self-Monitoring, Analysis and Reporting Technology)というハードディスクやSSDの健康状態を監視する技術を利用して、ストレージデバイスの状態やパフォーマンスをチェックすることができるツール
解決策
$ sudo DISPLAY=$DISPLAY XAUTHORITY=/home/thr3a/.Xauthority gsmartcontrol
ポイント
- sudoは、スーパーユーザー(管理者)としてコマンドを実行するためのプログラムです。gsmartcontrolは、デバイスの情報にアクセスするために管理者権限が必要なので、sudoを使っています。
- DISPLAY=$DISPLAYは、環境変数DISPLAYの値をそのまま引き継ぐという意味です。DISPLAYは、X Window SystemというGUI環境で、どの画面に表示するかを指定するための変数です。この部分は、sudoで実行すると環境変数が引き継がれない場合があるので、明示的に指定しています。
- XAUTHORITY=/home/thr3a/.Xauthorityは、X Window Systemの認証情報を格納したファイルの場所を指定するものです。このファイルは、ユーザーがログインしたときに自動的に作成されます。この部分も、sudoで実行すると認証情報が失われる場合があるので、明示的に指定しています。