1

如何使用 Puppet 创建一个包含多个组的目录?

我想让“group1”和“group2”中的用户都可以访问该目录。

我尝试了下面的代码,它只授予group1所有权。

file { [ "some/path1", "some/path2" ]:
  ensure => directory,
  owner  => 'root',
  group  => ['group1', 'group2'],
  mode   => 0770,
}
4

3 回答 3

2

据我所知,Puppet 中的基本文件类型仅处理仅允许一个组和一个所有者的自主权限。这是底层系统的限制。

根据您客户的平台,您可以使用 ACL 向多个组或用户授予不同的权限。要在 Puppet 中执行此操作,您必须使用 Exec 并setfacl直接调用(例如,如果您在 Linux 上)。

于 2013-11-12T15:29:05.713 回答
1

PuppetForge 中有一些提供此功能的第三方模块(我认为是 puppet-acl );但是,尽管我相信功能请求正在考虑中,但目前它还没有出现在本地木偶中。

于 2013-11-13T03:14:22.317 回答
0

Puppet 的file{} 资源类型仅实现 Unix 权限,有时称为User-Group-Other (UGO) ...所以只有一个组,因为 Puppet 与chown, chgrp,相同chmod

file { [ '/path/to/file' ]:
  owner  => 'root',
  group  => 'marketing',
  mode   => 0770,
  ensure => directory,
}

有许多额外的模块可用于使用 Puppet 管理 ACL:

我使用puppet-acl。这是一个例子:

acl {'/path/to/file' :
  action     => 'set',
  permission => ['user::rwx',
                 'group::rwx',
                 'group:sales:rwx',
                 'mask::rwx',
                 'other::---',
                 'default:user::rwx',
                 'default:group:sales:rwx',
                 'default:group:marketing:rwx',
                 'default:mask::rwx',
                 'default:other::---'],
  require    => File['/path/to/file']
}

旁注:

  • RTFM,有很多有趣的选项(递归,action=strict|unset|purge)...
  • 确保 and 的and权限file{}acl{}一致的(否则权限将在每次 puppet 运行时平衡)。user:group:other:
于 2015-03-10T16:03:10.023 回答