class Inspec::Resources::Shadow
Attributes
params[R]
Public Class Methods
new(path = "/etc/shadow", opts = {})
click to toggle source
# File lib/inspec/resources/shadow.rb, line 38 def initialize(path = "/etc/shadow", opts = {}) @opts = opts @path = path || "/etc/shadow" @filters = @opts[:filters] || "" end
Public Instance Methods
expiry_date(query = nil)
click to toggle source
# File lib/inspec/resources/shadow.rb, line 102 def expiry_date(query = nil) Inspec.deprecate(:properties_shadow, "The shadow `expiry_date` property is deprecated. Please use `expiry_dates` instead.") query.nil? ? where.expiry_dates : where("expiry_date" => query) end
filter(query = {})
click to toggle source
# File lib/inspec/resources/shadow.rb, line 64 def filter(query = {}) return self if query.nil? || query.empty? res = set_params filters = "" query.each do |attr, condition| condition = condition.to_s if condition.is_a? Integer filters += " #{attr} = #{condition.inspect}" res = res.find_all do |line| case line[attr.to_s] when condition true else false end end end content = res.map { |x| x.values.join(":") }.join("\n") Shadow.new(@path, content: content, filters: @filters + filters) end
last_change(query = nil)
click to toggle source
# File lib/inspec/resources/shadow.rb, line 97 def last_change(query = nil) Inspec.deprecate(:properties_shadow, "The shadow `last_change` property is deprecated. Please use `last_changes` instead.") query.nil? ? where.last_changes : where("last_change" => query) end
lines()
click to toggle source
# File lib/inspec/resources/shadow.rb, line 107 def lines Inspec.deprecate(:properties_shadow, "The shadow `lines` property is deprecated.") shadow_content.to_s.split("\n") end
password(query = nil)
click to toggle source
# File lib/inspec/resources/shadow.rb, line 92 def password(query = nil) Inspec.deprecate(:properties_shadow, "The shadow `password` property is deprecated. Please use `passwords` instead.") query.nil? ? where.passwords : where("password" => query) end
to_s()
click to toggle source
# File lib/inspec/resources/shadow.rb, line 112 def to_s f = @filters.empty? ? "" : " with" + @filters "#{@path}#{f}" end
user(query = nil)
click to toggle source
Next 4 are deprecated methods. We define them here so we can emit a deprecation message. They are also defined on the Table, above.
# File lib/inspec/resources/shadow.rb, line 87 def user(query = nil) Inspec.deprecate(:properties_shadow, "The shadow `user` property is deprecated. Please use `users` instead.") query.nil? ? where.users : where("user" => query) end
Private Instance Methods
map_data(id)
click to toggle source
# File lib/inspec/resources/shadow.rb, line 127 def map_data(id) set_params.collect { |x| x[id] } end
parse_shadow_line(line)
click to toggle source
Parse a line of /etc/shadow
@param [String] line a line of /etc/shadow @return [Hash] Map of entries in this line
# File lib/inspec/resources/shadow.rb, line 135 def parse_shadow_line(line) x = line.split(":") { "user" => x.at(0), "password" => x.at(1), "last_change" => x.at(2), "min_days" => x.at(3), "max_days" => x.at(4), "warn_days" => x.at(5), "inactive_days" => x.at(6), "expiry_date" => x.at(7), "reserved" => x.at(8), } end
set_params()
click to toggle source
# File lib/inspec/resources/shadow.rb, line 123 def set_params @params ||= Array(shadow_content.to_s.split("\n")).map { |l| parse_shadow_line(l) } end
shadow_content()
click to toggle source
# File lib/inspec/resources/shadow.rb, line 119 def shadow_content @opts[:content] || read_file_content(@path, allow_empty: true) end