| Puppet works this way because it applies symbolic modes relative to Puppet::Util::DEFAULT_POSIX_MODE which is defined as. Puppet doesn't apply the symbolic mode relative to the source file's mode. See https://github.com/puppetlabs/puppet/blob/6.20.0/lib/puppet/type/file.rb#L908. Puppet has always worked this way since symbolic modes were introduced in https://github.com/puppetlabs/puppet/commit/2ac94f94b9af6d8025ee0e771c4c7141ca9705c6#diff-909c0342abb4e713d05ed12ca713a199fd7fb79bc68927cef4e9b2e14726a684R740. In theory, puppet could be modified to retrieve the source file's mode, and apply the symbolic mode relative to that. However, it's non-trivial due to local vs remote sources, managing file content via the content or source parameter, and source_permissions defaults to ignore. Given that, I'm going to close this issue as won't do. |