keyctl은 VMVware CPU를 비활성화합니다.

keyctl은 VMVware CPU를 비활성화합니다.

keyctl작동 방식, 특히 기능을 이해하는 데 약간의 어려움이 있습니다 request2. 내가 이해한 바에 따르면, request2주어진 문자열을 검색하여 발견되면 반환합니다. 찾을 수 없는 경우, /sbin/request-key설명된 작업(해당되는 경우)을 수행하는 애플리케이션이 호출됩니다 ./etc/request-key.d/*/etc/request-key.conf

그런데 테스트 중에 몇 가지 문제가 발생했습니다.

[user@localhost ~]$ cat /etc/request-key.conf
###############################################################################
#
# Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
...snip... 
###############################################################################

#OP     TYPE    DESCRIPTION     CALLOUT INFO    PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create  dns_resolver *          *               /sbin/key.dns_resolver %k
create  user    debug:*         negate          /bin/keyctl negate %k 30 %S
create  user    debug:*         rejected        /bin/keyctl reject %k 30 %c %S
create  user    debug:*         expired         /bin/keyctl reject %k 30 %c %S
create  user    debug:*         revoked         /bin/keyctl reject %k 30 %c %S
create  user    debug:loop:*    *               |/bin/cat
create  user    debug:*         *               /usr/share/keyutils/request-key-debug.sh %k %d %c %S
negate  *       *               *               /bin/keyctl negate %k 30 %S
[user@localhost ~]$

실제 키를 생성 keyctl print하고 올바른 출력을 생성하는 디버그 루프를 만듭니다.

[user@localhost ~]$ keyctl request2 user debug:loop:test "loop test"
181348864
[user@localhost ~]$ keyctl show
Session Keyring
 141395006 --alswrv   1000  1000  keyring: _ses
 521399390 --alswrv   1000 65534   \_ keyring: _uid.1000
 181348864 --alswrv   1000  1000   \_ user: debug:loop:test
 691271691 --alswrv   1000  1000   \_ user: debug:test
[user@localhost ~]$ keyctl print 181348864
loop test
[user@localhost ~]$

다른 키를 생성하면 각각에 대한 디버그 항목이 생성됩니다 request-key.conf. keyctl print키를 올바르게 인쇄하십시오.

[user@localhost ~]$ keyctl request2 user debug:se-test "hello hello"
1061018025
[user@localhost ~]$ keyctl show
Session Keyring
 141395006 --alswrv   1000  1000  keyring: _ses
 521399390 --alswrv   1000 65534   \_ keyring: _uid.1000
1061018025 --alswrv   1000  1000   \_ user: debug:se-test
 181348864 --alswrv   1000  1000   \_ user: debug:loop:test
 691271691 --alswrv   1000  1000   \_ user: debug:test
[user@localhost ~]$
[user@localhost ~]$ keyctl print 1061018025
Debug hello hello
[user@localhost ~]$

다른 규칙과 일치하지 않는 키를 생성하려면 음수 키를 생성해야 합니다. keyctl printVMWare에서 비활성화된 CPU의 강제 재설정을 트리거합니다.

[user@localhost ~]$ keyctl request2 user se:test "blah"
request_key: Required key not available
[user@localhost ~]$ keyctl show
Session Keyring
 141395006 --alswrv   1000  1000  keyring: _ses
 521399390 --alswrv   1000 65534   \_ keyring: _uid.1000
  65104736 --alswrv   1000  1000   \_ user: se:test
1061018025 --alswrv   1000  1000   \_ user: debug:se-test
 181348864 --alswrv   1000  1000   \_ user: debug:loop:test
 691271691 --alswrv   1000  1000   \_ user: debug:test
[user@localhost ~]$ keyctl desc 65104736
 65104736: alswrv-----v------------  1000  1000 user: se:test
[user@localhost ~]$
[user@localhost ~]$ keyctl print 65104736

keyctl print위와 동일한 방식으로 트리거되는 음수 디버그 키를 만듭니다 .

[user@localhost ~]$ keyctl request2 user debug:negatetest negate
request_key: Required key not available
[user@localhost ~]$ keyctl show
Session Keyring
1018725144 --alswrv   1000  1000  keyring: _ses
 478030378 --alswrv   1000 65534   \_ keyring: _uid.1000
 799585275 --alswrv   1000  1000   \_ user: debug:negatetest
[user@localhost ~]$
[user@localhost ~]$ keyctl desc 799585275
799585275: alswrv-----v------------  1000  1000 user: debug:negatetest
[user@localhost ~]$ keyctl print 799585275

(아마도) 음수 키를 읽으려고 하면 OS가 자동으로 종료됩니다.

내가 이해한 바에 따르면 음수 키는 읽을 수 없지만 즉시 OS 전원을 끄는 것이 예상된 결과입니까?

내가 얻는 구체적인 오류는 다음과 같습니다.

게스트 운영 체제에서 CPU를 비활성화했습니다. 가상 머신을 종료하거나 재설정합니다.

request-key.confkeyctl(1)에 대한 설명서를 살펴봤지만 keyctl(2)아무것도 찾을 수 없습니다. 제가 놓친 부분이 있으면 언제든지 관련 부분을 알려주시고 RTFM을 통해 알려주시기 바랍니다.

감사해요!

관련 정보