Spec-Zone.ru › Chef 16

passwd ресурс

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

Используйте passwd ресурс проверки Chef InSpec, чтобы проверить содержимое /etc/passwd, которое содержит следующую информацию для пользователей, которые могут войти в систему и/или как пользователей, владеющих запущенными процессами. Формат для /etc/passwd включает:

  • Имя пользователя
  • Пароль для этого пользователя (в более новых системах пароли должны храниться в /etc/shadow )
  • Идентификатор пользователя (UID), назначенный этому пользователю
  • Идентификатор группы (GID), назначенный этому пользователю
  • Дополнительная информация об этом пользователе
  • Домашний каталог этого пользователя
  • Предпочитаемая командная оболочка этого пользователя

Эти записи определяются как строки, разделенные двоеточием, в файле, по одной строке на пользователя:

root:x:1234:5678:additional_info:/home/dir/:/bin/bash

Доступность

Установка

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

Версия

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

Синтаксис

Блок ресурса passwd объявляет одного (или нескольких) пользователей и связанную информацию о пользователе, которые необходимо проверить:

describe passwd do
  its('users') { should_not include 'forbidden_user' }
end

describe passwd.uids(filter) do
  its('users') { should cmp 'root' }
  its('count') { should eq 1 }
end

где

  • homes, gids, passwords, shells, uids, и users являются допустимыми акцессорами для passwd
  • filter один (или несколько) аргументов, например: passwd.users(/name/) для определения фильтрации
  • filter может принимать следующие аргументы: count (получает количество записей), lines (предоставляет исходные строки passwd ), и params (возвращает массив карт для всех записей)

Примеры

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

Проверка имен пользователей и UID

describe passwd do
  its('users') { should eq ['root', 'www-data'] }
  its('uids') { should eq [0, 33] }
end

Выбор одного пользователя и проверка на наличие нескольких вхождений

describe passwd.uids(0) do
  its('users') { should cmp 'root' }
  its('count') { should eq 1 }
end

describe passwd.where { user == 'www-data' } do
  its('uids') { should cmp 33 }
  its('count') { should eq 1 }
end

Сопоставители

Полный список доступных сопоставителей см. на нашей странице сопоставителей.

gids

Сопоставитель gids проверяет, соответствуют ли идентификаторы групп в тесте идентификаторам групп в /etc/passwd:

its('gids') { should include 1234 }
its('gids') { should cmp 0 }

homes

Сопоставитель homes проверяет абсолютный путь к домашнему каталогу пользователя:

its('home') { should eq '/' }

length

Сопоставитель length проверяет длину пароля, который появляется в /etc/passwd:

its('length') { should be <= 32 }

Этот сопоставитель лучше всего использовать вместе с фильтрами. Например:

describe passwd.users('highlander') do
   its('length') { should_not be < 16 }
end

passwords

Сопоставитель passwords проверяет, являются ли пароли

  • Зашифрованными
  • С отключенными прямыми входами, как указано звездочкой (*)
  • В файле /etc/shadow, как указано буквой x (x)

Например:

its('passwords') { should eq ['x'] }
its('passwords') { should cmp '*' }

shells

Сопоставитель shells проверяет абсолютный путь к оболочке (или команде), к которой имеет доступ пользователь:

its('shells') { should_not include 'user' }

или для поиска всех пользователей с оболочкой nologin:

describe passwd.shells(/nologin/) do
  its('users') { should_not include 'my_login_user' }
end

uids

Сопоставитель uids проверяет, соответствуют ли идентификаторы пользователей в тесте идентификаторам пользователей в /etc/passwd:

its('uids') { should eq ['1234', '1235'] }

или:

describe passwd.uids(0) do
  its('users') { should cmp 'root' }
  its('count') { should eq 1 }
end

users

Сопоставитель users проверяет, соответствуют ли имена пользователей в тесте именам пользователей в /etc/passwd:

its('users') { should eq ['root', 'www-data'] }

© 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/passwd/

Spec-Zone.ru

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