这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 keyctl,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
名称
keyctl - 密钥管理设施控制
概要
键控 - 版
键控 显示 [-x] [ ]
键控 添加
键控 填充
键控 要求[ ]
键控 请求2 [ ]
键控 请求2 [ ]
键控 更新
键控 更新
键控 新人
键控 撤销
键控 清除
键控 关联
键控 取消链接[ ]
键控 搜索[ ]
键控 读
键控 管道
键控 打印
键控 列表
键控 列表
键控 描述
键控 重新描述[九月]
键控 chown
键控 chgrp
键控 设置权限
键控 新会话
键控 会议
键控 会议 - [ ...]
键控 会议[ ...]
键控 实例化
键控 品类化
键控 否定
键控 拒绝
键控 暂停
键控 安全
键控 收获 [-v]
键控 清除
键控 清除 [-i] [-p]
键控 清除 -s
键控 get_persistent [ ]
商品描述
该程序用于使用各种方式控制密钥管理设施
各种子命令。
KEY 身份标识
传递给 keyctl 或从 keyctl 返回的密钥标识符通常是正整数。
但是,有一些具有特殊含义的特殊值可以作为
参数:
(*) 无键: 0
(*) 螺纹钥匙圈: @t or -1
每个线程可能有自己的密钥环。 这首先被搜索,在所有其他人之前。 这
线程密钥环被 (v)fork、exec 和 clone 替换。
(*) 处理钥匙圈: @p or -2
每个进程(线程组)可能有自己的密钥环。 这是所有成员之间共享的
一个组,将在线程密钥环之后搜索。 进程密钥环被替换
通过 (v) fork 和 exec。
(*) 会话密钥环: @s or -3
每个进程订阅一个会话密钥环,该密钥环跨 (v)fork、exec 和
克隆。 这是在进程密钥环之后搜索的。 会话密钥环可以被命名和
现存的密钥环可以代替进程的当前会话密钥环加入。
(*) 用户特定的钥匙圈: @u or -4
该密钥环在特定用户拥有的所有进程之间共享。 不是
直接搜索,但通常从会话密钥环链接到。
(*) 用户默认会话密钥环: @我们 or -5
这是特定用户的默认会话密钥环。 登录过程更改为
特定用户将绑定到此会话,直到设置另一个会话。
(*) 组特定的钥匙圈: @g or -6
这是组特定密钥环的占位符,但尚未实际实现
在内核中。
(*) 假设 request_key 授权密钥: @a or -7
这将选择提供给 request_key() 助手的授权密钥以允许它
访问调用者密钥环并实例化目标密钥。
(*) 钥匙圈按名称: %:
一个命名的钥匙圈。 这将在进程的密钥环和 /proc/keys 中搜索。
(*) 按名称键: % :
给定类型的命名键。 这将在进程的密钥环和
/proc/键。
指挥 句法
可以使用命令名称的任何非歧义缩短来代替完整命令
姓名。 不应在脚本中使用此工具,因为将来可能会添加新命令
然后导致歧义。
(*) 显示器 练习 包 版本 数
键控 - 版
此命令打印包版本号和构建日期并退出:
测试箱>keyctl --version
来自 keyutils-1.5.3 的 keyctl(构建于 2011-08-24)
(*) 展示 过程 钥匙圈
键控 显示 [-X] [ ]
默认情况下,此命令递归地显示进程订阅的密钥环和
它们包含哪些钥匙和钥匙圈。 如果指定了密钥环,则该密钥环将是
倒掉了。 如果 -x 指定然后密钥环 ID 将以十六进制转储而不是
十进制。
(*) 加入 a 键 至 a 钥匙圈
键控 加
键控 填充
此命令创建指定类型和描述的键; 实例化它
给定数据并将其附加到指定的密钥环。 然后将新密钥的 ID 打印在
标准输出:
testbox>keyctl 添加用户 mykey 的东西@u
26
冥界 填充 命令的变体从 stdin 读取数据,而不是从
命令行:
testbox>echo -n 的东西 | keyctl padd 用户 mykey @u
26
(*) 询问 a 键
键控 请求 [ ]
键控 请求2 [ ]
键控 请求2 [ ]
这三个命令请求查找给定类型和描述的键。 这
将搜索进程的密钥环,如果找到匹配项,则匹配密钥的 ID 将是
打印到标准输出; 如果给出了目标密钥环,则密钥将添加到该密钥环中
钥匙圈也。
如果没有密钥,第一个命令将简单地返回错误 ENOKEY 并失败。 这
第二个和第三个命令将创建一个带有类型和描述的部分键,和
呼唤 /sbin/请求密钥 使用该密钥和提供的额外信息。 这会
然后尝试以某种方式实例化密钥,从而获得有效的密钥。
第三条命令与第二条命令类似,只是从callout信息中读取
stdin 而不是在命令行上传递。
如果获得有效密钥,将打印 ID 并附加密钥,就像原始密钥一样
搜索成功。
如果没有获得有效的密钥,则临时否定密钥将附加到
如果给出目标密钥环,将给出错误“请求的密钥不可用”。
testbox>keyctl request2 用户调试:你好wibble
23
testbox>echo -n wibble | keyctl prequest2 用户调试:你好
23
testbox>keyctl 请求用户调试:你好
23
(*) 更新 a 键
键控 更新
键控 更新
此命令将附加到密钥的数据替换为一组新数据。 如果类型
密钥不支持更新,则会返回错误“不支持操作”。
testbox>keyctl 更新 23 斑马
冥界 更新 命令的变体从标准输入读取数据而不是从
命令行:
测试箱>回声-n斑马| keyctl pupdate 23
(*) 创建 a 钥匙圈
键控 新人
此命令创建指定名称的新密钥环并将其附加到指定的
钥匙圈。 如果成功,新密钥环的 ID 将打印到标准输出。
testbox>keyctl newring 静噪@us
27
(*) 撤消 a 键
键控 撤消
此命令将密钥标记为已撤销。 对该键的任何进一步操作(除了
取消链接)将返回错误“密钥已被撤销”。
testbox>keyctl 撤销 26
testbox>keyctl 描述 26
keyctl_describe:密钥已被撤销
(*) 明确 a 钥匙圈
键控 清除
此命令取消连接到指定密钥环的所有密钥。 错误“不是
如果指定的密钥不是密钥环,则将返回目录”。
测试箱>keyctl 清除 27
(*) Link a 键 至 a 钥匙圈
键控 链接
如果有足够的容量,此命令会建立从密钥到密钥环的链接。
如果目标不是钥匙圈,将返回错误“不是目录”。 错误
如果密钥没有链接权限或
密钥环没有写权限。 如果出现以下情况,将返回错误“文件表溢出”
钥匙圈已满。 如果尝试,将返回错误“避免资源死锁”
引入递归链接。
测试箱>keyctl 链接 23 27
测试箱>keyctl 链接 27 27
keyctl_link:避免资源死锁
(*) 取消链接 a 键 由 a 钥匙圈 or 练习 会议 钥匙圈 树
键控 取消链接 [ ]
如果指定了密钥环,则此命令会从密钥环中删除指向密钥的链接。
如果目标不是钥匙圈,将返回错误“不是目录”。 错误
如果密钥环没有写权限,将返回“权限被拒绝”。 错误
如果密钥未通过密钥环链接到,则将返回“没有此类文件或目录”。
如果未指定密钥环,则此命令执行会话的深度优先搜索
密钥环树并删除指向它找到的指定密钥的所有链接(并且它是
允许删除)。 它在退出之前打印成功取消链接的数量。
测试箱>keyctl 取消链接 23 27
(*) 搜索 a 钥匙圈
键控 搜索、 [ ]
此命令以非递归方式在密钥环中搜索特定类型的密钥并
描述。 如果找到,密钥的 ID 将打印在标准输出上,密钥将是
附加到目标密钥环(如果存在)。 错误“请求的密钥不可用”将
如果找不到密钥,则返回。
testbox>keyctl search @us 用户调试:你好
23
testbox>keyctl search @us 用户调试:再见
keyctl_search:请求的密钥不可用
(*) 阅读 a 键
键控 读
键控 管
键控 打印
这些命令读取密钥的有效负载。 “读取”将其作为十六进制转储打印在标准输出上,“管道”
将原始数据转储到 stdout 并“打印”直接将其转储到 stdout
如果不是,则可打印或作为以“:hex:”开头的十六进制转储。
如果密钥类型不支持读取有效负载,则会出现错误“操作不
支持”将被退回。
testbox>keyctl 读取 26
密钥中的 1 字节数据:
62
测试箱>keyctl 打印 26
b
测试箱>keyctl 管道 26
测试盒>
(*) 名单 a 钥匙圈
键控 名单
键控 列表
这些命令将密钥的内容作为密钥环列出。 “列表”漂亮地打印内容
而“rlist”只生成一个空格分隔的密钥 ID 列表。
不会尝试检查指定的密钥环是否为密钥环。
testbox>keyctl 列表@us
钥匙圈中的 2 把钥匙:
22:vrwsl---------- 4043 -1 钥匙圈:_uid.4043
23:vrwsl---------- 4043 4043 用户:调试:你好
testbox>keyctl rlist @us
22 23
(*) 描述 a 键
键控 描述
键控 重新描述 [九月]
这些命令获取密钥环的描述。 “描述”漂亮地打印描述
以与“list”命令相同的方式; “rdescribe”打印从返回的原始数据
内核。
testbox>keyctl 描述@us
-5:vrwsl---------- 4043 -1 密钥环:_uid_ses.4043 testbox>keyctl
rdescribe @us keyring;4043;-1;3f1f0000;_uid_ses.4043
原始字符串是“ ; ; ; ; “, 在哪里 的uid 和 GID 是
十进制用户和组 ID, 烫发 是十六进制的权限掩码, 类型 和 描述 ,那恭喜你,
类型名称和描述字符串(都不包含分号)。
(*) 更改 练习 访问 控制 on a 键
键控 乔恩
键控 chgrp
这两个命令更改与评估密钥权限相关的 UID 和 GID
面具。 UID 还控制从哪个配额中取出密钥。
目前不支持 chown 命令; 尝试它将获得错误“操作
不支持”充其量。
对于非超级用户,GID 只能设置为进程的 GID 或进程中的 GID
进程的组列表。 超级用户可以设置它喜欢的任何 GID。
测试箱>sudo keyctl chown 27 0
keyctl_chown:不支持操作
测试箱>sudo keyctl chgrp 27 0
(*) 在 练习 权限 面膜 on a 键
键控 设置权限
此命令更改密钥的权限控制掩码。 掩码可以指定为
以“0x”开头的十六进制数,以“0”开头的八进制数或十进制数
除此以外。
十六进制数字是以下各项的组合:
拥有者 UID GID 授予其他权限
================================================
01000000 00010000 00000100 00000001 查看
02000000 00020000 00000200 00000002 读取
04000000 00040000 00000400 00000004 写
08000000 00080000 00000800 00000008 搜索
10000000 00100000 00001000 00000010 链接
20000000 00200000 00002000 00000020 设置属性
3f000000 003f0000 00003f00 0000003f 全部
查看 允许查看密钥的类型、描述和其他参数。
阅读 如果类型支持,则允许读取有效负载(或密钥环列表)。
填写 允许修改或更新有效负载(或密钥环列表)。
搜索 键允许在搜索与其链接的密钥环时找到它。
Link 允许将密钥链接到密钥环。
在 属性 允许密钥拥有其所有者、组成员身份、权限掩码和
超时更改。
测试盒>keyctl setperm 27 0x1f1f1f00
(*) Start 开始 a 新 会议 同 新鲜 钥匙圈
键控 会议
键控 会议 - [ ...]
键控 会议 [ ...]
这些命令加入或创建一个新的密钥环,然后运行 shell 或其他程序
该密钥环作为会话密钥。
没有参数的变化只是创建一个匿名会话密钥环并附加
作为会话密钥环; 然后执行 $SHELL。
用破折号代替名称的变体创建了一个匿名会话密钥环和
将其附加为会话密钥环; 然后执行提供的命令,或者 $SHELL 如果
一个不提供。
提供名称的变体创建或加入命名的钥匙圈并将其附加为
会话密钥环; 然后执行提供的命令,或者 $SHELL 如果没有提供。
testbox>keyctl rdescribe @s
keyring;4043;-1;3f1f0000;_uid_ses.4043
测试箱>keyctl 会话
加入的会话密钥环:28
testbox>keyctl rdescribe @s
keyring;4043;4043;3f1f0000;_ses.24082
测试箱>keyctl 会话-
加入的会话密钥环:29
testbox>keyctl rdescribe @s
keyring;4043;4043;3f1f0000;_ses.24139
testbox>keyctl session - keyctl rdescribe @s
加入的会话密钥环:30
keyring;4043;4043;3f1f0000;_ses.24185
测试箱>keyctl 会话鱼
加入的会话密钥环:34
testbox>keyctl rdescribe @s
keyring;4043;4043;3f1f0000;fish
testbox>keyctl session fish keyctl rdesc @s
加入的会话密钥环:35
keyring;4043;4043;3f1f0000;fish
(*) 实例化 a 键
键控 实例化
键控 品类化
键控 否定
键控 拒绝
这些命令用于将数据附加到部分设置的密钥(由内核创建
并传递给 /sbin/request-key)。 “实例化”将密钥标记为有效并附加
数据作为有效载荷。 “否定”和“拒绝”将密钥标记为无效并设置超时
让它在一段时间后消失。 这可以防止很多快速顺序
请求在它们都失败时使系统减慢太多,作为所有后续
请求将失败并显示错误“未找到请求的密钥”(如果被否定)或指定的
错误(如果被拒绝),直到负键过期。
Reject 的错误参数可以是 UNIX 错误号或 '拒绝','过期'
要么 '撤销'.
新实例化的密钥将附加到指定的密钥环。
这些命令只能从 request-key 运行的程序中运行 - 一个特殊的
授权密钥由内核设置并附加到请求密钥的会话中
钥匙圈。 一旦它所引用的密钥被实例化,这个特殊的密钥就会被撤销
不管怎样。
testbox>keyctl 实例化 $1 "Debug $3" $4
testbox>keyctl 否定 $1 30 $4
testbox>keyctl 拒绝 $1 30 64 $4
冥界 品类化 命令的变体从标准输入读取数据而不是获取它
从命令行:
testbox>echo -n "调试 $3" | keyctl pinstantiate $1 $4
(*) 在 练习 到期 次 on a 键
键控 超时
此命令用于设置键的超时时间,或清除现有的超时时间,如果
指定的值为零。 超时以未来的秒数给出。
testbox>keyctl 超时 $1 45
(*) 取回 a 钥匙的 保安 上下文
键控 保安
此命令用于检索密钥的 LSM 安全上下文。 标签印在
标准输出。
testbox>keyctl security @s
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
(*) 给 练习 亲 过程 a 新 会议 钥匙圈
键控 新会话
此命令用于为调用进程(通常是 shell)提供一个新会话
密钥环,丢弃其旧会话密钥环。
测试盒> keyctl session foo
加入的会话密钥环:723488146
测试箱> keyctl 显示
会话密钥环
-3 --alswrv 0 0 钥匙圈:foo
测试箱> keyctl new_session
490511412
测试箱> keyctl 显示
会话密钥环
-3 --alswrv 0 0 钥匙圈:_ses
请注意,这会影响 亲 调用系统调用的进程,因此可能
仅影响具有匹配凭据的进程。 此外,更改不需要
直到父进程下一次从内核空间转换到用户空间为止 -
通常当 等待() 系统调用返回。
(*) 删除 死 键 由 练习 会议 钥匙圈 树
键控 收割
此命令对调用者的会话密钥环树执行深度优先搜索并
试图解除它发现由于到期、撤销而无法访问的任何密钥的链接,
拒绝或否定。 它不会尝试删除不可用的实时密钥
仅仅是因为缺乏授予的许可。
指定为可获取的密钥只有在调用者有
对该密钥环的写入权限,并且仅授予对该密钥环的搜索权限的密钥环
将搜索来电者。
该命令在退出之前打印获得的密钥数。 如果 -v 旗帜通过
然后在收获时列出已收获的钥匙,以及成功或
取消链接失败。
(*) 删除 匹配 键 由 练习 会议 钥匙圈 树
键控 清除
键控 清除 [-i] [-p]
键控 清除 -s
这些命令执行深度优先搜索以在调用者的会话中找到匹配的键
密钥环树并尝试取消链接。 成功取消链接的密钥数量是
打印在最后。
密钥环必须向要搜索的调用者授予读取和查看权限,并且
要删除的密钥还必须授予查看权限。 钥匙只能从
授予写入权限的密钥环。
第一个变体清除指定类型的所有键。
第二个变体清除也匹配给定类型的所有键
字面上的描述。 -i 标志允许与大小写无关的匹配,-p 标志允许
前缀匹配。
第三个变体使用以下命令清除指定类型和匹配描述的所有键
内核中键类型的比较器以匹配描述。 这允许密钥类型
将一个键与各种描述相匹配。
(*) 联系 坚持 钥匙圈
键控 get_persistent [ ]
此命令获取当前 UID 或指定 UID 的持久密钥环
并将其附加到指定的钥匙圈上。 持久密钥环的 ID 将打印在
标准输出。
如果密钥环不存在并且每次执行此命令时,内核将创建它
调用,将密钥环上的过期超时重置为以下值:
/proc/sys/kernel/keys/persistent_keyring_expiry
(默认三天)。 如果达到超时,持久密钥环将
删除,然后它固定的所有内容都可以被垃圾收集。
如果指定了进程的真实或有效 UID 以外的 UID,则会出现错误
如果进程没有 CAP_SETUID 能力,则给出。
错误
这个程序返回了一些常见的错误:
“不是目录” - 钥匙不是钥匙圈。
“未找到请求的密钥” - 查找的密钥不可用。
“密钥已被撤销” - 访问了已撤销的密钥。
“密钥已过期” - 访问了过期的密钥。
“权限被拒绝” - 权限被 UID/GID/掩码组合拒绝。
使用 onworks.net 服务在线使用 keyctl