Class: Inspec::Resources::FileResource
Overview
TODO: rename file_resource.rb
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.
39
40
41
42
43
|
# File 'lib/inspec/resources/file.rb', line 39
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.
38
39
40
|
# File 'lib/inspec/resources/file.rb', line 38
def file
@file
end
|
#mount_options ⇒ Object
Returns the value of attribute mount_options.
38
39
40
|
# File 'lib/inspec/resources/file.rb', line 38
def mount_options
@mount_options
end
|
Instance Method Details
#allowed?(permission, opts = {}) ⇒ Boolean
107
108
109
110
111
112
|
# File 'lib/inspec/resources/file.rb', line 107
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
82
83
84
|
# File 'lib/inspec/resources/file.rb', line 82
def contain(*_)
raise "Contain is not supported. Please use standard RSpec matchers."
end
|
#content ⇒ Object
57
58
59
60
61
62
|
# File 'lib/inspec/resources/file.rb', line 57
def content
res = file.content
return nil if res.nil?
res.force_encoding("utf-8")
end
|
#executable?(by_usergroup, by_specific_user) ⇒ Boolean
100
101
102
103
104
105
|
# File 'lib/inspec/resources/file.rb', line 100
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
|
#inherited? ⇒ Boolean
returns true if inheritance is enabled on file or folder
74
75
76
77
78
79
80
|
# File 'lib/inspec/resources/file.rb', line 74
def inherited?
return false unless exist?
return skip_resource "`inherited?` is not supported on your OS yet." unless inspec.os.windows?
@perms_provider.inherited?(file)
end
|
#more_permissive_than?(max_mode = nil) ⇒ Boolean
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
# File 'lib/inspec/resources/file.rb', line 156
def more_permissive_than?(max_mode = nil)
return nil unless exist?
raise ArgumentError, "You must provide a value for the `maximum allowable permission` for the file." if max_mode.nil?
raise ArgumentError, "You must provide 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-digit octal format: for example, `0644` or `0777`" unless /(0)?([0-7])([0-7])([0-7])/.match?(max_mode)
max_mode = max_mode.to_i(8)
inv_mode = 0777 ^ max_mode
inv_mode & file.mode != 0
end
|
#mounted?(expected_options = nil, identical = false) ⇒ Boolean
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
# File 'lib/inspec/resources/file.rb', line 114
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 unless 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
86
87
88
89
90
91
|
# File 'lib/inspec/resources/file.rb', line 86
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?
144
145
146
|
# File 'lib/inspec/resources/file.rb', line 144
def sgid
(mode & 02000) > 0
end
|
#sticky ⇒ Object
Also known as:
sticky?
150
151
152
|
# File 'lib/inspec/resources/file.rb', line 150
def sticky
(mode & 01000) > 0
end
|
#suid ⇒ Object
Also known as:
setuid?
138
139
140
|
# File 'lib/inspec/resources/file.rb', line 138
def suid
(mode & 04000) > 0
end
|
#to_s ⇒ Object
184
185
186
187
188
189
190
|
# File 'lib/inspec/resources/file.rb', line 184
def to_s
if file
"File #{source_path}"
else
"Bad File on %s" % [inspec.backend.class]
end
end
|
#user_permissions ⇒ Object
returns hash containing list of users/groups and their file permissions.
65
66
67
68
69
70
71
|
# File 'lib/inspec/resources/file.rb', line 65
def user_permissions
return {} unless exist?
return skip_resource "`user_permissions` is not supported on your OS yet." unless inspec.os.windows?
@perms_provider.user_permissions(file)
end
|
#writable?(by_usergroup, by_specific_user) ⇒ Boolean
93
94
95
96
97
98
|
# File 'lib/inspec/resources/file.rb', line 93
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
|