diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/config.rb | 8 | ||||
-rw-r--r-- | lib/puppet/parser/ast/hostclass.rb | 2 | ||||
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 2 | ||||
-rw-r--r-- | lib/puppet/parser/scope.rb | 12 | ||||
-rw-r--r-- | lib/puppet/util.rb | 7 |
5 files changed, 21 insertions, 10 deletions
diff --git a/lib/puppet/config.rb b/lib/puppet/config.rb index 303c45ed9..5519138fd 100644 --- a/lib/puppet/config.rb +++ b/lib/puppet/config.rb @@ -545,7 +545,13 @@ Generated on #{Time.now}. raise ArgumentError, "Default %s is not a file" % default end - Puppet::Util.asuser(obj.owner, obj.group) do + chown = nil + if Process.uid == 0 + chown = [obj.owner, obj.group] + else + chown = [nil, nil] + end + Puppet::Util.asuser(*chown) do mode = obj.mode || 0640 if args.empty? diff --git a/lib/puppet/parser/ast/hostclass.rb b/lib/puppet/parser/ast/hostclass.rb index 3952cd4dc..503802b93 100644 --- a/lib/puppet/parser/ast/hostclass.rb +++ b/lib/puppet/parser/ast/hostclass.rb @@ -48,7 +48,7 @@ class Puppet::Parser::AST # Set the mark after we evaluate, so we don't record it but # then encounter an error - scope.setclass(self.object_id) + scope.setclass(self.object_id, @type) return retval end diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index c432e39a8..4f5f1f69a 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -77,8 +77,6 @@ module Puppet # Create our parser object parsefiles - - evaluate end # Connect to the LDAP Server diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index 76fb1703e..6e945adb4 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -214,7 +214,7 @@ module Puppet unless defined? @classtable raise Puppet::DevError, "Scope did not receive class table" end - return @classtable.keys + return @classtable.values end # Yield each child scope in turn @@ -590,11 +590,11 @@ module Puppet # Look up a given class. This enables us to make sure classes are # singletons - def lookupclass(klass) + def lookupclass(klassid) unless defined? @classtable raise Puppet::DevError, "Scope did not receive class table" end - return @classtable[klass] + return @classtable[klassid] end # Collect all of the defaults set at any higher scopes. @@ -730,11 +730,11 @@ module Puppet # that gets inherited from the nodescope down, rather than a global # hash. We store the object ID, not class name, so that we # can support multiple unrelated classes with the same name. - def setclass(id) + def setclass(id, name) if self.nodescope? or self.topscope? - @classtable[id] = true + @classtable[id] = name else - @parent.setclass(id) + @parent.setclass(id, name) end end diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb index 1d4515b3d..e842ffd3f 100644 --- a/lib/puppet/util.rb +++ b/lib/puppet/util.rb @@ -16,6 +16,13 @@ module Util olduid = nil oldgid = nil + # If they're running as a normal user, then just execute as that same + # user. + unless Process.uid == 0 + yield + return + end + begin # the groupid, if we got passed a group # The gid has to be changed first, because, well, otherwise we won't |