Как определить значение атрибута пароля для ресурса "пользователь" Chef?

Я пытаюсь создать учетную запись пользователя, используя Chef 11, и не знаю, как вычислить значение атрибута пароля. Я прочитал документацию по ресурсам http://docs.opscode.com/resource_user.html, в частности раздел "Тень пароля", и я все еще не уверен, что именно делать.

Этот пользователь создается в системе Ubuntu, поэтому я использую пример openssl, который они предоставили, и передает результат этой команды в качестве значения атрибута пароля?

openssl passwd -1 "theplaintextpassword"

Однако каждый раз, когда я запускаю команду, вывод отличается. Он также поддерживает различные варианты (-crypt, -1, -apr1), и какой из них я использую?

Я смотрю на команду unix passwd, которая говорит, что шифрует значение, но не указывает, какой метод он использует. Помощь для тени и склепа тоже не проливает свет.

В этом примере пакеты данных переполнены, у меня есть значение, которое я хочу использовать для этой учетной записи, и просто хочу указать его с помощью атрибута пароля.

Здесь раздел пользовательских ресурсов:

user 'mytestuser' do
  comment "Test User"
  home "/home/mytestuser"
  shell "/bin/bash"
  supports :manage_home => true

  password "what goes here?"

  action :create
end

Update:

Я определил, что строка, которую вы указываете для атрибута пароля, записывается непосредственно в запись пользователя /etc/shadow. Я полагаю, что оставшаяся проблема - это определение того, что ожидает этот файл, и как он связан с настройкой пароля пользователя.

Ответ 1

Ключ увидел, что значение атрибута пароля записывается непосредственно в файл /etc/shadow. Это был вопрос чтения страниц-страниц для тени и склепа и, наконец, понимания (надеюсь), как все сочетается. См. "Сведения о горах" ниже, если вас интересует какой-то фон.

Если вы в порядке с хешем MD5 пароля, используйте команду openssl для генерации зашифрованной строки. Используемая версия не поддерживает алгоритмы SHA. Используйте openssl passwd --help, чтобы узнать, какие опции доступны для вас.

openssl passwd -1 -salt "yoursaltphrase"
Password: <enter the password>
$1$yoursalt$fIque2U6AZ.YRAqOu5Eyo/

Теперь используйте эту строку в атрибуте пароля рецепта:

user 'mytestuser' do
  comment "Test User"
  home "/home/mytestuser"
  shell "/bin/bash"
  supports :manage_home => true

  password '$1$yoursalt$fIque2U6AZ.YRAqOu5Eyo/'

  action :create
end

Что касается меня, я закончил создание тестового пользователя вручную, а затем скопировал его строку шифрования из /etc/shadow в качестве значения атрибута пароля для рецепта.

Из/etc/shadow второе поле после mytestuser: это зашифрованный пароль.

   mytestuser:THIS_IS_THE_FIELD_YOU_WANT:16063:0:99999:7:::

См. тень человека и склеп человека.

Детали Gory

Собирая вещи вместе с man-страницами и различными форумами пользователей, вот что я узнал. Обратите внимание, что термин, зашифрованный здесь, на самом деле означает хеширование, поскольку я не считаю, что пароли могут быть дешифрованы.

Команда passwd шифрует пользовательский текстовый пароль и записывает его в /etc/shadow.

Записи

/etc/shadow содержат имя пользователя и зашифрованный пароль в одном из различных форматов. Страница руководства для "crypt" описывает эти форматы, см. Раздел "ПРИМЕЧАНИЯ".

Зашифрованное значение имеет формат:

$id$salt$encrypted

Подумайте об этом как о двух частях: соли и фактическом зашифрованном пароле.

Соляная часть состоит из двух частей:

  • Дополнительный префикс id, который идентифицирует используемый алгоритм шифрования и имеет "$" в качестве префикса и суффикса, например. "$ ID $".
  • Значение соли, которое может содержать до 16 символов и заканчивается символом "$", например. "Saltvalue $". Это значение используется для вычисления зашифрованного пароля. Это случайная строка и отличается при каждом создании пароля.

Идентификатор может быть одним из следующих, указывая используемый алгоритм шифрования:

blank = DES  (the default when no $id$ prefix is found)
1     = MD5
2a    = Blowfish
5     = SHA-256
6     = SHA-512

Длина зашифрованного пароля фиксируется на основе алгоритма шифрования:

DES      =  8 characters
MD5      = 22 characters
SHA-256  = 43 characters
SHA-512  = 86 characters
Blowfish = ???

Вы можете использовать команду openssl passwd для генерации различных хэшей паролей. Он поддерживает параметры:

-crypt             DES-based standard Unix password algorithm (default)
-1                 MD5-based password algorithm
-apr1              MD5-based password algorithm, Apache variant
-salt string       use provided salt