passwd ресурс
Используйте 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(возвращает массив карт для всех записей)
Свойства
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 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
Матчеры
Полный список доступных матчеров можно найти на нашей странице матчеров.
© 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/