Class: UnixUser

Inherits:
UserInfo show all
Defined in:
lib/resources/user.rb

Overview

implements generic unix id handling

Direct Known Subclasses

DarwinUser, FreeBSDUser, LinuxUser

Instance Attribute Summary

Attributes inherited from UserInfo

#inspec

Instance Method Summary collapse

Methods inherited from UserInfo

#credentials, #initialize

Methods included from Converter

#convert_to_i

Constructor Details

This class inherits a constructor from UserInfo

Instance Method Details

#identity(username) ⇒ Object

extracts the identity



192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/resources/user.rb', line 192

def identity(username)
  cmd = inspec.command("id #{username}")
  return nil if cmd.exit_status != 0

  # parse words
  params = SimpleConfig.new(
    cmd.stdout.chomp,
    line_separator: ' ',
    assignment_re: /^\s*([^=]*?)\s*=\s*(.*?)\s*$/,
    group_re: nil,
    multiple_values: false,
  ).params

  {
    uid: convert_to_i(parse_value(params['uid']).keys[0]),
    user: parse_value(params['uid']).values[0],
    gid: convert_to_i(parse_value(params['gid']).keys[0]),
    group: parse_value(params['gid']).values[0],
    groups: parse_value(params['groups']).values,
  }
end

#parse_value(line) ⇒ Object

parse one id entry like ‘0(wheel)”



181
182
183
184
185
186
187
188
189
# File 'lib/resources/user.rb', line 181

def parse_value(line)
  SimpleConfig.new(
    line,
    line_separator: ',',
    assignment_re: /^\s*([^\(]*?)\s*\(\s*(.*?)\)*$/,
    group_re: nil,
    multiple_values: false,
  ).params
end