summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@chef.io>2019-12-18 13:26:45 -0800
committerGitHub <noreply@github.com>2019-12-18 13:26:45 -0800
commitb2c9c65dea635bd173da98bccbd1ec6e8fd6e8fc (patch)
tree5f5db7831083626d6de21aa25658303ab371ce23
parentc0f51a5ae09d53f239e169159c9ec441116dfdfb (diff)
parent6f2ad0e95c7083fd4cb526ab36388afa6403bf47 (diff)
downloadchef-b2c9c65dea635bd173da98bccbd1ec6e8fd6e8fc.tar.gz
resource archive_file: apply ownership to extracted files only (#9173)
resource archive_file: apply ownership to extracted files only
-rw-r--r--lib/chef/resource/archive_file.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/chef/resource/archive_file.rb b/lib/chef/resource/archive_file.rb
index dd208fb60f..58681ecb47 100644
--- a/lib/chef/resource/archive_file.rb
+++ b/lib/chef/resource/archive_file.rb
@@ -102,8 +102,11 @@ class Chef
end
if new_resource.owner || new_resource.group
- converge_by("set owner of #{new_resource.destination} to #{new_resource.owner}:#{new_resource.group}") do
- FileUtils.chown_R(new_resource.owner, new_resource.group, new_resource.destination)
+ converge_by("set owner of files extracted in #{new_resource.destination} to #{new_resource.owner}:#{new_resource.group}") do
+ archive = Archive::Reader.open_filename(new_resource.path)
+ archive.each_entry do |e|
+ FileUtils.chown(new_resource.owner, new_resource.group, "#{new_resource.destination}/#{e.pathname}")
+ end
end
end
end