ресурс пользователя
Используйте ресурс аудита user Chef InSpec, чтобы проверить профили пользователей для одного известного/ожидаемого локального пользователя, включая группы, к которым принадлежит этот пользователь, частоту необходимых изменений пароля и пути к домашнему каталогу и оболочке.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен в версии v1.0.0 InSpec.
Синтаксис
Блок ресурса user объявляет имя пользователя и затем один (или несколько) матчеров:
describe user('root') do
it { should exist }
its('uid') { should eq 1234 }
its('gid') { should eq 1234 }
its('group') { should eq 'root' }
its('groups') { should eq ['root', 'other']}
its('home') { should eq '/root' }
its('shell') { should eq '/bin/bash' }
its('mindays') { should eq 0 }
its('maxdays') { should eq 90 }
its('warndays') { should eq 8 }
its('passwordage') { should eq 355 }
its('maxbadpasswords') { should eq nil } // Only valid on Windows OS
its('badpasswordattempts') { should eq 0 }
its('lastlogin') { should eq nil } // Only valid on Windows OS
end
где
-
('root')— пользователь, который будет проверяться -
it { should exist }проверяет, существует ли пользователь -
gid,group,groups,home,maxdays,mindays,shell,uid,warndays´,passwordage,maxbadpasswords,badpasswordattemptsиlastloginявляются допустимыми матчерами для этого ресурса
Свойства
gid
Свойство gid проверяет идентификатор группы:
its('gid') { should eq 1234 }
где 1234 представляет идентификатор пользователя. Опция gid доступна только в Linux и вернет nil для операционной системы Windows.
group
Свойство group проверяет группу, к которой принадлежит пользователь:
its('group') { should eq 'root' }
где root представляет группу. Опция group доступна только в Linux и вернет nil для операционной системы Windows.
groups
Свойство groups проверяет две (или более) группы, к которым принадлежит пользователь:
its('groups') { should eq ['root', 'other'] }
home
Свойство home проверяет путь к домашнему каталогу пользователя:
its('home') { should eq '/root' }
maxdays
Свойство maxdays проверяет максимальное количество дней между изменениями пароля:
its('maxdays') { should eq 99 }
где 99 представляет максимальное количество дней.
mindays
Свойство mindays проверяет минимальное количество дней между изменениями пароля:
its('mindays') { should eq 0 }
где 0 представляет максимальное количество дней.
shell
Свойство shell проверяет путь к стандартной оболочке пользователя:
its('shell') { should eq '/bin/bash' }
uid
Свойство uid проверяет идентификатор пользователя:
its('uid') { should eq 1234 }
где 1234 представляет идентификатор пользователя.
warndays
Свойство warndays проверяет количество дней, в течение которых пользователю выводится предупреждение перед необходимостью изменения пароля:
its('warndays') { should eq 5 }
где 5 представляет количество дней предупреждения.
passwordage
Свойство passwordage проверяет количество дней, прошедших с последнего изменения пароля пользователем:
its('passwordage') { should_be <= 365 }
где 365 представляет количество дней с момента последнего изменения пароля.
maxbadpasswords
Свойство maxbadpasswords проверяет количество максимальных значений настроек badpassword для конкретного пользователя.
its('maxbadpasswords') { should eq 7 }
где 7 — количество максимальных попыток ввода неверного пароля.
badpasswordattempts
Свойство badpasswordattempts проверяет количество неудачных попыток ввода пароля для пользователя.
its('badpasswordattempts') { should eq 0 }
где 0 — количество неудачных паролей для пользователя. В операционных системах на базе Linux это зависит от lastb, а в Windows используется информация, хранящаяся для объекта пользователя. Эти значения будут сброшены до 0 в зависимости от конфигурации вашей операционной системы.
lastlogin
Свойство lastlogin проверяет последнюю дату входа для конкретного пользователя.
its('lastlogin') { should eq nil }
Значение nil означает, что этот пользователь никогда не входил в систему.
Примеры
Следующие примеры показывают, как использовать этот ресурс аудита Chef InSpec.
Проверка доступных пользователей для сервера MySQL
describe user('root') do
it { should exist }
its('uid') { should eq 0 }
its('groups') { should eq ['root'] }
end
describe user('mysql') do
it { should_not exist }
end
Проверка пользователей в нескольких платформах
Пользователь nginx обычно www-data, но в CentOS он nginx. Следующий пример показывает, как проверить пользователя nginx с помощью одного теста, но учитывая все платформы:
web_user = 'www-data'
web_user = 'nginx' if os[:family] == 'centos'
describe user(web_user) do
it { should exist }
end
Матчеры
Полный список доступных матчеров можно найти на нашей странице матчеров.
exist
Матчер exist проверяет, существует ли пользователь с заданным именем:
it { should exist }
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/user/