sudoなしでxrandrを操作する方法は?

sudoなしでxrandrを操作する方法は?

以下で解像度を切り替えます。

sudo xrandr --output eDP-1-1 --mode "3840x2400"

sudoなしでxrandrを作成する方法は?たとえば、次のようにできます。

xrandr --output eDP-1-1 --mode "3840x2400"

私はvideoグループに属しています。私は通常のファイルに私のパスワードを公開したくありませんが、xrandr目的のために一時的にルートが自動的になるようなシステムスクリプトを作成したいと思います。

(このスクリプトはメニューバーのトグルボタンをクリックすると呼び出されるため、実際には解像度を検出して3840x2400と1920x1200の間を切り替えるPythonスクリプトになります。)


編集:奇妙な状況のためにxrandrをrootとして実行する必要があると思います。これは、nvidia-drm.modesetカーネルパラメータまたは同様のものです。モデル行が存在していても、手動で再追加する必要があります。。このような状況になれば、何をアドバイスすべきかわからない。自由にコメントを残してください。とにかく再起動後、sudoの使用要件はなくなりました。私は最高の答えを受け入れます。

ベストアンサー1

  1. xrandrいいえ。sudoユーザーがXセッションにログインしている場合は、実行してxrandr画面設定を照会して変更できます。

  2. /etc/sudoersユーザー(またはユーザー)がパスワードを入力せずにrootとしてコマンドを実行できるように設定できます。これはルートのみを必要とし、他の操作は実行しない短いラッパースクリプトで使用するのが最善です。その後、ユーザーはrootとしてスクリプトを実行できますNOPASSWD:

    可能であれば、このようなラッパースクリプトはパラメータや他のユーザー提供の入力を使用しないことが理想的です。ユーザー入力が避けられない場合は、必要な操作を実行して使用する前に、すべての入力を検証するために必要な最小限の手順を実行する必要があります(そしてより良いセキュリティのために既知の悪いことを確認するのではなく、既知の悪いことを確認して拒否する必要があります) )。そしてそれらを拒否する) - 良いものはすべて拒否する)。

    例えば

    #!/bin/sh
    xrandr --output eDP-1-1 --mode "3840x2400"
    

    たとえば、として保存してmode3840x2400.sh実行可能にし、chmod次の内容を追加します/etc/sudoers(このファイルを直接編集しないでくださいvisudo)。

    username ALL = NOPASSWD: /full/path/to/mode3840x2400.sh
    

または、希望の解像度設定を要求するパラメータを許可し、他のすべての設定は拒否するラッパースクリプトの例を次に示します。引数が指定されない場合、デフォルトは1920です。

#!/bin/sh
res=${1:-1}

case "$res" in
  1) xrandr --output eDP-1-1 --mode "1920x1200" ;;
  2) xrandr --output eDP-1-1 --mode "3840x2400" ;;
  *) echo "Error: unknown argument '$res'" > /dev/stderr; exit 1;
esac

ところで、上記のように、xrandr sudo作業は不要- Xにログインしているすべてのユーザーが実行できます。私はこれをrootとして実行できるものの例として使用しています。

おすすめ記事