Update sudo and users cookbooks
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
require 'mixlib/shellout'
|
||||
|
||||
module Users
|
||||
# Helpers for Users
|
||||
module Helpers
|
||||
@@ -28,8 +26,16 @@ module Users
|
||||
def validate_id(id)
|
||||
id.to_i.to_s == id ? id.to_i : id
|
||||
end
|
||||
|
||||
# Returns the appropriate base user home directory per platform
|
||||
#
|
||||
# @return [ String]
|
||||
def home_basedir
|
||||
if platform_family?('mac_os_x')
|
||||
'/Users'
|
||||
else
|
||||
'/home'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Chef::Resource.send(:include, ::Users::Helpers)
|
||||
Chef::Provider.send(:include, ::Users::Helpers)
|
||||
|
||||
29
cookbooks/users/libraries/osx_helper.rb
Normal file
29
cookbooks/users/libraries/osx_helper.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
module Users
|
||||
# Helpers for Users
|
||||
module OsxHelper
|
||||
def dscl(*args)
|
||||
host = '.'
|
||||
stdout_result = ''
|
||||
stderr_result = ''
|
||||
cmd = "dscl #{host} -#{args.join(' ')}"
|
||||
status = shell_out(cmd)
|
||||
status.stdout.each_line { |line| stdout_result << line }
|
||||
status.stderr.each_line { |line| stderr_result << line }
|
||||
[cmd, status, stdout_result, stderr_result]
|
||||
end
|
||||
|
||||
def safe_dscl(*args)
|
||||
result = dscl(*args)
|
||||
return '' if (args.first =~ /^delete/) && (result[1].exitstatus != 0)
|
||||
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") unless result[1].exitstatus == 0
|
||||
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") if result[2] =~ /No such key: /
|
||||
result[2]
|
||||
end
|
||||
|
||||
def gid_used?(gid)
|
||||
return false unless gid
|
||||
groups_gids = safe_dscl('list /Groups gid')
|
||||
!!(groups_gids =~ Regexp.new("#{Regexp.escape(gid.to_s)}\n"))
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user