class Chef::Provider::User::Solaris

Constants

UNIVERSAL_OPTIONS

Attributes

password_file[W]

Public Class Methods

new(new_resource, run_context) click to toggle source
Calls superclass method Chef::Provider::User.new
# File lib/chef/provider/user/solaris.rb, line 29
def initialize(new_resource, run_context)
  @password_file = "/etc/shadow"
  super
end

Public Instance Methods

create_user() click to toggle source
# File lib/chef/provider/user/solaris.rb, line 34
def create_user
  super
  manage_password
end
manage_user() click to toggle source
# File lib/chef/provider/user/solaris.rb, line 39
def manage_user
  manage_password
  super
end

Private Instance Methods

days_since_epoch() click to toggle source
# File lib/chef/provider/user/solaris.rb, line 85
def days_since_epoch
  (Time.now.to_i / 86400).floor
end
manage_password() click to toggle source
# File lib/chef/provider/user/solaris.rb, line 46
def manage_password
  if @current_resource.password != @new_resource.password && @new_resource.password
    Chef::Log.debug("#{@new_resource} setting password to #{@new_resource.password}")
    write_shadow_file
  end
end
updated_password(entry) click to toggle source
# File lib/chef/provider/user/solaris.rb, line 78
def updated_password(entry)
  fields = entry.split(":")
  fields[1] = @new_resource.password
  fields[2] = days_since_epoch
  fields.join(":")
end
write_shadow_file() click to toggle source
# File lib/chef/provider/user/solaris.rb, line 53
def write_shadow_file
  buffer = Tempfile.new("shadow", "/etc")
  ::File.open(@password_file) do |shadow_file|
    shadow_file.each do |entry|
      user = entry.split(":").first
      if user == @new_resource.username
        buffer.write(updated_password(entry))
      else
        buffer.write(entry)
      end
    end
  end
  buffer.close

  # FIXME: mostly duplicates code with file provider deploying a file
  mode = ::File.stat(@password_file).mode & 07777
  uid  = ::File.stat(@password_file).uid
  gid  = ::File.stat(@password_file).gid

  FileUtils.chown uid, gid, buffer.path
  FileUtils.chmod mode, buffer.path

  FileUtils.mv buffer.path, @password_file
end