我想要以下内容:
- 我想使用 openssl 来更改密钥。因此,我创建了目录“/etc/keys“我将其标记为”键“。我创建了一个文件”钥匙“具有相同的访问权限”键“ 以及另一个密钥文件 ”禁止密钥“ 具有访问权限 ”禁止“ 目录下 ”等/钥匙“。
- 我让 openssl 命令执行为“安全的“。
- 我制定了以下规则:安全密钥 rw 安全禁止 -
- 我测试了下图所示的规则,它们似乎有效。
但是当我尝试实际运行该命令时,它不起作用,即使允许对 /etc/keys 和 /etc/keys/key 进行写访问
openssl rand 32 > /etc/keys/key
错误信息如下
-bash: /etc/keys/key: Permission denied
审计讯息如下
VirtualBox 内核:[1274.037659] 审核:类型=1400 审核(1500117397.021:8):lsm=SMACK fn=smack_inode_getattr 操作=拒绝主题=“_”对象=“keys”请求=r pid=2574 comm=“pool”路径=“/etc/keys”dev=“sda1”ino=3932692
奇怪的是,我运行 openssl 时以“secure”作为执行主题,但在审计中却以“floor(_)”作为执行主题。有人能找出错误吗?
问候,Satya
答案1
失败的原因有两个。
bash 尝试写入 /etc/keys/key,而不是 openssl
您的命令“openssl rand 32 >/etc/keys/key”指示 shell 打开 /etc/keys/key 文件进行写入,执行 openssl 命令并将 stdout 从 openssl 重定向到打开的 /etc/keys/key。您的 shell 正在使用 floor(“_”)Smack 标签运行,因此无法打开该文件。如果您打算将 openssl 写入 /etc/keys/key,请尝试以下操作:
openssl rand 32 -out /etc/keys/key
您需要启用从“安全”到“密钥”的执行访问
这是因为从“secure”主体到“keys”对象将有两次访问。当 openssl 打开 /etc/keys/key 文件进行写入时,它还必须具有对 /etc/ 和 /etc/keys/ 目录的访问权限。对目录的访问是通过 Smack “x”权限实现的。因此,您需要将规则“secure keys rw”扩展为“secure keys rwx”。