Class: Inspec::Resources::Passwd

Inherits:
Object
  • Object
show all
Includes:
PasswdParser
Defined in:
lib/resources/passwd.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from PasswdParser

#parse_passwd, #parse_passwd_line

Constructor Details

#initialize(path = nil, opts = nil) ⇒ Passwd

Returns a new instance of Passwd.



45
46
47
48
49
50
51
52
# File 'lib/resources/passwd.rb', line 45

def initialize(path = nil, opts = nil)
  opts ||= {}
  @path = path || '/etc/passwd'
  @content = opts[:content] || inspec.file(@path).content
  @lines = @content.to_s.split("\n")
  @filters = opts[:filters] || ''
  @params = parse_passwd(@content)
end

Instance Attribute Details

#contentObject (readonly)

Returns the value of attribute content.



42
43
44
# File 'lib/resources/passwd.rb', line 42

def content
  @content
end

#linesObject (readonly)

Returns the value of attribute lines.



43
44
45
# File 'lib/resources/passwd.rb', line 43

def lines
  @lines
end

#paramsObject (readonly)

Returns the value of attribute params.



41
42
43
# File 'lib/resources/passwd.rb', line 41

def params
  @params
end

#uid(x) ⇒ Object (readonly)

Returns the value of attribute uid.



40
41
42
# File 'lib/resources/passwd.rb', line 40

def uid
  @uid
end

Instance Method Details

#countObject



109
110
111
# File 'lib/resources/passwd.rb', line 109

def count
  @params.length
end

#filter(hm = {}) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/resources/passwd.rb', line 54

def filter(hm = {})
  return self if hm.nil? || hm.empty?
  res = @params
  filters = ''
  hm.each do |attr, condition|
    res, filters = filter_attribute(attr, condition, res, filters)
  end
  content = res.map { |x| x.values.join(':') }.join("\n")
  Passwd.new(@path, content: content, filters: @filters + filters)
end

#gids(gid = nil) ⇒ Object



92
93
94
# File 'lib/resources/passwd.rb', line 92

def gids(gid = nil)
  gid.nil? ? map_data('gid') : filter(gid: gid)
end

#homes(home = nil) ⇒ Object



96
97
98
# File 'lib/resources/passwd.rb', line 96

def homes(home = nil)
  home.nil? ? map_data('home') : filter(home: home)
end

#passwords(password = nil) ⇒ Object



84
85
86
# File 'lib/resources/passwd.rb', line 84

def passwords(password = nil)
  password.nil? ? map_data('password') : filter(password: password)
end

#shells(shell = nil) ⇒ Object



100
101
102
# File 'lib/resources/passwd.rb', line 100

def shells(shell = nil)
  shell.nil? ? map_data('shell') : filter(shell: shell)
end

#to_sObject



104
105
106
107
# File 'lib/resources/passwd.rb', line 104

def to_s
  f = @filters.empty? ? '' : ' with'+@filters
  "/etc/passwd#{f}"
end

#uids(uid = nil) ⇒ Object



88
89
90
# File 'lib/resources/passwd.rb', line 88

def uids(uid = nil)
  uid.nil? ? map_data('uid') : filter(uid: uid)
end

#usernameObject



70
71
72
73
# File 'lib/resources/passwd.rb', line 70

def username
  warn '[DEPRECATION] `passwd.user` is deprecated. Please use `passwd.users` instead. It will be removed in version 1.0.0.'
  users[0]
end

#usernamesObject



65
66
67
68
# File 'lib/resources/passwd.rb', line 65

def usernames
  warn '[DEPRECATION] `passwd.usernames` is deprecated. Please use `passwd.users` instead. It will be removed in version 1.0.0.'
  users
end

#users(name = nil) ⇒ Object



80
81
82
# File 'lib/resources/passwd.rb', line 80

def users(name = nil)
  name.nil? ? map_data('user') : filter(user: name)
end