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 print
VMWare에서 비활성화된 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.conf
keyctl(1)
에 대한 설명서를 살펴봤지만 keyctl(2)
아무것도 찾을 수 없습니다. 제가 놓친 부분이 있으면 언제든지 관련 부분을 알려주시고 RTFM을 통해 알려주시기 바랍니다.
감사해요!