Spec-Zone.ru › Chef 17

Ресурс пользователей

[править на GitHub]

Используйте ресурс проверки Chef InSpec, чтобы найти всех локальных пользователей, доступных в системе, и затем проверить конкретные свойства этих пользователей. Этот ресурс не возвращает информацию о пользователях, которые могут находиться на других системах, таких как LDAP или Active Directory.

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс впервые стал доступен в версии v1.0.0 InSpec.

Синтаксис

Блок ресурса users объявляет имя пользователя, а затем один (или несколько) матчеров:

describe users.where(uid: 0).entries do
  it { should eq ['root'] }
  its('uids') { should eq [1234] }
  its('gids') { should eq [1234] }
end

где

  • gid, group, groups, home, maxdays, mindays, shell, uid, warndays, passwordage, maxbadpasswords и badpasswordattempts являются допустимыми матчерами для этого ресурса
  • where(uid: 0).entries представляет фильтр, который запускает тест только против соответствующих пользователей

Например:

describe users.where { username =~ /.*/ } do
  it { should exist }
end

или:

describe users.where { uid =~ /^S-1-5-[0-9-]+-501$/ } do
  it { should exist }
end

Свойства

gid

Свойство gid проверяет идентификатор группы:

its('gid') { should eq 1234 } }

где 1234 представляет идентификатор пользователя.

group

Свойство group проверяет группу, к которой принадлежит пользователь:

its('group') { should eq 'root' }

где root представляет группу.

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('shells') { 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 в зависимости от конфигурации вашей операционной системы.

Примеры

Следующие примеры показывают, как использовать этот ресурс проверки Chef InSpec.

Используйте регулярное выражение для поиска пользователей:

describe users.where { uid =~ /S\-1\-5\-21\-\d+\-\d+\-\d+\-500/ } do
  it { should exist }
end

Проверка, что существуют только разрешенные пользователи:

allowed_users = %w(user1 user2 user3)

users.where { uid > 1000 && uid < 65534 }.usernames.sort.each do |u|
  describe user(u) do
    if allowed_users.include?(u)
      it { should exist }
    else
      it { should_not exist }
    end
  end
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/users/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API