使用Puppet创建具有多个组所有权的目录?

时间:2013-11-11 12:53:40

标签: linux permissions puppet acl

如何使用Puppet创建一个拥有多个组的目录?

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

PuppetForge中有一些第三方模块(我认为是puppet-acl)提供此功能;但是,此时此刻并不是原生木偶,但我相信功能请求正在考虑之中。

答案 2 :(得分:0)

Puppet的file{} 资源类型仅实现Unix权限,有时称为用户组 - 其他(UGO) ...仅限一个小组,因为Puppet与chownchgrpchmod相同:

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,有很多有趣的选项(recursive,action = strict | unset | purge)...
  • 确保file{}acl{}以及user:的{​​{1}}和group:权限一致(否则权限将在每个木偶运行时保持平衡)。