英语法语西班牙语

运行服务器 | Ubuntu > | Fedora > |


OnWorks 网站图标

keyctl - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 keyctl

这是可以使用我们的多个免费在线工作站之一在 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

原始字符串是“ ; ; ; ; “, 在哪里 的uidGID
十进制用户和组 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


Ad


Ad