Polkitはrule.dファイルを解釈するためにどのJavaScriptソルバーを使用しますか?

Polkitはrule.dファイルを解釈するためにどのJavaScriptソルバーを使用しますか?

Polkitはrule.dファイルを解釈するためにどのJavaScriptソルバーを使用しますか?

存在しないウィキペディアのタイトルへのリンクを書くときのソースコード「ECMAScript.2C_5th_Edition」しかし、これはインタプリタによって書かれた仕様に過ぎず、ポルケットルールファイルを解釈するための特定の実装ではありません。

認証システムに含まれるJavaScriptソルバーの目的と使用を理解してください。なるべく明確に明記する必要があります。インタプリタがどこに含まれているか、共有ランタイムが何であるか、ルールファイル関数が解釈される時期、非同期的に解釈されるかなどの詳細を明確にすることもお勧めします。

答え1

これはおそらくMozillaの実装です。

私のCentos 7マシンで:

% ldd /usr/lib/polkit-1/polkitd | grep js
        libmozjs-17.0.so => /lib64/libmozjs-17.0.so (0x00007f7c25d9f000)

% rpm -qif /lib64/libmozjs-17.0.so
Name        : mozjs17
Version     : 17.0.0
Release     : 20.el7
Architecture: x86_64
Install Date: Sun May 13 09:40:16 2018
Group       : Development/Languages
Size        : 4045213
License     : GPLv2+ or LGPLv2+ or MPLv1.1
Signature   : RSA/SHA256, Wed Apr 25 07:27:32 2018, Key ID 24c6a8a7f4a80eb5
Source RPM  : mozjs17-17.0.0-20.el7.src.rpm
Build Date  : Tue Apr 10 20:33:07 2018
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.mozilla.org/js/
Summary     : JavaScript interpreter and libraries
Description :
JavaScript is the Netscape-developed object scripting language used in millions
of web pages and server applications worldwide. Netscape's JavaScript is a
superset of the ECMA-262 Edition 3 (ECMAScript) standard scripting language,
with only mild differences from the published standard.

答え2

polkitは今duktape(https://duktape.org/)はJavaScriptを実行するために使用されます。

nu ❯ paru -Qi polkit
Name            : polkit
Version         : 122-1
Description     : Application development toolkit for controlling system-wide privileges
Architecture    : x86_64
URL             : https://gitlab.freedesktop.org/polkit/polkit
Licenses        : LGPL
...
Depends On      : duktape  expat  glib2  pam  systemd
...

~
nu ❯ paru -Qi duktape
Name            : duktape
Version         : 2.7.0-6
Description     : Embeddable Javascript engine
Architecture    : x86_64
URL             : https://duktape.org/
Licenses        : MIT
...

ウェブサイトによると、duktape 2.6.0はECMAScript 2015と2016のほとんどを実装しているようですが、ある種のテストツール(またはウェブサイト)を使用してルールが外部で実行されていないことを再確認することをお勧めします。その範囲内のすべての操作

答え3

実際、既存の答えはすべてやや正確です。 Polkitは、実際にコンパイル時に設定できるJSインタプリタをサポートしmozjsて機能します。duktapeだから今日の答えは「配布版によって異なります」です。

duktape2022年初頭に代替通訳者のサポートが追加されました。この神社、3つの主要なデフォルトディストリビューション(テスト対象:ArchLinux、Debian 12、Fedora 38)がすべてこのディストリビューションに切り替えられたようです。ただし、これは以前および/または安定性指向のディストリビューション(特にRHEL 9)の場合には当てはまりません。


したがって、ディストリビューションに適したものを見つける最後の方法は、/usr/lib/polkit-1/polkitd@StephenHarrisが提案したように、リンクされたライブラリをチェックすることです。このオネライナーを実行できます。

ldd /usr/lib/polkit-1/polkitd | grep -E '(mozjs|duktape)'

polkit何も印刷されない場合は、パッケージがJSルールのサポートなしでビルドされたことを意味します。

関連情報