尝试使用人偶更新 root 的 authorized_keys 时权限被拒绝
Permission denied when trying to update root's authorized_keys using puppet
我正在尝试使用 puppet 添加密钥到 /root/.ssh/authorized_keys
(它有 chmod 600)。
我为此使用 ssh_authorized_key
资源。
ssh_authorized_key { 'my@mail.com':
ensure => present,
user => 'root',
type => 'ssh-rsa',
key => 'myKey',
}
当我 运行 puppet apply ...
作为 root 第一次 时,它抛出这个错误:
"Error: Puppet::Util::FileType::FileTypeFlat could not write /root/.ssh/authorized_keys: Permission denied - /root/.ssh/authorized_keys",
尽管如此,它将上述密钥添加到 /root/.ssh/authorized_keys
但删除了所有现有密钥。如果我 运行 它第二次成功完成,没有任何错误。
什么会导致这种奇怪的行为,我该如何解决? (我的OS是美分OS6)
puppet
,运行 作为 root,不能修改文件但可以删除它强烈表明强制访问控制 (SELinux) 在这里发挥了作用。如果 SELinux 在强制模式下启用并且 puppet
的 SELinux 执行上下文无权修改最初标记为 /root/.ssh/authorized_keys
的文件,那么 Puppet 确实会被拒绝写入该文件的权限。
但是删除原始文件并在其位置写入一个新文件只需要 puppet 能够修改 目录,并且 puppet 有足够的权限似乎是合理的那。新文件将强制带有允许 puppet 修改它的标签,因此后续的 puppet 运行不会遇到同样的问题。
底线:这可能是与您的系统配置和您如何 运行 Puppet 有关的问题,而不是 Puppet 本身的固有问题。如果我已经正确描述了它,那么您可以在安全上下文中通过 运行 您的 puppet apply
命令避免问题,该安全上下文具有对您希望它能够修改的所有文件的必要访问权限,或者通过重新标记在您现在使用的上下文中或通过选择不同的上下文访问文件。详细信息,如果您需要它们,在不同的论坛中寻找更合适,例如 Super User or Unix & Linux SE.
我正在尝试使用 puppet 添加密钥到 /root/.ssh/authorized_keys
(它有 chmod 600)。
我为此使用 ssh_authorized_key
资源。
ssh_authorized_key { 'my@mail.com':
ensure => present,
user => 'root',
type => 'ssh-rsa',
key => 'myKey',
}
当我 运行 puppet apply ...
作为 root 第一次 时,它抛出这个错误:
"Error: Puppet::Util::FileType::FileTypeFlat could not write /root/.ssh/authorized_keys: Permission denied - /root/.ssh/authorized_keys",
尽管如此,它将上述密钥添加到 /root/.ssh/authorized_keys
但删除了所有现有密钥。如果我 运行 它第二次成功完成,没有任何错误。
什么会导致这种奇怪的行为,我该如何解决? (我的OS是美分OS6)
puppet
,运行 作为 root,不能修改文件但可以删除它强烈表明强制访问控制 (SELinux) 在这里发挥了作用。如果 SELinux 在强制模式下启用并且 puppet
的 SELinux 执行上下文无权修改最初标记为 /root/.ssh/authorized_keys
的文件,那么 Puppet 确实会被拒绝写入该文件的权限。
但是删除原始文件并在其位置写入一个新文件只需要 puppet 能够修改 目录,并且 puppet 有足够的权限似乎是合理的那。新文件将强制带有允许 puppet 修改它的标签,因此后续的 puppet 运行不会遇到同样的问题。
底线:这可能是与您的系统配置和您如何 运行 Puppet 有关的问题,而不是 Puppet 本身的固有问题。如果我已经正确描述了它,那么您可以在安全上下文中通过 运行 您的 puppet apply
命令避免问题,该安全上下文具有对您希望它能够修改的所有文件的必要访问权限,或者通过重新标记在您现在使用的上下文中或通过选择不同的上下文访问文件。详细信息,如果您需要它们,在不同的论坛中寻找更合适,例如 Super User or Unix & Linux SE.