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

Я пытаюсь разрешить пользователям ssh быть определенными в Radius, но совместно использовать домашний каталог, оболочку и т. д. Идея состоит в том, что все пользователи используют один и тот же домашний каталог и оболочку по умолчанию (приложение). Я бы хотел избежать создания множества учетных записей на локальном компьютере (на самом деле это контейнер докеров), поскольку их активность ограничена приложением. Я думаю, что мне просто нужно заменить информацию о пользовательской базе данных, но я не понимаю, как просто переопределить эту часть активности входа в систему. Кто-нибудь еще делал это, или я должен решить это по-другому?

Сомнительно, подходит ли этот вопрос лучше для Server Fault, как я полагаю. Возможно, вы захотите взглянуть на stackoverflow.com/help/asking, потому что в идеале вы должны предоставить минимальный пример кода того, что вы пробовали до сих пор.

ChristianM 09.03.2018 19:10

В коде pam_radius FreeRadius в строке 1150 файла pam_radius_auth.c функция pam_sm_authenticate вызывает pam_get_user (...). Думаю, именно здесь в игру вступает пользовательская база данных. (Я новичок в этом коде.) Функция pam_get_user не реализована в коде pam_radius, но реализована в коде linux_pam. В строке 273 файла linux_pam pam_item.c определен pam_get_user, и он возвращает пользователя из pam_handle_t, переданного в * user = pamh-> user;

David Perkinson 09.03.2018 21:15

В модуле pam_ldap нет pam_get_user, но я ожидал, что он будет. Поэтому я не понимаю, как эти части сочетаются друг с другом. Каким-то образом pam_ldap заполняет структуру pam_handle_t или через какой-то путь получает туда информацию.

David Perkinson 09.03.2018 21:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
276
1

Ответы 1

Хорошо, я отвечу на свой вопрос. Если у вас есть лучшая информация, пожалуйста, внесите свой вклад. Этот вопрос мог бы быть лучше в ServerFault, но как программист я трачу больше времени на StackOverflow, поэтому я не думал об этом. Библиотека PAM полезна для единого входа, но не может заменить файл / etc / passwd и связанные файлы. PAM и другие ресурсы, которые он приносит, дополняют внутреннюю информацию Linux. Итак, хотя вы можете аутентифицироваться на удаленном сервере, таком как Radius, у вас все равно будут записи в / etc / passwd. Поток управления - это список правил в pam.conf, а библиотека верхнего уровня движется вниз по списку, позволяя каждому модулю (плагину) выполнять свою работу. Прочтите "man pam.conf" и "man pam_mkhomedir" для получения хорошей информации о том, как это работает. Модуль реализует 6 функций, поэтому очень легко добавлять новые модули. См. Pam_deny.c для самого простого модуля. Кроме того, getpwnam - это функция, которая может вам понадобиться во всем, что вы пытаетесь сделать. Вы можете прочитать об этом, используя "man getpwnam", но вы, вероятно, уже это знали.

Другие вопросы по теме