inspec 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +65 -0
- data/.travis.yml +23 -0
- data/CHANGELOG.md +38 -0
- data/Gemfile +33 -0
- data/LICENSE +201 -0
- data/MAINTAINERS.md +28 -0
- data/MAINTAINERS.toml +42 -0
- data/README.md +257 -0
- data/Rakefile +47 -0
- data/bin/inspec +109 -0
- data/docs/ctl_inspec.rst +195 -0
- data/docs/dsl_inspec.rst +182 -0
- data/docs/readme.rst +100 -0
- data/docs/resources.rst +4319 -0
- data/docs/template.rst +51 -0
- data/examples/test-kitchen/.kitchen.yml +20 -0
- data/examples/test-kitchen/Berksfile +3 -0
- data/examples/test-kitchen/Gemfile +21 -0
- data/examples/test-kitchen/README.md +27 -0
- data/examples/test-kitchen/metadata.rb +7 -0
- data/examples/test-kitchen/recipes/default.rb +6 -0
- data/examples/test-kitchen/recipes/nginx.rb +30 -0
- data/examples/test-kitchen/test/integration/default/web_spec.rb +28 -0
- data/inspec.gemspec +30 -0
- data/lib/inspec.rb +20 -0
- data/lib/inspec/backend.rb +42 -0
- data/lib/inspec/dsl.rb +151 -0
- data/lib/inspec/log.rb +34 -0
- data/lib/inspec/metadata.rb +79 -0
- data/lib/inspec/plugins.rb +9 -0
- data/lib/inspec/plugins/resource.rb +62 -0
- data/lib/inspec/profile.rb +138 -0
- data/lib/inspec/profile_context.rb +170 -0
- data/lib/inspec/resource.rb +76 -0
- data/lib/inspec/rspec_json_formatter.rb +27 -0
- data/lib/inspec/rule.rb +170 -0
- data/lib/inspec/runner.rb +154 -0
- data/lib/inspec/shell.rb +66 -0
- data/lib/inspec/targets.rb +9 -0
- data/lib/inspec/targets/core.rb +27 -0
- data/lib/inspec/targets/dir.rb +67 -0
- data/lib/inspec/targets/file.rb +29 -0
- data/lib/inspec/targets/folder.rb +43 -0
- data/lib/inspec/targets/tar.rb +34 -0
- data/lib/inspec/targets/url.rb +39 -0
- data/lib/inspec/targets/zip.rb +47 -0
- data/lib/inspec/version.rb +7 -0
- data/lib/matchers/matchers.rb +221 -0
- data/lib/resources/apache.rb +29 -0
- data/lib/resources/apache_conf.rb +113 -0
- data/lib/resources/apt.rb +140 -0
- data/lib/resources/audit_policy.rb +63 -0
- data/lib/resources/auditd_conf.rb +56 -0
- data/lib/resources/auditd_rules.rb +53 -0
- data/lib/resources/bond.rb +65 -0
- data/lib/resources/bridge.rb +114 -0
- data/lib/resources/command.rb +57 -0
- data/lib/resources/csv.rb +32 -0
- data/lib/resources/directory.rb +15 -0
- data/lib/resources/etc_group.rb +150 -0
- data/lib/resources/file.rb +110 -0
- data/lib/resources/gem.rb +46 -0
- data/lib/resources/group.rb +132 -0
- data/lib/resources/host.rb +143 -0
- data/lib/resources/inetd_conf.rb +56 -0
- data/lib/resources/interface.rb +127 -0
- data/lib/resources/iptables.rb +65 -0
- data/lib/resources/json.rb +64 -0
- data/lib/resources/kernel_module.rb +40 -0
- data/lib/resources/kernel_parameter.rb +55 -0
- data/lib/resources/limits_conf.rb +55 -0
- data/lib/resources/login_def.rb +60 -0
- data/lib/resources/mysql.rb +81 -0
- data/lib/resources/mysql_conf.rb +116 -0
- data/lib/resources/mysql_session.rb +52 -0
- data/lib/resources/npm.rb +44 -0
- data/lib/resources/ntp_conf.rb +58 -0
- data/lib/resources/oneget.rb +63 -0
- data/lib/resources/os.rb +22 -0
- data/lib/resources/os_env.rb +34 -0
- data/lib/resources/package.rb +169 -0
- data/lib/resources/parse_config.rb +75 -0
- data/lib/resources/passwd.rb +93 -0
- data/lib/resources/pip.rb +75 -0
- data/lib/resources/port.rb +296 -0
- data/lib/resources/postgres.rb +37 -0
- data/lib/resources/postgres_conf.rb +87 -0
- data/lib/resources/postgres_session.rb +59 -0
- data/lib/resources/processes.rb +57 -0
- data/lib/resources/registry_key.rb +54 -0
- data/lib/resources/script.rb +34 -0
- data/lib/resources/security_policy.rb +73 -0
- data/lib/resources/service.rb +379 -0
- data/lib/resources/ssh_conf.rb +75 -0
- data/lib/resources/user.rb +374 -0
- data/lib/resources/windows_feature.rb +77 -0
- data/lib/resources/yaml.rb +23 -0
- data/lib/resources/yum.rb +154 -0
- data/lib/utils/convert.rb +12 -0
- data/lib/utils/detect.rb +15 -0
- data/lib/utils/find_files.rb +36 -0
- data/lib/utils/hash.rb +13 -0
- data/lib/utils/modulator.rb +12 -0
- data/lib/utils/parser.rb +61 -0
- data/lib/utils/simpleconfig.rb +115 -0
- data/tasks/maintainers.rb +213 -0
- data/test/docker_run.rb +156 -0
- data/test/docker_test.rb +51 -0
- data/test/helper.rb +200 -0
- data/test/integration/.kitchen.yml +42 -0
- data/test/integration/Berksfile +4 -0
- data/test/integration/cookbooks/os_prepare/metadata.rb +8 -0
- data/test/integration/cookbooks/os_prepare/recipes/apt.rb +20 -0
- data/test/integration/cookbooks/os_prepare/recipes/default.rb +9 -0
- data/test/integration/cookbooks/os_prepare/recipes/file.rb +21 -0
- data/test/integration/cookbooks/os_prepare/recipes/package.rb +26 -0
- data/test/integration/default/_debug_spec.rb +1 -0
- data/test/integration/default/apt_spec.rb +42 -0
- data/test/integration/default/file_spec.rb +109 -0
- data/test/integration/default/group_spec.rb +32 -0
- data/test/integration/default/kernel_module_spec.rb +17 -0
- data/test/integration/default/kernel_parameter_spec.rb +56 -0
- data/test/integration/default/package_spec.rb +11 -0
- data/test/integration/default/service_spec.rb +28 -0
- data/test/integration/default/user_spec.rb +44 -0
- data/test/resource/command_test.rb +33 -0
- data/test/resource/dsl_test.rb +45 -0
- data/test/resource/file_test.rb +130 -0
- data/test/resource/ssh_config.rb +9 -0
- data/test/resource/sshd_config.rb +9 -0
- data/test/test-extra.yaml +11 -0
- data/test/test.yaml +11 -0
- data/test/unit/mock/cmd/Get-NetAdapter +24 -0
- data/test/unit/mock/cmd/GetUserAccount +33 -0
- data/test/unit/mock/cmd/GetWin32Group +23 -0
- data/test/unit/mock/cmd/PATH +1 -0
- data/test/unit/mock/cmd/Resolve-DnsName +26 -0
- data/test/unit/mock/cmd/Test-NetConnection +4 -0
- data/test/unit/mock/cmd/auditctl +7 -0
- data/test/unit/mock/cmd/auditpol +2 -0
- data/test/unit/mock/cmd/brew-info-jq +1 -0
- data/test/unit/mock/cmd/chage-l-root +7 -0
- data/test/unit/mock/cmd/dpkg-s-curl +21 -0
- data/test/unit/mock/cmd/dscl +5 -0
- data/test/unit/mock/cmd/etc-apt +7 -0
- data/test/unit/mock/cmd/find-etc-rc-d-name-S +12 -0
- data/test/unit/mock/cmd/find-net-interface +9 -0
- data/test/unit/mock/cmd/gem-list-local-a-q-rubocop +1 -0
- data/test/unit/mock/cmd/get-net-tcpconnection +24 -0
- data/test/unit/mock/cmd/get-netadapter-binding-bridge +4 -0
- data/test/unit/mock/cmd/get-package-firefox +30 -0
- data/test/unit/mock/cmd/get-package-ruby +18 -0
- data/test/unit/mock/cmd/get-service-dhcp +10 -0
- data/test/unit/mock/cmd/get-windows-feature +7 -0
- data/test/unit/mock/cmd/getent-hosts-example.com +1 -0
- data/test/unit/mock/cmd/getent-passwd-root +1 -0
- data/test/unit/mock/cmd/id-chartmann +1 -0
- data/test/unit/mock/cmd/id-root +1 -0
- data/test/unit/mock/cmd/initctl-show-config-ssh +3 -0
- data/test/unit/mock/cmd/initctl-status-ssh +1 -0
- data/test/unit/mock/cmd/iptables-s +6 -0
- data/test/unit/mock/cmd/launchctl-list +3 -0
- data/test/unit/mock/cmd/ls-1-etc-init.d +2 -0
- data/test/unit/mock/cmd/ls-sys-class-net-br +2 -0
- data/test/unit/mock/cmd/lsmod +2 -0
- data/test/unit/mock/cmd/lsof-np-itcp +4 -0
- data/test/unit/mock/cmd/netstat-tulpen +5 -0
- data/test/unit/mock/cmd/npm-ls-g--json-bower +9 -0
- data/test/unit/mock/cmd/pacman-qi-curl +21 -0
- data/test/unit/mock/cmd/ping-example.com +6 -0
- data/test/unit/mock/cmd/pip-show-jinja2 +11 -0
- data/test/unit/mock/cmd/ps-aux +3 -0
- data/test/unit/mock/cmd/pw-usershow-root-7 +1 -0
- data/test/unit/mock/cmd/reg_schedule +1 -0
- data/test/unit/mock/cmd/rpm-qia-curl +24 -0
- data/test/unit/mock/cmd/sbin_sysctl +1 -0
- data/test/unit/mock/cmd/secedit-export +7 -0
- data/test/unit/mock/cmd/service-e +2 -0
- data/test/unit/mock/cmd/service-sendmail-onestatus +3 -0
- data/test/unit/mock/cmd/service-sshd-status +1 -0
- data/test/unit/mock/cmd/sockstat +5 -0
- data/test/unit/mock/cmd/success +0 -0
- data/test/unit/mock/cmd/systemctl-show-all-sshd +6 -0
- data/test/unit/mock/cmd/win32_product +8 -0
- data/test/unit/mock/cmd/yum-repolist-all +52 -0
- data/test/unit/mock/files/auditd.conf +4 -0
- data/test/unit/mock/files/bond0 +37 -0
- data/test/unit/mock/files/etcgroup +3 -0
- data/test/unit/mock/files/example.csv +6 -0
- data/test/unit/mock/files/inetd.conf +2 -0
- data/test/unit/mock/files/kitchen.yml +7 -0
- data/test/unit/mock/files/limits.conf +5 -0
- data/test/unit/mock/files/login.defs +5 -0
- data/test/unit/mock/files/mysql.conf +8 -0
- data/test/unit/mock/files/mysql2.conf +2 -0
- data/test/unit/mock/files/ntp.conf +5 -0
- data/test/unit/mock/files/passwd +2 -0
- data/test/unit/mock/files/policyfile.lock.json +12 -0
- data/test/unit/mock/files/ssh_config +5 -0
- data/test/unit/mock/files/sshd_config +7 -0
- data/test/unit/mock/profiles/empty/metadata.rb +0 -0
- data/test/unit/mock/profiles/metadata/metadata.rb +1 -0
- data/test/unit/profile_context_test.rb +140 -0
- data/test/unit/profile_test.rb +49 -0
- data/test/unit/resources/apt_test.rb +46 -0
- data/test/unit/resources/audit_policy_test.rb +13 -0
- data/test/unit/resources/auditd_conf_test.rb +15 -0
- data/test/unit/resources/auditd_rules_test.rb +21 -0
- data/test/unit/resources/bond_test.rb +24 -0
- data/test/unit/resources/bridge_test.rb +56 -0
- data/test/unit/resources/csv_test.rb +35 -0
- data/test/unit/resources/etc_group_test.rb +37 -0
- data/test/unit/resources/gem_test.rb +20 -0
- data/test/unit/resources/group_test.rb +96 -0
- data/test/unit/resources/host_test.rb +38 -0
- data/test/unit/resources/inetd_conf_test.rb +15 -0
- data/test/unit/resources/interface_test.rb +54 -0
- data/test/unit/resources/iptables_test.rb +30 -0
- data/test/unit/resources/json_test.rb +36 -0
- data/test/unit/resources/kernel_module_test.rb +23 -0
- data/test/unit/resources/kernel_parameter_test.rb +13 -0
- data/test/unit/resources/limits_conf_test.rb +14 -0
- data/test/unit/resources/login_def_test.rb +16 -0
- data/test/unit/resources/mysql_conf_test.rb +14 -0
- data/test/unit/resources/npm_test.rb +20 -0
- data/test/unit/resources/ntp_conf_test.rb +16 -0
- data/test/unit/resources/oneget_test.rb +45 -0
- data/test/unit/resources/os_env_test.rb +13 -0
- data/test/unit/resources/package_test.rb +51 -0
- data/test/unit/resources/passwd_test.rb +24 -0
- data/test/unit/resources/pip_test.rb +15 -0
- data/test/unit/resources/port_test.rb +46 -0
- data/test/unit/resources/processes_test.rb +32 -0
- data/test/unit/resources/registry_key_test.rb +19 -0
- data/test/unit/resources/script_test.rb +19 -0
- data/test/unit/resources/security_policy_test.rb +16 -0
- data/test/unit/resources/service_test.rb +116 -0
- data/test/unit/resources/ssh_conf_test.rb +33 -0
- data/test/unit/resources/user_test.rb +93 -0
- data/test/unit/resources/windows_feature.rb +17 -0
- data/test/unit/resources/yaml_test.rb +34 -0
- data/test/unit/resources/yum_test.rb +68 -0
- data/test/unit/simpleconfig_test.rb +80 -0
- data/test/unit/utils/content_parser_test.rb +30 -0
- metadata +555 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
driver:
|
|
3
|
+
name: vagrant
|
|
4
|
+
|
|
5
|
+
provisioner:
|
|
6
|
+
name: chef_solo
|
|
7
|
+
|
|
8
|
+
verifier:
|
|
9
|
+
name: inspec
|
|
10
|
+
sudo: true
|
|
11
|
+
|
|
12
|
+
platforms:
|
|
13
|
+
- name: centos-7.1
|
|
14
|
+
- name: centos-6.7
|
|
15
|
+
- name: centos-6.7-i386
|
|
16
|
+
- name: centos-5.11
|
|
17
|
+
- name: centos-5.11-i386
|
|
18
|
+
- name: debian-6.0.10
|
|
19
|
+
- name: debian-6.0.10-i386
|
|
20
|
+
- name: debian-7.8
|
|
21
|
+
- name: debian-7.8-i386
|
|
22
|
+
- name: debian-8.1
|
|
23
|
+
- name: debian-8.1-i386
|
|
24
|
+
- name: fedora-21
|
|
25
|
+
- name: fedora-21-i386
|
|
26
|
+
- name: fedora-22
|
|
27
|
+
- name: freebsd-9.3
|
|
28
|
+
- name: freebsd-10.2
|
|
29
|
+
- name: opensuse-13.2-x86_64
|
|
30
|
+
- name: opensuse-13.2-i386
|
|
31
|
+
- name: ubuntu-14.04
|
|
32
|
+
- name: ubuntu-14.04-i386
|
|
33
|
+
- name: ubuntu-12.04
|
|
34
|
+
- name: ubuntu-12.04-i386
|
|
35
|
+
- name: ubuntu-10.04
|
|
36
|
+
- name: ubuntu-10.04-i386
|
|
37
|
+
|
|
38
|
+
suites:
|
|
39
|
+
- name: default
|
|
40
|
+
run_list:
|
|
41
|
+
- recipe[os_prepare]
|
|
42
|
+
attributes:
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Christoph Hartmann
|
|
3
|
+
# author: Dominik Richter
|
|
4
|
+
|
|
5
|
+
# add nginx apt repository
|
|
6
|
+
case node['platform']
|
|
7
|
+
when 'ubuntu'
|
|
8
|
+
include_recipe('apt')
|
|
9
|
+
apt_repository 'nginx' do
|
|
10
|
+
uri 'ppa:nginx/stable'
|
|
11
|
+
distribution node['lsb']['codename']
|
|
12
|
+
end
|
|
13
|
+
when 'debian'
|
|
14
|
+
include_recipe('apt')
|
|
15
|
+
apt_repository 'nginx' do
|
|
16
|
+
uri 'http://nginx.org/packages/debian'
|
|
17
|
+
distribution node['lsb']['codename']
|
|
18
|
+
components ['nginx']
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Christoph Hartmann
|
|
3
|
+
# author: Dominik Richter
|
|
4
|
+
#
|
|
5
|
+
# prepares a sample file for verification
|
|
6
|
+
|
|
7
|
+
gid = 'root'
|
|
8
|
+
gid = 'wheel' if node['platform_family'] == 'freebsd'
|
|
9
|
+
|
|
10
|
+
file '/tmp/file' do
|
|
11
|
+
mode '0765'
|
|
12
|
+
owner 'root'
|
|
13
|
+
group gid
|
|
14
|
+
content 'hello world'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
directory '/tmp/folder' do
|
|
18
|
+
mode '0567'
|
|
19
|
+
owner 'root'
|
|
20
|
+
group gid
|
|
21
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Christoph Hartmann
|
|
3
|
+
# author: Dominik Richter
|
|
4
|
+
#
|
|
5
|
+
# installs everything to do the package test
|
|
6
|
+
|
|
7
|
+
case node['platform']
|
|
8
|
+
when 'ubuntu'
|
|
9
|
+
include_recipe('apt')
|
|
10
|
+
|
|
11
|
+
package 'curl'
|
|
12
|
+
when 'rhel', 'centos', 'fedora'
|
|
13
|
+
include_recipe('yum')
|
|
14
|
+
|
|
15
|
+
# TODO: support DNF natively
|
|
16
|
+
# Special care for fedora 22, since dnf is not officially supported yet
|
|
17
|
+
# https://github.com/chef/chef/issues/3201
|
|
18
|
+
if node['platform_version'] == '22'
|
|
19
|
+
execute 'dnf install -y yum'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
package 'curl'
|
|
23
|
+
when 'freebsd'
|
|
24
|
+
# do nothing
|
|
25
|
+
# TODO: implement Freebsd packages
|
|
26
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
p "You are currently running on OS family: #{os[:family] || 'unknown'}, OS release: #{os[:release] || 'unknown'}"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
if os[:family] == 'ubuntu'
|
|
4
|
+
|
|
5
|
+
describe apt('ppa:nginx/stable') do
|
|
6
|
+
it { should exist }
|
|
7
|
+
it { should be_enabled }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe apt('nginx/stable') do
|
|
11
|
+
it { should exist }
|
|
12
|
+
it { should be_enabled }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe apt('http://ppa.launchpad.net/nginx/stable/ubuntu') do
|
|
16
|
+
it { should exist }
|
|
17
|
+
it { should be_enabled }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe apt('https://deb.nodesource.com/node_4.x/dists/precise/') do
|
|
21
|
+
it { should_not exist }
|
|
22
|
+
it { should_not be_enabled }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
elsif os[:family] == 'debian'
|
|
26
|
+
|
|
27
|
+
describe apt('http://nginx.org/packages/debian') do
|
|
28
|
+
it { should exist }
|
|
29
|
+
it { should be_enabled }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe apt('http://nginx.org/packages/debian') do
|
|
33
|
+
it { should exist }
|
|
34
|
+
it { should be_enabled }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe apt('https://deb.nodesource.com/node_4.x/dists/precise/') do
|
|
38
|
+
it { should_not exist }
|
|
39
|
+
it { should_not be_enabled }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
if os[:family] == 'freebsd'
|
|
4
|
+
filedata = {
|
|
5
|
+
user: 'root',
|
|
6
|
+
group: 'wheel',
|
|
7
|
+
dir_content: "\u0003\u0000",
|
|
8
|
+
dir_md5sum: '598f4fe64aefab8f00bcbea4c9239abf',
|
|
9
|
+
dir_sha256sum: '9b4fb24edd6d1d8830e272398263cdbf026b97392cc35387b991dc0248a628f9',
|
|
10
|
+
}
|
|
11
|
+
else
|
|
12
|
+
filedata = {
|
|
13
|
+
user: 'root',
|
|
14
|
+
group: 'root',
|
|
15
|
+
dir_content: nil,
|
|
16
|
+
dir_md5sum: nil,
|
|
17
|
+
dir_sha256sum: nil,
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if os.unix?
|
|
22
|
+
|
|
23
|
+
# test regular file
|
|
24
|
+
describe file('/tmp/file') do
|
|
25
|
+
it { should exist }
|
|
26
|
+
it { should be_file }
|
|
27
|
+
|
|
28
|
+
it { should_not be_directory }
|
|
29
|
+
it { should_not be_block_device }
|
|
30
|
+
it { should_not be_character_device }
|
|
31
|
+
it { should_not be_pipe }
|
|
32
|
+
it { should_not be_socket }
|
|
33
|
+
it { should_not be_symlink }
|
|
34
|
+
it { should_not be_mounted }
|
|
35
|
+
|
|
36
|
+
# check owner
|
|
37
|
+
it { should be_owned_by filedata[:user] }
|
|
38
|
+
it { should be_grouped_into filedata[:group] }
|
|
39
|
+
|
|
40
|
+
# it { should have_mode }
|
|
41
|
+
its('mode') { should eq 00765 }
|
|
42
|
+
it { should be_mode 00765 }
|
|
43
|
+
|
|
44
|
+
it { should be_readable }
|
|
45
|
+
it { should be_readable.by('owner') }
|
|
46
|
+
it { should be_readable.by('group') }
|
|
47
|
+
it { should be_readable.by('other') }
|
|
48
|
+
it { should be_readable.by_user(filedata[:user]) }
|
|
49
|
+
it { should_not be_readable.by_user('noroot') }
|
|
50
|
+
# for server spec compatibility
|
|
51
|
+
it { should be_readable.by('others') }
|
|
52
|
+
|
|
53
|
+
it { should be_writable }
|
|
54
|
+
it { should be_writable.by('owner') }
|
|
55
|
+
it { should be_writable.by('group') }
|
|
56
|
+
it { should_not be_writable.by('other') }
|
|
57
|
+
it { should be_writable.by_user(filedata[:user]) }
|
|
58
|
+
# it { should_not be_writable.by_user('noroot') }
|
|
59
|
+
# for server spec compatibility
|
|
60
|
+
it { should_not be_writable.by('others') }
|
|
61
|
+
|
|
62
|
+
it { should be_executable }
|
|
63
|
+
it { should be_executable.by('owner') }
|
|
64
|
+
it { should_not be_executable.by('group') }
|
|
65
|
+
it { should be_executable.by('other') }
|
|
66
|
+
it { should be_executable.by_user(filedata[:user]) }
|
|
67
|
+
# it { should_not be_executable.by_user('noroot') }
|
|
68
|
+
# for server spec compatibility
|
|
69
|
+
it { should be_executable.by('others') }
|
|
70
|
+
|
|
71
|
+
# test extended linux attributes
|
|
72
|
+
# it { should be_immutable }
|
|
73
|
+
|
|
74
|
+
its('content') { should eq 'hello world' }
|
|
75
|
+
its('content') { should match('world') }
|
|
76
|
+
its('size') { should eq 11 }
|
|
77
|
+
its('md5sum') { should eq '5eb63bbbe01eeed093cb22bb8f5acdc3' }
|
|
78
|
+
its('sha256sum') { should eq 'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9' }
|
|
79
|
+
its('product_version') { should eq nil }
|
|
80
|
+
its('file_version') { should eq nil }
|
|
81
|
+
|
|
82
|
+
its('owner') { should eq filedata[:user] }
|
|
83
|
+
its('group') { should eq filedata[:group] }
|
|
84
|
+
its('type') { should eq :file }
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe file('/tmp/folder') do
|
|
88
|
+
it { should exist }
|
|
89
|
+
it { should be_directory }
|
|
90
|
+
|
|
91
|
+
it { should_not be_file }
|
|
92
|
+
it { should_not be_block_device }
|
|
93
|
+
it { should_not be_character_device }
|
|
94
|
+
it { should_not be_pipe }
|
|
95
|
+
it { should_not be_socket }
|
|
96
|
+
it { should_not be_symlink }
|
|
97
|
+
|
|
98
|
+
its('content') { should eq filedata[:dir_content] }
|
|
99
|
+
its('md5sum') { should eq filedata[:dir_md5sum] }
|
|
100
|
+
its('sha256sum') { should eq filedata[:dir_sha256sum] }
|
|
101
|
+
its('product_version') { should eq nil }
|
|
102
|
+
its('file_version') { should eq nil }
|
|
103
|
+
|
|
104
|
+
its('owner') { should eq filedata[:user] }
|
|
105
|
+
its('group') { should eq filedata[:group] }
|
|
106
|
+
its('type') { should eq :directory }
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
# test root group on linux
|
|
4
|
+
if os.linux?
|
|
5
|
+
describe group('root') do
|
|
6
|
+
it { should exist }
|
|
7
|
+
its('gid') { should eq 0 }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe group('noroot') do
|
|
11
|
+
it { should_not exist }
|
|
12
|
+
its('gid') { should eq nil }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
if os[:family] == 'freebsd'
|
|
17
|
+
|
|
18
|
+
describe group('wheel') do
|
|
19
|
+
it { should exist }
|
|
20
|
+
its('gid') { should eq 0 }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe group('root') do
|
|
24
|
+
it { should_not exist }
|
|
25
|
+
its('gid') { should eq nil }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe group('noroot') do
|
|
29
|
+
it { should_not exist }
|
|
30
|
+
its('gid') { should eq nil }
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
# Test kernel modules on all linux systems
|
|
4
|
+
if os.linux?
|
|
5
|
+
|
|
6
|
+
describe kernel_module('video') do
|
|
7
|
+
it { should be_loaded }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe kernel_module('bridge') do
|
|
11
|
+
it { should_not be_loaded }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe kernel_module('dhcp') do
|
|
15
|
+
it { should_not be_loaded }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
# prepare values
|
|
4
|
+
if ['ubuntu', 'centos', 'fedora', 'opensuse', 'debian'].include?(os[:family])
|
|
5
|
+
test_values = {
|
|
6
|
+
kernel_panic: 0,
|
|
7
|
+
ip_local_port_range: "32768\t61000",
|
|
8
|
+
forwarding: 0,
|
|
9
|
+
sched_autogroup_enabled: 1,
|
|
10
|
+
nf_log: 'NONE',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
# configue parameter derivations for different OS
|
|
14
|
+
test_values[:sched_autogroup_enabled] = 0 if ['centos', 'debian'].include?(os[:family])
|
|
15
|
+
|
|
16
|
+
if (os[:family] == 'ubuntu' && os[:release].to_f == 10.04) ||
|
|
17
|
+
(os[:family] == 'debian' && os[:release].to_i == 6) ||
|
|
18
|
+
(os[:family] == 'centos' && os[:release].to_i == 5) ||
|
|
19
|
+
(os[:family] == 'opensuse')
|
|
20
|
+
test_values[:sched_autogroup_enabled] = nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test_values[:nf_log] = nil if os[:family] == 'centos' && os[:release].to_i == 5
|
|
24
|
+
test_values[:kernel_panic] = 90 if os[:family] == 'opensuse'
|
|
25
|
+
|
|
26
|
+
else
|
|
27
|
+
test_values = {}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# test on all linux systems
|
|
31
|
+
if os.linux?
|
|
32
|
+
describe kernel_parameter('kernel.panic') do
|
|
33
|
+
its(:value) { should eq test_values[:kernel_panic] }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe kernel_parameter('net.netfilter.nf_log.0') do
|
|
37
|
+
its(:value) { should eq test_values[:nf_log] }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe kernel_parameter('kernel.sched_autogroup_enabled') do
|
|
41
|
+
its(:value) { should eq test_values[:sched_autogroup_enabled] }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe kernel_parameter('net.ipv4.ip_local_port_range') do
|
|
45
|
+
its(:value) { should eq test_values[:ip_local_port_range] }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe kernel_parameter('net.ipv4.conf.all.forwarding') do
|
|
49
|
+
its(:value) { should eq test_values[:forwarding] }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# serverspec compatability
|
|
53
|
+
describe linux_kernel_parameter('net.ipv4.conf.all.forwarding') do
|
|
54
|
+
its(:value) { should eq test_values[:forwarding] }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
# based on operating system we select the available service
|
|
4
|
+
if ['centos', 'fedora', 'freebsd', 'opensuse'].include?(os[:family])
|
|
5
|
+
# CentOS, Fedora
|
|
6
|
+
unavailable_service = 'ssh'
|
|
7
|
+
available_service = 'sshd'
|
|
8
|
+
elsif ['debian'].include?(os[:family])
|
|
9
|
+
# Debian
|
|
10
|
+
unavailable_service = 'clamav'
|
|
11
|
+
available_service = 'ssh'
|
|
12
|
+
else
|
|
13
|
+
# Ubuntu
|
|
14
|
+
unavailable_service = 'sshd'
|
|
15
|
+
available_service = 'ssh'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe service(unavailable_service) do
|
|
19
|
+
it { should_not be_enabled }
|
|
20
|
+
it { should_not be_installed }
|
|
21
|
+
it { should_not be_running }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe service(available_service) do
|
|
25
|
+
it { should be_enabled }
|
|
26
|
+
it { should be_installed }
|
|
27
|
+
it { should be_running }
|
|
28
|
+
end
|