特定のプログラムがデバイスにアクセスするのをブロックする


1

LinuxのSteamは長い間修正されていないバグあるため、特定のプログラム(Steam)が特定のデバイス(Sony DualShock 4コントローラー)にアクセスすることをブロックします。

私はカスタムグループの周りにいくつかのudevルールを設定してから、そのグループに属していないカスタムユーザーとしてSteamを実行しましたが、suGUIのものを実行できず、pkexec本当に環境変数。その結果、カスタムユーザーの/ homeディレクトリが存在しないためにすぐに失敗するなど、多数の問題が発生します。今、私はアイデアがありません。

回答:


0

最終的に、サンドボックスを使用してこれを実現できることがわかりました。具体的には火刑務所。hidrawデバイス(すべてのBluetoothコントローラーを含み、SteamがBluetooth DS4を検出する方法)をブロックするだけのコマンドを思いつきました。Bluetoothを介して使用するコントローラーはDS4のみであるため、これで十分です。

firejail --noprofile --blacklist="/dev/hidraw*" /usr/bin/steam

それは完全に機能します!SteamはDS4を認識できず、クラッシュしません。ただし、Shadow of Mordorなどの特定のゲームは、この方法を好まないようです。ほとんどのゲームは正常に動作しますが、SoMは私のDS4を認識します(また、Steamが特にを備えた360コントローラーだと思い込んでいるにもかかわらず、PlayStationボタンプロンプトが表示されるため、DS4であることさえ認識しますsc-controller)。私はまだ私の前にいくつかの仕事があります。

編集:成功!さらにテストを重ねた結果、SoMの問題は、ゲームが最高のLinuxポートではなく、DS4自体ではないDS4関連のものと互換性がないことであることがわかりました。つまり、ユーザー空間のドライバーで何か他のものをエミュレートさせようとすると、xboxdrv、ds4drv、sc-controllerなどがこのゲームでうまく動作しません。そこで、Steamを起動するためのスクリプト全体を作成しました。これは、hidrawデバイスではなく、Bluetoothアダプター全体をブロックします。このSteamのバグはPulseAudioの構成が原因であるため、ギャンブルを取り、SteamのコントローラーのUSBデバイス全体へのアクセスをブロックするだけで、steamがhidrawから/ dev / input / jsX、それは動作します。そしてそれは働いた。スクリプトの関連部分は次のとおりです。

#!/bin/bash
BLUETOOTH="$(lsusb | grep "8087:07dc")" # those are my BT adapter's device and vendor IDs; yours may be different
BUS="$(echo "$BLUETOOTH" | sed 's/.*Bus \([0-9]\+\).*/\1/')"
DEV="$(echo "$BLUETOOTH" | sed 's/.*Device \([0-9]\+\).*/\1/')"
BLACKLIST="/dev/bus/usb/$BUS/$DEV"

firejail --noprofile --blacklist="$BLACKLIST" /usr/bin/steam

(コントローラーからサウンド関連のものをブロックするのではなく、そのギャンブルを取りました。コントローラーにはサウンドカードがありますが、おそらくSteamがこの問題を抱えているのに、何かにアクセスする方法が見つからないからです。 / sysまたは/ devを介した上記サウンドカードに関連します。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.