Назад | Перейти на главную страницу

Смена пользователя в openssh с использованием PAM

Я пытаюсь написать модуль PAM, который при входе в систему будет сравнивать предоставленное имя пользователя со списком «виртуальных» имен пользователей. Если предоставленное имя пользователя является «виртуальным пользователем», он завершит аутентификацию, затем изменит имя пользователя на настоящего локального пользователя и продолжит процесс входа в систему.

Пытаясь сделать это, я заметил, что невозможно (по крайней мере, по умолчанию) изменить имя пользователя в OpenSSH - вы застряли с тем, которое вы предоставили при первой попытке аутентификации, и вы не можете использовать имя пользователя PAM -переключение функциональности для его изменения.

Есть ли способ включить это? (Изменение кода OpenSSH также является допустимым вариантом, но, безусловно, не предпочтительным.)

Вы пытаетесь решить проблему скальпелем, но вам нужен большой камень. Рассматривать:

Имена пользователей Unix сопоставляются с числовыми идентификаторами пользователей.
Это отображение "многие ко многим" без ограничений.
Так что ничто не мешает вам создать кучу учетных записей (guest, external, random и сопоставить их все с одним и тем же числовым идентификатором пользователя, домашним каталогом и т. д. - Просто отредактируйте файл паролей и добавьте нескольких пользователей с одним и тем же числовым идентификатором пользователя (и группы).

Вы даже можете сделать это за root (UID 0), если хотите - на самом деле * системы BSD обычно поставляются с toor учетная запись с UID 0, пароль которой заблокирован и не может войти в систему.
(Большинство системных администраторов удаляют эту учетную запись из-за допустимого уровня паранойи ...)

Это несколько грубое решение, в котором отсутствует какой-либо уровень стиля или утонченности, но простое часто бывает лучшим.

Предостережения:

  1. Когда эти пользователи запускают whoami, или когда вы смотрите на них в w/who На выходе вы обычно увидите первое имя пользователя, которое появляется в файле паролей для данного числового UID, но вы все равно увидите это с решениями, которые вы описали выше.
  2. Если вы используете ключи SSH (authorized_keys file) он будет отображаться в домашнем каталоге пользователя. Если все ваши пользователи используют один домашний каталог, они используют один authorized_keys файл.
    Вы жестяная банка назначьте пользователям независимые домашние каталоги, если это вызывает беспокойство.
  3. В ваших записях входа в систему может отображаться аутентификация для указанного имени пользователя (вместо сопоставления с первым пользователем, как указано в пункте (1) выше), но это, вероятно, хорошая вещь, поскольку вы можете видеть, кто входит в какие учетные записи откуда, на хотя бы по IP-адресу.
  4. У ваших пользователей будут независимые пароли unix. Вероятно, это то, что вы хотите, но если это не так, вы можете написать несколько скриптов для их синхронизации без особых проблем и страданий.

Вы не хотите этого делать.

Укусите пулю, создайте пользователей и дайте им доступ к sudo.

Думали ли вы об установке оболочки, которая выполняет su (1) в качестве оболочки пользователя? Убедитесь, что вы "su -" ....

Я не утверждаю, что это полностью безопасное решение, но это также не совсем безопасная проблема.