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でお知らせください。
ありがとうございます!