Class: Inspec::Resources::FileResource
Instance Attribute Summary collapse
Instance Method Summary
collapse
#includes_whitespaces?, #parse_mount_options
#select_file_perms_style
Constructor Details
Returns a new instance of FileResource.
38
39
40
41
42
|
# File 'lib/resources/file.rb', line 38
def initialize(path)
@perms_provider = select_file_perms_style(inspec.os)
@file = inspec.backend.file(path)
end
|
Instance Attribute Details
#file ⇒ Object
Returns the value of attribute file.
37
38
39
|
# File 'lib/resources/file.rb', line 37
def file
@file
end
|
#mount_options ⇒ Object
Returns the value of attribute mount_options.
37
38
39
|
# File 'lib/resources/file.rb', line 37
def mount_options
@mount_options
end
|
Instance Method Details
#allowed?(permission, opts = {}) ⇒ Boolean
87
88
89
90
91
92
|
# File 'lib/resources/file.rb', line 87
def allowed?(permission, opts = {})
return false unless exist?
return skip_resource '`allowed?` is not supported on your OS yet.' if @perms_provider.nil?
file_permission_granted?(permission, opts[:by], opts[:by_user])
end
|
#contain(*_) ⇒ Object
62
63
64
|
# File 'lib/resources/file.rb', line 62
def contain(*_)
raise 'Contain is not supported. Please use standard RSpec matchers.'
end
|
#content ⇒ Object
56
57
58
59
60
|
# File 'lib/resources/file.rb', line 56
def content
res = file.content
return nil if res.nil?
res.force_encoding('utf-8')
end
|
#executable?(by_usergroup, by_specific_user) ⇒ Boolean
80
81
82
83
84
85
|
# File 'lib/resources/file.rb', line 80
def executable?(by_usergroup, by_specific_user)
return false unless exist?
return skip_resource '`executable?` is not supported on your OS yet.' if @perms_provider.nil?
file_permission_granted?('execute', by_usergroup, by_specific_user)
end
|
#more_permissive_than?(max_mode = nil) ⇒ Boolean
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
# File 'lib/resources/file.rb', line 136
def more_permissive_than?(max_mode = nil)
raise Inspec::Exceptions::ResourceFailed, 'The file' + file.path + 'doesn\'t seem to exist' unless exist?
raise ArgumentError, 'You must proivde a value for the `maximum allowable permission` for the file.' if max_mode.nil?
raise ArgumentError, 'You must proivde the `maximum permission target` as a `String`, you provided: ' + max_mode.class.to_s unless max_mode.is_a?(String)
raise ArgumentError, 'The value of the `maximum permission target` should be a valid file mode in 4-ditgit octal format: for example, `0644` or `0777`' unless /(0)?([0-7])([0-7])([0-7])/.match?(max_mode)
max_mode = max_mode.rjust(4, '0')
binary_desired_mode = format('%04b', max_mode).to_i(2)
desired_mode_inverse = (binary_desired_mode ^ 0b111111111)
(desired_mode_inverse & file.mode).zero? ? false : true
end
|
#mounted?(expected_options = nil, identical = false) ⇒ Boolean
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/resources/file.rb', line 94
def mounted?(expected_options = nil, identical = false)
mounted = file.mounted
return file.mounted? if expected_options.nil?
Inspec.deprecate(:file_resource_be_mounted_matchers, 'The file resource `be_mounted.with` and `be_mounted.only_with` matchers are deprecated. Please use the `mount` resource instead')
return nil if !inspec.os.linux?
@mount_options ||= parse_mount_options(mounted.stdout, true)
if identical
@mount_options == expected_options
else
@mount_options.contains(expected_options)
end
end
|
#readable?(by_usergroup, by_specific_user) ⇒ Boolean
66
67
68
69
70
71
|
# File 'lib/resources/file.rb', line 66
def readable?(by_usergroup, by_specific_user)
return false unless exist?
return skip_resource '`readable?` is not supported on your OS yet.' if @perms_provider.nil?
file_permission_granted?('read', by_usergroup, by_specific_user)
end
|
#sgid ⇒ Object
Also known as:
setgid?
124
125
126
|
# File 'lib/resources/file.rb', line 124
def sgid
(mode & 02000) > 0
end
|
#sticky ⇒ Object
Also known as:
sticky?
130
131
132
|
# File 'lib/resources/file.rb', line 130
def sticky
(mode & 01000) > 0
end
|
#suid ⇒ Object
Also known as:
setuid?
118
119
120
|
# File 'lib/resources/file.rb', line 118
def suid
(mode & 04000) > 0
end
|
#to_s ⇒ Object
165
166
167
|
# File 'lib/resources/file.rb', line 165
def to_s
"File #{source_path}"
end
|
#writable?(by_usergroup, by_specific_user) ⇒ Boolean
73
74
75
76
77
78
|
# File 'lib/resources/file.rb', line 73
def writable?(by_usergroup, by_specific_user)
return false unless exist?
return skip_resource '`writable?` is not supported on your OS yet.' if @perms_provider.nil?
file_permission_granted?('write', by_usergroup, by_specific_user)
end
|