Я пытаюсь написать модуль PAM, который при входе в систему будет сравнивать предоставленное имя пользователя со списком «виртуальных» имен пользователей. Если предоставленное имя пользователя является «виртуальным пользователем», он завершит аутентификацию, затем изменит имя пользователя на настоящего локального пользователя и продолжит процесс входа в систему.
Пытаясь сделать это, я заметил, что невозможно (по крайней мере, по умолчанию) изменить имя пользователя в OpenSSH - вы застряли с тем, которое вы предоставили при первой попытке аутентификации, и вы не можете использовать имя пользователя PAM -переключение функциональности для его изменения.
Есть ли способ включить это? (Изменение кода OpenSSH также является допустимым вариантом, но, безусловно, не предпочтительным.)
Вы пытаетесь решить проблему скальпелем, но вам нужен большой камень. Рассматривать:
Имена пользователей Unix сопоставляются с числовыми идентификаторами пользователей.
Это отображение "многие ко многим" без ограничений.
Так что ничто не мешает вам создать кучу учетных записей (guest
, external
, random
и сопоставить их все с одним и тем же числовым идентификатором пользователя, домашним каталогом и т. д. - Просто отредактируйте файл паролей и добавьте нескольких пользователей с одним и тем же числовым идентификатором пользователя (и группы).
Вы даже можете сделать это за root
(UID 0), если хотите - на самом деле * системы BSD обычно поставляются с toor
учетная запись с UID 0, пароль которой заблокирован и не может войти в систему.
(Большинство системных администраторов удаляют эту учетную запись из-за допустимого уровня паранойи ...)
Это несколько грубое решение, в котором отсутствует какой-либо уровень стиля или утонченности, но простое часто бывает лучшим.
Предостережения:
whoami
, или когда вы смотрите на них в w
/who
На выходе вы обычно увидите первое имя пользователя, которое появляется в файле паролей для данного числового UID, но вы все равно увидите это с решениями, которые вы описали выше.authorized_keys
file) он будет отображаться в домашнем каталоге пользователя. Если все ваши пользователи используют один домашний каталог, они используют один authorized_keys
файл.Вы не хотите этого делать.
Укусите пулю, создайте пользователей и дайте им доступ к sudo.
Думали ли вы об установке оболочки, которая выполняет su (1) в качестве оболочки пользователя? Убедитесь, что вы "su -" ....
Я не утверждаю, что это полностью безопасное решение, но это также не совсем безопасная проблема.