Polkit은 rule.d 파일을 해석하기 위해 어떤 JavaScript 해석기를 사용합니까?

Polkit은 rule.d 파일을 해석하기 위해 어떤 JavaScript 해석기를 사용합니까?

Polkit은 rule.d 파일을 해석하기 위해 어떤 JavaScript 해석기를 사용합니까?

존재하지 않는 Wikipedia 제목에 대한 링크를 작성할 당시의 소스 코드"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년 초에 대체 통역사 지원이 추가되었습니다.이 신사, 세 가지 주요 기본 배포판(테스트 대상: ArchLinux, Debian 12, Fedora 38)이 모두 이 배포판으로 전환된 것 같습니다. 그러나 이는 이전 및/또는 안정성 지향 배포판(특히 RHEL 9)의 경우에는 해당되지 않을 수 있습니다.


따라서 배포판에 적합한 것을 찾는 마지막 방법은 /usr/lib/polkit-1/polkitd@StephenHarris가 제안한 것처럼 연결된 라이브러리를 확인하는 것입니다. 이 oneliner를 실행할 수 있습니다.

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

polkit아무것도 인쇄되지 않으면 패키지가 JS 규칙 지원 없이 빌드되었음을 의미합니다 .

관련 정보