Как настроить Linux для аутентификации пользователей на основе пользовательской базы данных Keycloak?

Цитата Раймонда @jasonwryan содержит некоторую полезную информацию, но начинается в середине истории:

  • Имейте в виду, что Unix начинался как версия Multics с ограниченным объемом, и что на протяжении всей своей истории функции Unix часто были имитацией или адаптацией функций, которые были замечены и использовались в других системах.
  • В Multics использовался символ опции '-' . У Bitsavers есть руководство для пользовательских команд .
  • В других системах использовались другие символы, некоторые из которых больше утверждали, что они более эффективны при нажатии клавиш (например, '/' используется для TOPS и VMS), а некоторые меньше (например, '(' , используемых в VM / SP CMS).
  • Параметры Multics были многосимвольными, например, ключевые слова, разделенные символом подчеркивания.
  • Параметры Longer Multics часто имели более короткую сокращенную форму, например -print vs -pr (стр. 3-8).
  • Параметры Unix были односимвольными, и через несколько лет был представлен getopt . не был частью оригинальной Unix, есть утилиты, которые не использовали getopt и были оставлены как есть. Но наличие getopt помогло согласовать программы.

С другой стороны. стороны, параметры Unix, использующие getopt , были односимвольными. В других системах, в частности во всех более крупных, использовались ключевые слова. Некоторые (не все) позволяли сокращать эти ключевые слова , т. е. не все персонажи пр При условии, что вариант был однозначным. В этом тесте на двусмысленность есть подводные камни.Например:

  • в начале 1985 года я работал над программой, которую нужно было перенести на PrimOS . Разработчики Prime конкурировали с несколькими другими компаниями, предлагая командный язык, который (пытался) имитировать каждую из этих других, предоставляя наиболее часто используемые команды от каждой. Конечно, они поддерживали сокращения (как и VMS). Прочитав интерактивную справку, я набрал sta , думая получить статус . Это было сокращение для start , и, ничего не давая start , командный интерпретатор отключил меня.
  • X Toolkit (используемый xterm ) позволяет использовать сокращенные параметры. Чтобы эффективно использовать это в xterm, он должен предварительно обработать параметры команды, чтобы предпочесть -v (для версии) перед -vb (визуальный звонок). В X Toolkit нет прямого способа указать предпочтительный вариант в случае неоднозначности.

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

Не все программы использовали getopt : tar и ps не использовали. Также не было rcs (или sccs ), как вы можете видеть, заметив, где тире было необязательным, а значения опций - необязательными.

Принимая все это во внимание, разработчики GNU адаптировали параметры ключевых слов, используемые в других системах, расширив getopt , чтобы предоставить длинную версию каждой короткой опции. Например, textutils 1.0 в журнале изменений указано

Tue May  8 03:41:42 1990  David J. MacKenzie  (djm at abyss)

        * tac.c: Use regular expressions as the record boundaries.
        Give better error messages.
        Reformat code and make it more readable.
        (main): Use getopt_long to parse options.

Изменение в fileutils было раньше:

Tue Oct 31 02:03:32 1989  David J. MacKenzie  (djm at spiff)

        * ls.c (decode_switches): Add long options, using getopt_long
        instead of getopt.

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

/* Getopt for GNU.
   Copyright (C) 1987, 1989 Free Software Foundation, Inc.

, которая (например) совпадает с X Инструментарий (1987). Большинство знакомых вам утилит Unix (например, ls , ps ) используют существующие односимвольные параметры, которые требуют периодического посещения руководства. Представляя getopt_long , разработчики GNU не делали этого, сначала добавляя новые параметры; они начали с того, что составили таблицу существующих вариантов и предоставили соответствующий длинный вариант.

Поскольку они добавляли к существующему репертуару, возникла (снова) проблема конфликта с существующими вариантами. Чтобы избежать этого, они изменили синтаксис, используя два дефиса перед длинными параметрами.

Эти программы продолжают использовать getopt_long таким образом по обычным причинам:

  • сценарии зависят от параметров; разработчики не стремятся ломать сценарии
  • есть письменный стандарт кодирования (который может быть эффективным)
  • , никто не придумал конкурирующий набор инструментов, который явно несовместим (как BSD, так и GNU разработчики копируют имена опций друг у друга)

2
04.03.2019, 22:47
1 ответ

Вам нужно будет реализовать следующее:

  1. добавить данные сопоставления паролей NSS в учетные записи пользователей Keycloak (POSIX -UID, первичный POSIX -GID и т. д.)
  2. внедрить службу, извлекающую данные NSS из Keycloak, и сделать их локально доступными в системе Linux
  3. внедрить модуль PAM, отправляющий запросы аутентификации пароля в Keycloak

Хотя это и не невозможно, это потребует некоторой доработки.

Обычный способ централизованного управления пользователями для Unix/Linux — настроить сервер LDAP для хранения соответствующих данных. А затем настройте Keycloak для использования этого LDAP-сервера для получения пользовательских данных и проверки паролей.

Существуют готовые -для -решения для использования, такие как FreeIPA или мои собственные Æ -DIR .

5
27.01.2020, 22:02

Теги

Похожие вопросы