当使用带有 recurse=>true 的 Puppet 文件资源时,是否可以让目录和文件获得不同的权限?
也就是说,我们通常希望从组中删除所有非目录文件的读/执行权限。但是,目录应保留执行权限,因为需要进入该目录。
一些实用程序(例如 umask)足够智能来处理这个问题,但看起来 Puppet 可能不会。我错过了什么吗?
答案1
事实上,puppet 默认是这样做的:
“当指定目录的数字权限时,Puppet 在设置读取权限的位置设置搜索权限。”
也可以看看: https://docs.puppet.com/puppet/latest/types/file.html#file-attribute-mode
更明确的替代方法是使用“ug+X”等符号模式,这只会影响目录,甚至允许使目录可搜索/可执行而不可读(这确实允许您进入目录但不读取其内容...但不确定这是否是您想要的)。
答案2
当使用带有 recurse=>true 的 Puppet 文件资源时,是否可以让目录和文件获得不同的权限?
没有,但我回答过类似的问题这里如果您需要处理“x”位之外的任何内容,这会对您有所帮助。基本上,定义的类型采用“fmode”和“dmode”参数来定义每种类型的不同模式,并以递归方式快速应用这些模式。
答案3
Puppet 自动添加目录读取权限。
例如,如果您在目录上递归设置 mode => '0640',则 puppet 将为该目录下的所有文件设置模式 '0640',并且目录本身将设置为 '0750' 模式。
https://puppet.com/docs/puppet/6/types/file.html#mode
或者可以使用像 recursive_file_permissions 这样的傀儡模块。 https://forge.puppet.com/modules/npwalker/recursive_file_permissions