TL;博士;
westonは、スーパーユーザー権限なしでユーザーwestonに初期化されます。
ただし、アプリケーションにはいくつかのsu権限が必要で、rootユーザーといくつかのファイルを共有します。
ウェスタンユーザーがGUI実行可能ファイルにアクセスできる安全なWayland環境を実装する正しい方法は何ですか?
問題の説明
バックエンドには、NETLINKソケット、セマフォ、スレッド、共有メモリの作成など、rootがアクセスできるようにしたり、一般ユーザーが変更しないでください特定の機能へのアクセスが必要です(/dev/shm
)。
ただし、GUIアプリケーションは、共有メモリ、共有ファイル、セマフォ、スレッドなど、rootユーザーによって作成された一部のリソースにアクセスできる必要があります。
解決策
ルートとして実行
すべてをrootとして実行できますが、これは安全ではありません。
/etc/init.d/weston
ファイルをWESTON_USER=weston
次から変更します。WESTON_USER=root
しかし、このメールでは、次のように説明します。説明する:
Weston は、実行中のユーザーのみがアクセスできるように、権限のあるソケットを作成します。これはよく考慮され、認証がどのように機能するかです。したがって、westonをrootとして実行した後、他の一般ユーザーに接続することはできません。実際、westonをrootとして実行しないでください(すべてのGL、シェーダコンパイラ、プロトコル処理などを含む)。。 rpiバックエンドの要件、つまりwestonを実行するために必要なアクセス権が何であるかはわかりませんが、rootを開くにはrootが必要なグラフィックデバイスがある場合は、処理方法と同様にweston-launchでこれを行う必要があります。 Linux DRMと入力デバイスを制限する方法。
したがって、rootユーザーを使用してはいけませんが、weston-launch
.Westonの実行はどのように機能しますか?最新のウェスタンは使わないと思います。weston-launch
グループ権限
これらの共有リソースを処理するためにグループを作成する必要がありますか?そして、他のグループの一部の個人リソースもありますか?共有リソースをバックエンドでのみ変更できる場合はどうなりますか?
私たちは変えることができますウェスタン初期化.bbファイルにグループが含まれています。
能力
権限検証を実行するために、既存のUNIX実装では、許可されたプロセス(有効なユーザーIDが0、スーパーユーザー、またはルートと呼ばれる)と権限のないプロセス(有効なUIDが0ではない)の2種類のプロセスを区別します。 。権限のあるプロセスはすべてのカーネル権限チェックをバイパスしますが、権限のないプロセスはプロセス資格情報(通常は有効なUID、有効なGID、および補足グループのリスト)に基づいて完全な権限チェックを受け取ります。
しなければならない能力使用?
その他のソリューション
他の解決策は何ですか?セキュリティ環境でこれを実装する最も実現可能な方法は何ですか?