Ресурс пользователя
Используйте ресурс аудита 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являются допустимыми соответствиями для этого ресурса
Примеры
Следующие примеры показывают, как использовать этот ресурс аудита 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 }
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 проверяет количество максимальных неудачных попыток ввода пароля для конкретного пользователя.
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 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/